阿里中间件的源与流

news2025/2/5 0:43:46

目录

    • 前言
    • 从中间件->中台->阿里云
    • 从五彩石项目说起
    • 从HSF到EDAS
    • 从TDDL到PolarDB-X
      • TDDL阶段
      • DRDS阶段
      • PolarDB-X 1.0阶段
      • PolarDB-X 2.0阶段
    • 从Notify到RocketMQ
    • 阿里中间件一览
    • 参考链接

前言

阿里中间件如雷贯耳,听上去高深莫测,那到底是哪几样神兵利器呢?中间件是阿里中台的前身。阿里中台就像腾讯的游戏工厂、字节的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到EDAS

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应用提供的更加完善的服务治理功能。

从TDDL到PolarDB-X

在这里插入图片描述

TDDL阶段

关键字:阿里巴巴大规模应用;分库分表技术开创者
去掉传统商业数据库后,是否有更适合的产品和解决方案来替代呢?对于数据库来说,答案是明确的:开源+分布式,开源解决成本问题,分布式解决性能和容量问题。

同年11月11日,TDDL(Taobao Distributed Data Layer)首次发布,开创了分布式数据库中间件+开源数据库应用在高并发交易系统的先河。

当时的TDDL虽然是一个客户端jar,但创造性地提出了三层(Matrix、Group、Atom)拆分拓扑结构,满足应用按需制定拆分策略的同时,解决了弹性扩容、本地高可用等企业应用难题。

2011~2015,TDDL成为阿里巴巴数据库系统的统一接入标准,开始面向阿里巴巴所有业务提供分布式数据库服务。目前集团内运行实例约30万套,业务覆盖支付、资金、即时通信、媒体等十余大类。

丰富的业务模型造就了TDDL优秀的MySQL语法兼容性,庞大的业务规模使TDDL打磨出优异的内核稳定性,历年双十一的加持孵化了TDDL业界顶尖的高性能高吞吐。

与此同时,阿里巴巴分布式数据库的商业化进程悄然启动。

DRDS阶段

关键字:云端商业化;高性能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的商业化成功,标志着阿里巴巴分布式数据库技术完成了从内部孵化到市场化运营的阶段性转变,以及从分布式数据库中间件到分布式数据库系统实质性跨越。

PolarDB-X 1.0阶段

关键字:架构与品牌升级;国计民生项目
2018~2019年,DRDS凭借优异稳定性、超高性能以及丰富的企业特性,承接众多政企行业的国计民生项目,积极投入我国信息系统基础设施数字化转型建设,品牌声誉得到大幅提升,逐步成长为代表阿里巴巴的名片级产品。

与此同时,DRDS进行品牌升级,命名为PolarDB-X,“PolarDB"是阿里云自研关系型数据库产品家族名称,“X"取音"Extreme”,取意"极致”。

PolarDB-X 1.0支持以PolarDB MySQL作为存储节点,大幅提高集群IO能力以及柔性分布式事务,且面向政企客户需求增强了安全特性,例如,一致性备份恢复、SQL闪回、SQL审计等。

PolarDB-X 2.0阶段

关键字:透明分布式、开源
PolarDB-X 2.0是阿里巴巴分布式数据库有史以来最大幅度的版本更新。产品基于透明分布式理念提供了默认主键拆分策略、基于TSO和MVCC的高性能强一致分布式事务、基于一致性Hash分区策略的分布式线性扩展能力、全局一致性Binlog和全局一致性备份能力。数据节点(DN)采用阿里巴巴自研的基于X-Paxos的三副本强一致MySQL分支,确保在容灾过程中RPO=0。

从Notify到RocketMQ

在五彩石项目中产生了阿里巴巴第一代消息引擎——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,新浪微博: 淘宝叔同)

参考链接

  • 阿里-中间件团队博客
  • 高可用可伸缩微服务架构
  • https://github.com/stevenli91748/MicroService.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103314.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】1.MySQL基础

文章目录1.0 数据库基本概念1.1 主流数据库介绍2.0 MySQL数据库架构2.1 MySQL软件分层2.1 MySQL存储引擎2.2 SQL语句分类1.0 数据库基本概念 想要理解数据库的概念,首先要了解数据库为何存在,它存在的价值是什么? 在之前的学习中&#xff0c…

用Python绑定调用C/C++/Rust库

用Python绑定调用C/C/Rust库 在《让你的Python程序像C语言一样快》我们学习了如何利用Python API来用C语言编写Python模块,通过将核心功能或性能敏感运算用C语言实现,Python程序可以运行地像C语言一样快。然而,很多时候我们需要的功能已经有…

Mycat(11):分片详解之字符串ID处理

1 找到conf/schema.xml并备份 2 字符串ID处理的分区算法 conf/rule.xml <tableRule name"jch"><rule><columns>id</columns><algorithm>jump-consistent-hash</algorithm></rule></tableRule><function name&qu…

css之grid布局个人学习笔记

前置 只是个人学习,内容只会记录自己想知道,有问题的知识点具体可以看看bilibili的耕耕技术宅-grid布局地址视频对应的耕耕技术宅-grid布局ppt地址学有余力的可以通关下这个小游戏通过给萝卜浇水&#xff0c;学习 CSS 网格布局CSS Grid 网格布局教程- 阮一峰 明确基本概念 下…

品牌创建百科怎么写?品牌百度百科怎么创建?

每年都会有很多新成立的品牌&#xff0c;但是能够被大众所熟知的却是寥寥无几&#xff0c;众多品牌都被淹没在了大千世界里。 一个品牌的创建&#xff0c;难的就在于宣传&#xff0c;宣传力度不到位&#xff0c;就没有用户会愿意为这个品牌买单。 那么怎么快速提升品牌的知名度…

