阿里中间件如雷贯耳,听上去高深莫测,那到底是哪几样神兵利器呢?中间件是阿里中台的前身。阿里中台就像腾讯的游戏工厂、字节的app工厂一样,有了它,各种电商应用如雨后春笋一样冒了出来。
中台建设需要一个中心化控制单元,就是我们的运营平台。它主要由协议标准、能力地图、业务需求结构分解、全局业务身份、业务全景图、业务度量等构成。能让我们有一个地方纵观全局,把控细节。
其中能力地图是一个最基础的设施,要能把电商生态里面的能力都呈现出来,并在过程中不断的优化完善。就象我们现在出行离不开XX地图一样,今后所有的业务方需要做业务规划,业务创新,都可以到这儿来寻找需要的基础能力。
在阿里集团内部,所有业务中台、前台,共享一个技术平台底座,将阿里多年技术沉淀的价值最大化,提供运行更稳定、架构更灵活的技术支撑。阿里巴巴集团在近期的组织结构调整中,组成由“小前台,大中台”互为协同的创新管理模式。原阿里巴巴中国零售事业群总裁张建锋将担负起“中台”的重要工作,负责共享、数据、搜索,以及闲鱼、淘宝头条等创新孵化业务。
阿里巴巴电商系统的发展历程中也遇到过。由于业务体量巨大、需求变更频繁,导致淘宝和淘宝商城(天猫的前身)的研发效率变得低下,在这个背景下,2008年10月立项了著名的“五彩石”项目,对电商系统做了系统的拆分,完成了服务化改造。五彩石项目把淘宝和淘宝商城技术架构合并,合并成新的架构,这个项目对整个阿里的意义绝对重大。这个项目做完以后,架构差不多完成了。“五彩石”用于将交易系统从单机变成分布式。
通过这个项目,孕育出了以HSF、Notify 为代表的分布式中间件组件。并且,在随后的十年中,分布式中间件蓬勃发展,从软负载中心Config Server、 配置中心Diamond Server, 到全链路追踪EagleEye、限流Sentincel,再到全链路压测体系,可以说,基于分布式中间件构建的整个服务化体系是支撑“双11”GMV从2009年的5000万元到今天惊人的2135亿元的技术基石。正是服务化改造的成功实施和不断演进,为每年万亿流量的洪峰及层出不穷的大促玩法保驾护航了有10个年头。这就需要引入解决分布式问题的中间件技术。
当时并没有商业软件可以使用,也没有合适的开源产品可以选。五彩石项目第一次大规模使用了中间件。系统分布式后,需要有一套统一的组件来解决分布式引发的共性技术问题。比如提供服务的发现机制、提供服务的分组路由机制、同机房优先机制等。我们将其沉淀在一个框架里,这个框架被称为HSF。
为了解决单库性能瓶颈问题,使用分库分表的技术,这个技术被沉淀在TDDL框架上面。
为了解决分布式事务的性能问题,把原本一个事务的工作拆成了异步执行,同时必须要保证最终数据的一致性,我们采用了消息发布订阅的方式来解决,这个消息框架就是Notify。
有了HSF、TDDL、Notify这『三大件』,有效地解决了应用分布式后引发的技术扩展性问题,同时让整个系统的技术架构变得依旧如当初一样的简。
为了解决业务扩展性问题,通过抽取共享服务层,在非常低的试错成本下涌现出来大量新的业务市场,推动了阿里电商业务的快速发展,同时共享服务本身也随着业务发展起到了越重要的作用。比如库存中心服务的抽取,使得和商家对接的供应链领域得到了快速发展。
为了解决技术扩展性问题,引入了分布中间件技术。扩展服务器的存储和计算能力变得只需要增加服务器就可以轻松解决,研发过程不需要关注分布式带来的的理解上的困难。分布式中间件的本质是让多台廉价的PC服务器可以组成一台超级计算机。
通过五彩石项目,阿里技术完成了一次伟大的技术变革,为后续的持续架构演进打下了坚实基础。沉淀了一套『共享服务化』的架构理念,以及一套与该架构理念相对应的分布式中间件技术。
这个架构理念和这套分布式中间件技术在后续阿里的业务和技术发展上被大范围使用,同时也被业界很多互联网公司所借鉴。
HSF(High-Speed Service Framework),新人可以直接理解成这是阿里的RPC。作为一个纯客户端架构的RPC框架,没有服务端集群,所有HSF服务调用均是通过服务消费方(Consumer)与服务提供方(Provider)点对点进行。为了实现整套分布式服务体系,HSF还需要依赖以下外部系统。
EDAS 除了以互联网中间件 PaaS 平台为基础,采用高性能 RPC 框架 HSF 和 Dubbo 作为服务化框架之外,还提供分布式配置管理、分布式任务调度、分布式事务等核心功能。
说明 Dubbo 3.0实现了和HSF框架的技术统一。在EDAS中,可以便捷的将HSF应用升级为Dubbo 3.0应用。升级之后,HSF应用可沿用原有开发方式,还可以使用EDAS为Dubbo应用提供的更加完善的服务治理功能。
关键字:阿里巴巴大规模应用;分库分表技术开创者
去掉传统商业数据库后,是否有更适合的产品和解决方案来替代呢?对于数据库来说,答案是明确的:开源+分布式,开源解决成本问题,分布式解决性能和容量问题。
同年11月11日,TDDL(Taobao Distributed Data Layer)首次发布,开创了分布式数据库中间件+开源数据库应用在高并发交易系统的先河。
当时的TDDL虽然是一个客户端jar,但创造性地提出了三层(Matrix、Group、Atom)拆分拓扑结构,满足应用按需制定拆分策略的同时,解决了弹性扩容、本地高可用等企业应用难题。
2011~2015,TDDL成为阿里巴巴数据库系统的统一接入标准,开始面向阿里巴巴所有业务提供分布式数据库服务。目前集团内运行实例约30万套,业务覆盖支付、资金、即时通信、媒体等十余大类。
丰富的业务模型造就了TDDL优秀的MySQL语法兼容性,庞大的业务规模使TDDL打磨出优异的内核稳定性,历年双十一的加持孵化了TDDL业界顶尖的高性能高吞吐。
与此同时,阿里巴巴分布式数据库的商业化进程悄然启动。
关键字:云端商业化;高性能SQL引擎
DRDS(Distributed Relational Database Service)于2016年初迎来了第一个公有云付费客户。自此,DRDS一直在不断努力提升单位资源的处理能力,以求最大限度帮助客户降本增效。
DRDS研发团队于2017年发布的新一代高性能分布式SQL引擎,通过PlanCache、FastSQL、定制化的底层驱动使Batch写、含拆分键Select、读写分离等操作具有300%的性能提升;跨库聚合、分布式Join、分布式事务等操作具有200%性能提升。
DRDS提供更低使用成本,包括对不同维度的表的Join操作的支持、内存中二次排序的支持和对内存结果做函数计算的支持等。
DRDS还针对分布式数据库使用场景提供一系列的企业级特性,包括全局Sequence服务、读写分离、数据库账号体系和DRDS后台运维指令集。
凭借优异性能和相对优良的体验,DRDS迅速在公有云积累了一批忠实用户。
DRDS的商业化成功,标志着阿里巴巴分布式数据库技术完成了从内部孵化到市场化运营的阶段性转变,以及从分布式数据库中间件到分布式数据库系统实质性跨越。
关键字:架构与品牌升级;国计民生项目
2018~2019年,DRDS凭借优异稳定性、超高性能以及丰富的企业特性,承接众多政企行业的国计民生项目,积极投入我国信息系统基础设施数字化转型建设,品牌声誉得到大幅提升,逐步成长为代表阿里巴巴的名片级产品。
与此同时,DRDS进行品牌升级,命名为PolarDB-X,“PolarDB"是阿里云自研关系型数据库产品家族名称,“X"取音"Extreme”,取意"极致”。
PolarDB-X 1.0支持以PolarDB MySQL作为存储节点,大幅提高集群IO能力以及柔性分布式事务,且面向政企客户需求增强了安全特性,例如,一致性备份恢复、SQL闪回、SQL审计等。
关键字:透明分布式、开源
PolarDB-X 2.0是阿里巴巴分布式数据库有史以来最大幅度的版本更新。产品基于透明分布式理念提供了默认主键拆分策略、基于TSO和MVCC的高性能强一致分布式事务、基于一致性Hash分区策略的分布式线性扩展能力、全局一致性Binlog和全局一致性备份能力。数据节点(DN)采用阿里巴巴自研的基于X-Paxos的三副本强一致MySQL分支,确保在容灾过程中RPO=0。
在五彩石项目中产生了阿里巴巴第一代消息引擎——Notify。在2010年的时候,阿里巴巴B2B部门基于ActiveMQ的5.1版本也开发了自己的一款消息引擎,称为Napoli,这款消息引擎在B2B里面广泛地被使用,不仅仅是在交易领域,在很多的后台异步解耦等方面也得到了广泛的应用。在2011年的时候,业界出现了现在被很多大数据领域所推崇的Kafka消息引擎,阿里在研究了Kafka的整体机制和架构设计之后,基于Kafka的设计使用Java进行了完全重写并推出了MetaQ 1.0版本,主要是用于解决顺序消息和海量堆积的问题。而在2012年,阿里对于MetaQ进行了架构重组升级,开发出了MetaQ 2.0,这时就发现MetaQ原本基于Kafka的架构在阿里巴巴如此庞大的体系下很难进行水平扩展,所以在2012年的时候就开发了RocketMQ 3.0版本。很多人会问到RocketMQ 3.0和MetaQ 3.0的区别,其实这两者是等价的版本,只不过阿里内部使用的称为MetaQ 3.0,外部开源称之为RocketMQ 3.0。在2015年,又基于RocketMQ开发了阿里云上的Aliware MQ和Notify 3.0。在2016年的时候,阿里巴巴将RocketMQ的内核引擎捐赠给了Apache基金会。
服务框架-HSF:
HSF旨在为阿里巴巴的应用提供一个分布式的服务框架,HSF从分布式应用层面以及统一的发布/调用方式层面为大家提供支持,从而可以很容易的开发分布式的应用以及提供或使用公用功能模块,而不用考虑分布式领域中的各种细节技术,例如远程通讯、性能损耗、调用的透明化、同步/异步调用方式的实现等等问题。
消息中间件-Notify:
notify是一款高性能,高可靠,可无限水平扩展,支持分布式事务,支持复杂消息过滤的与互联网时代紧密结合的消息中间件,是目前公司内部使用最广泛的一个消息中间件产品之一,承担着公司内部90%以上消息服务。他使用推消息的模型,集群可水平扩展,但不保证顺序,也不保证重复的消息中间件产品。
消息中间件-MetaQ:
MetaQ是一款分布式、队列模型的消息中间件。分为Topic与Queue两种模式,Push和Pull两种方式消费,支持严格的消息顺序,亿级别的堆积能力,支持消息回溯和多个维度的消息查询。
开源介绍:github.com/alibaba/roc…
软负载配置中心-Diamond:
Diamond是一个持久配置管理中间件.可以实现分布式场景下,中心化的持久配置管理,同时也支持基于发布订阅模型配置动态变更推送.
开源介绍:code.taobao.org/p/diamond/w…
鹰眼 - EagleEye:
EagleEye (鹰眼)通过收集和分析在不同的网络调用中间件上的日志埋点,可以得到同一次请求上的各个系统的调用链关系,有助于梳理应用的请求入口与服务的调用来源、依赖关系,同时,也对分析系统调用瓶颈、估算链路容量、快速定位异常有很大帮助。另外,业务方也可以在调用链上添加自己的业务埋点,使网络调用和实际业务内容得到关联。联系人:姬风(email:jifeng@taobao.com)
实时计算:JStorm
项目简介:JStorm是Storm的Java版本,使用Java重写的同时在其基础上进行了大幅度的改进与优化.与Hadoop对大数据进行离线全量处理相对应,JStorm主要做的是对大数据的实时增量计算与流式计算.联系人:纪君祥(email:zhongyan.feng@alibaba-inc.com)
天枢 VipServer
通过集中式的配置向客户提供路由信息,以非网关的形式实现负载均衡功能;支持多种映射策略(轮询、轮询+同机房、轮询+同网段);通过健康探测机制,自动剔除不健康的机器,实现集群之间调用的透明化;对调用量、调用方等数据也有一定程度的反馈.联系人:玄胤(email:xuanyin.zy@alibaba-inc.com)
注册中心 ConfigServer
ConfigServer主要提供非持久配置的发布和订阅。07/08年间在淘宝内部开发使用的时候,由于ZooKeeper还没有开源,不然可能会基于ZooKeeper来进行改造。主要使用场景是为分布式服务框架提供软负载功能所必须的服务地址列表。联系人:慕义(email:en.xuze@alipay.com)
服务框架- Pandora:
Pandora,中文名潘多拉,是淘宝网中间件团队打造的,基于HSF隔离技术构建的全新一代隔离容器。从解决二方包依赖冲突出发,致力于统一管理通用的二方包,包括方便的二方包升级管理,监控和管理,建立统一的二方包扩展编程方式等。联系人:豫楚(email:peng.weip@alibaba-inc.com)
性能和稳定性平台-Hotspot:
项目简介:性能分析平台通过对基础软件、服务端、前端加载、网络、CDN等方面的性能分析,来帮助阿里系统提升吞吐量、降低延迟时间、节约成本。
联系人:叔同(email: shutong.dy@taobao.com,新浪微博:淘宝叔同)
项目名称:TProfiler:
项目简介:TProfiler是可以在生产环境长期使用的性能分析工具,通过在Java层面记录代码执行热点、对象创建热点等数据,帮助系统定位性能瓶颈。
开源地址:github.com/alibaba/TPr…
联系人新浪微博:叔同(email: shutong.dy@taobao.com,新浪微博: 淘宝叔同)