热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

阿里中间件的源与流

目录前言从中间件-中台-阿里云从五彩石项目说起从HSF到EDAS从TDDL到PolarDB-XTDDL阶段DRDS阶段PolarDB-X1.0阶段PolarDB-X2.0阶段从


目录


    • 前言
    • 从中间件->中台->阿里云
    • 从五彩石项目说起
    • 从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






推荐阅读
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • 在本地环境中部署了两个不同版本的 Flink 集群,分别为 1.9.1 和 1.9.2。近期在尝试启动 1.9.1 版本的 Flink 任务时,遇到了 TaskExecutor 启动失败的问题。尽管 TaskManager 日志显示正常,但任务仍无法成功启动。经过详细分析,发现该问题是由 Kafka 版本不兼容引起的。通过调整 Kafka 客户端配置并升级相关依赖,最终成功解决了这一故障。 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • 在深入掌握Spring框架的事务管理之前,了解其背后的数据库事务基础至关重要。Spring的事务管理功能虽然强大且灵活,但其核心依赖于数据库自身的事务处理机制。因此,熟悉数据库事务的基本概念和特性是必不可少的。这包括事务的ACID属性、隔离级别以及常见的事务管理策略等。通过这些基础知识的学习,可以更好地理解和应用Spring中的事务管理配置。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
author-avatar
水妖精Fairy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有