肝完这在“牛客网”难倒万人的Java面试题后,已收获9个大厂offer

上周在牛客网看到了这几百道面试题之后&#xff0c;看到评论区全是太难了&#xff01;太难了&#xff0c;就深深被其吸引&#xff0c;索性直接花了一周的时间才把它们全部解析出来做成了这份文档&#xff0c;发给了最近面试的粉丝&#xff0c;他刷爆之后居然能拿到了好几个大厂…

IDEA集成docker-JDK11版本

IDEA集成docker 1. docker 服务器开启远程访问 登录 docker 所在的远程服务器&#xff0c;使用命令 vim /usr/lib/systemd/system/docker.service 修改配置文件&#xff0c;需注意&#xff0c;修改时确认自己的账户拥有相应权限 主要操作是找到 ExecStart/usr/bin/dockerd -H…

能量原理和变分法笔记1:变分法简介

上个学期在学校学了多体系统动力学的课&#xff0c;其中老师讲了变分原理&#xff0c;觉得很有启发&#xff0c;决定再学学相关的知识&#xff0c;在B站找到了一个这样的视频能量原理与变分法&#xff0c;做点笔记&#xff0c;加深一下理解。 第0章序言-微元、功和能(P2)第1章1…

常用的wxpython控件使用方法总结

写在开头&#xff1a;总结下现阶段我常用到wxpython控件的一些使用方法&#xff0c;便于记录和查询。 我一般是借助wxFormBuilder工具搭建基础的界面生成代码&#xff0c;这样做的好处自然是方便设计界面增加界面的美观度&#xff0c;再在.py文件手写代码设置控件的事件驱动&a…

【论文阅读总结】Batch Normalization总结

批量规范化&#xff1a;通过减少内部协变量转移加快深度网络训练1. 摘要2. 序言2.1 min-batches的优缺点2.2 批量归一化解决内部协变量转移的优点3.减少内部协变量转移实现思想3.1 白化的问题3.2 解决白化问题4.小批量统计进行标准化4.1.白化简化的两种方式4.1.1 对通道维度进行…

mybatis实现分页查询(两种方式:1pageHelper插件 2手写)

方法1&#xff1a;整合pageHelper分页插件 优点&#xff1a;快捷&#xff0c;只需要你有一个查询全部数据的方法即可 缺点&#xff1a;对于初学者来说&#xff0c;不了解内部的原理 前提&#xff1a;需要先实现一个最简单的 查询全部数据的方法&#xff0c;不会的可以先去搭建一…

C++零基础项目:俄罗斯方块!详细思路+源码分享

游戏介绍 这是使用 C 和 EasyX 写的一个俄罗斯方块小游戏&#xff0c;里面用到的 C 特性并不多。 游戏主要分成了两个类来实现&#xff1a;Game 和 Block 类&#xff0c;分别用来实现游戏逻辑和单独的俄罗斯方块&#xff0c;里面顶多就用到了静态成员函数和变量的特性&#x…

nexus上传自定义starter

nexus上传自定义starter1、starter上传简介2、上传方法2.1、setting.xml文件2.2、项目中的pom文件3、具体部署1、starter上传简介 在我们自定义了springboot的starter后&#xff0c;starter一般有是一个父子级maven工程&#xff0c;如下图所示&#xff0c;对于 autoconfigure 来…

H5 导航栏示例

本文是通过:hover更新元素样式&#xff0c;通过递归树形菜单渲染到页面。 效果 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"&…

基于ssm框架的汽车故障维修管理系统源码+开题报告+论文+远程安装部署+视频讲解

博主介绍&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 基于ssm框架的汽车故障维修管理系统源码开题报告论文远程安装部署视频讲解 演示视频 视频去哪了呢&#xff1f;_哔哩哔哩_bilibili 系统介绍 项目介绍…

dependencies与dependencyManagement的区别

最近再看项目的时候&#xff0c;无意间注意到项目中的pom文件既有dependencyManagement&#xff0c;也有dependencies&#xff0c;有点疑惑为什么要同时有这两个标签&#xff0c;可能之前没太注意过吧。 dependencies与dependencyManagement的区别&#xff1a; a…

js基础面试题

js基础 h5新特性 1. 新增选择器&#xff1a;querySelector、querySelectorAll 2. 拖拽功能&#xff1a;drag和drop 3. 媒体播放&#xff1a;video和audio 4. 本地存储&#xff1a;localStorage和sessionStorage 5. 语义化标签&#xff1a;article、footer、header、nav、sect…

D. Maximum Sum of Products(二维数组记录改变区间)

Problem - 1519D - Codeforces 给你两个长度为n的整数数组a和b。 你最多可以扭转数组a的一个子数组&#xff08;连续子段&#xff09;。 你的任务是反转这样一个子数组&#xff0c;使其总和∑i1nai⋅bi达到最大。 输入 第一行包含一个整数n&#xff08;1≤n≤5000&#xff0…

第三十四章 linux-模块的加载过程四

第三十四章 linux-模块的加载过程四 文章目录第三十四章 linux-模块的加载过程四调用模块的初始化函数释放INT section所占用的空间呼叫模块通知链模块的卸载find_module检查依赖关系free_modulesys_init_module第二部分由load_module返回的do_init_module实现 static noinlin…

LCHub:到2023年,全球低代码市场预计达到269亿美元

12月13日,Gartner发布全球低代码市场规模报告。数据显示,到2023年,全球低代码市场规模预计达到269亿美元,同比增长19.6%。 业务技术专家认为,到2026年,超级自动化和业务可组合性将成为加速低代码技术应用的关键驱动力。 Gartner还发布了一项调查数据,到2023年全球超级自…