阿里巴巴布道师冯嘉:分布式消息系统的现状、挑战与未来

简介: 本文帮助大家了解对于分布式消息系统,传统的消息系统以及Messaging生态面临的挑战;结合阿里巴巴自身的开源实践,提供如何应对以上挑战的参考答案,以及OpenMessaging生态现状和未来的发展方向。

本文整理自冯嘉在开发者生态峰会的分享,通过此文,希望帮助大家了解:

  • 对于分布式消息系统,传统的消息系统以及Messaging生态面临的挑战;
  • 结合阿里巴巴自身的开源实践,提供如何应对以上挑战的参考答案;
  • OpenMessaging生态现状和未来的发展方向。

2E8A4767

冯嘉:Apache RocketMQ 布道师

消息系统的业界挑战

第一,开源软件给传统闭源软件带来的冲击。早期的消息系统是闭源的,但随着开源生态的发展,出现越来越多的的开源消息系统,使得用户在面临消息系统选型的时候有了更多的选择,这对传统的Messaging厂商来说是个非常大的挑战。

第二,互操作性成本越来越高。消息系统正面临越来越多的上下游生态。例如,部门和部门之间选择了不同的技术栈,这个部门选择了这个消息,那个部门产生了那个消息,当两者之间进行流通的时候必然带来了互操作性的问题,所以,这对消息系统提出了很高的互操作性要求。

7f8aca6101a7f416820f4bab45483781_99c5ac1bcb07edf06e993d53715a7bc0

第三,消息天然就是异构的,它是为解决数据间的流转问题而生。每个部门在拥有自己技术栈的同时产生了不同的开发语言,每门语言都有自己所擅长的技术领域,一门语言并无法通吃所有需求场景。这样的场景下,如果用了Messaging,都会希望消息系统能在不同的语言之间进行互通,但目前,业界很少有多语言的消息系统并且可以cover的得很好的,因为缺少稳定的多语言类库。

第四,券商和电商领域需要微秒级的延迟,微秒级的延迟在软件和硬件上没有达到很好的配合,所以第四个挑战就是由于嵌入式和新型硬件设备能力较弱所导致的。

第五,物联网有很多的端,端到端之间到后台都有数据采集和数据上报,规模化的部署能力也是所有消息系统所面临的挑战。

阿里巴巴是如何应对这类挑战的

第一,我们希望在开源基础框架的基础上,能够针对某些垂直领域或者针对高性能低延时场景分别推出企业版本和云上版本。云上版本重点关注部署流畅度,降低部署时间,提高扩展性,甚至能够加速云基础设施的迁移。因为很多MMQ的厂商已经做了商业化的场景,而我们做了企业版本,在FQ领域研发了IOT网关,在金融领域应用分布式的消息,通过这种方式让用户使用起来,而云上我们有更强的兜底能力。大家使用云上版本之后会发现:成本降下来了,部署速度快了,企业只需要专注业务,不需要关注底层基础设施的变化所带来的影响。

ed593d5148c862bcc63904411391ba6e_44b88fe0ad594cae04f1b5fcdb60b96d

第二,互操作性在任何技术领域都是一个需要面对的问题。而在消息领域,业界已经有三个比较出名的消息标准,但都无法很好的解决互操作性问题:JMS是一个Java 平台中关于面向消息中间件的API;MQTT是对物联网行业具有低功耗特点的通讯协议;AMQP则主要应用于电信和金融行业。

在评估了所有可用的替代品后,我们决定选择创建一个新的面向Cloud Native的消息分发标准 OpenMessaging,这是一个供应商中立,且和语言无关的标准,并为金融、电子商务、物联网和大数据等领域提供了行业指南。

第三,我们开放了OpenMessaging内核,并通过sidercar的方式提供了解决多语言需求的方案,据此,我们只需要在Java的基础上,打造C语言的内核,然后把Java和C语言的内核开放出来,在此之上建立Python、Go等其他语言的sdk,实现和社区共建生态。

d9ed47775efc1a52445bf0f5f2460862_0c28033c037f50c8a725378f3c994b4c

第四,在券商和电商领域,我们提出一个解决方案:大家都很清楚就是现在慢慢在使用NVMI存储去替代以前的SSD硬盘。如果我们采用这类硬件设备,是可以绕过内核的。通过对比发现,MQ的硬件设备,在硬件层通过SSD存储层,延迟会大大降低,所有的延迟都集中在APP层或者集中在硬件驱动层。这样的话,能够保证应用在100毫秒甚至十几微秒的情况下达到非常少的延迟。而传统的软件要适配在这类硬件上是很有挑战的,因为这类硬件不兼容传统软件的API。

第五,对于规模化的部署,存储计算分离和事件驱动架构是很好的解决方案。例如,IoT领域,存储端和计算端是可以分开的,这样极大地的提升了端的计算能力。

OpenMessaging的未来发展方向

现在,我们都看到了基础设施非常open,就像公路和桥梁一样,有很多的操作系统,像Open Office办公软件等很多技术已经转向开放,我们希望将OpenMessaging打造成数据层面非常好的基石。

10969b84dfea640c8eb9c1e99aa0f807_8493671266efe0eca3476b7bfee5d7b0

就像这幅图描述的那样:数据维度,我们可以涵盖日志数据和业务数据;行业维度,游戏行业、电商行业的交易数据都可以通过OpenMessaging往下拓展,对于IOT,则可以通过OpenMessaging把数据的上游和下游以标准化的方式串起来。厂商维度,包括Apache Kafka,Apache RocketMQ,RabbitMQ,Apache ActiveMQ都可以基于这个标准构建下一代的消息解决方案。

现在,OpenMessaging有四个工作组:第一个工作组主要是关注在span的制定上面;第二个工作组是解决API;第三个工作组是希望提供bench mark API;第四个工作组是解决存储的工具化,因为未来的架构一定是存储和计算分离,一定会面临很多的存储。

经过一年多的发展,整个OpenMessaging的技术发展委员会已经有7名成员,他们分别来自4家公司,有电商、广告搜索、流计算,还有数据集成,大家共同的特点就是互操作。除了对产品和技术方向进行把握的技术委员会之外,还有11位来自6家不同企业组成的咨询委员会,这11位同学会帮助我们提一些建设和产品发展规划方面的建议。除此之外,还有接近二十多位来自社区的contributors,从而保证OpenMessaging是在往多元化、无厂商锁定的健康的方向上发展。

线下分享预告:

王强(辽天)受邀参加 10月18-20日Qcon·上海站,并进行主题为《Apache RocketMQ事务消息演进之路》的分享,欢迎来现场了解Messaging如何解决分布式事务难题。

_2018_10_11_1_41_17

欢迎关注“阿里巴巴中间件”,加入中间件开发者群,与技术同行。

101020104542_0949_2_Jpeg

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6月前
|
人工智能 安全 应用服务中间件
阿里巴巴 MCP 分布式落地实践:快速转换 HSF 到 MCP server
本文分享了阿里巴巴内部将大规模HSF服务快速转换为MCP Server的实践经验,通过Higress网关实现MCP协议卸载,无需修改代码即可接入MCP生态。文章分析了MCP生态面临的挑战,如协议快速迭代和SDK不稳定性,并详细介绍了操作步骤及组件功能。强调MCP虽非终极解决方案,但作为AI业务工程化的起点具有重要意义。最后总结指出,MCP只是AI原生应用发展的第一步,未来还有更多可能性值得探索。
1172 48
|
6月前
|
Kubernetes 大数据 调度
Airflow vs Argo Workflows:分布式任务调度系统的“华山论剑”
本文对比了Apache Airflow与Argo Workflows两大分布式任务调度系统。两者均支持复杂的DAG任务编排、社区支持及任务调度功能,且具备优秀的用户界面。Airflow以Python为核心语言,适合数据科学家使用,拥有丰富的Operator库和云服务集成能力;而Argo Workflows基于Kubernetes设计,支持YAML和Python双语定义工作流,具备轻量化、高性能并发调度的优势,并通过Kubernetes的RBAC机制实现多用户隔离。在大数据和AI场景中,Airflow擅长结合云厂商服务,Argo则更适配Kubernetes生态下的深度集成。
857 34
|
2月前
|
存储 算法 安全
“卧槽,系统又崩了!”——别慌,这也许是你看过最通俗易懂的分布式入门
本文深入解析分布式系统核心机制:数据分片与冗余副本实现扩展与高可用,租约、多数派及Gossip协议保障一致性与容错。探讨节点故障、网络延迟等挑战,揭示CFT/BFT容错原理,剖析规模与性能关系,为构建可靠分布式系统提供理论支撑。
217 2
|
2月前
|
机器学习/深度学习 算法 安全
新型电力系统下多分布式电源接入配电网承载力评估方法研究(Matlab代码实现)
新型电力系统下多分布式电源接入配电网承载力评估方法研究(Matlab代码实现)
126 3
|
4月前
|
数据采集 缓存 NoSQL
分布式新闻数据采集系统的同步效率优化实战
本文介绍了一个针对高频新闻站点的分布式爬虫系统优化方案。通过引入异步任务机制、本地缓存池、Redis pipeline 批量写入及身份池策略,系统采集效率提升近两倍,数据同步延迟显著降低,实现了分钟级热点追踪能力,为实时舆情监控与分析提供了高效、稳定的数据支持。
165 1
分布式新闻数据采集系统的同步效率优化实战
|
10月前
|
存储 运维 安全
盘古分布式存储系统的稳定性实践
本文介绍了阿里云飞天盘古分布式存储系统的稳定性实践。盘古作为阿里云的核心组件,支撑了阿里巴巴集团的众多业务,确保数据高可靠性、系统高可用性和安全生产运维是其关键目标。文章详细探讨了数据不丢不错、系统高可用性的实现方法,以及通过故障演练、自动化发布和健康检查等手段保障生产安全。总结指出,稳定性是一项系统工程,需要持续迭代演进,盘古经过十年以上的线上锤炼,积累了丰富的实践经验。
787 7
|
10月前
|
存储 分布式计算 Hadoop
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
348 7
|
存储 运维 负载均衡
构建高可用性GraphRAG系统:分布式部署与容错机制
【10月更文挑战第28天】作为一名数据科学家和系统架构师,我在构建和维护大规模分布式系统方面有着丰富的经验。最近,我负责了一个基于GraphRAG(Graph Retrieval-Augmented Generation)模型的项目,该模型用于构建一个高可用性的问答系统。在这个过程中,我深刻体会到分布式部署和容错机制的重要性。本文将详细介绍如何在生产环境中构建一个高可用性的GraphRAG系统,包括分布式部署方案、负载均衡、故障检测与恢复机制等方面的内容。
648 4
构建高可用性GraphRAG系统:分布式部署与容错机制
|
11月前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
652 4
|
消息中间件 存储 监控
消息队列系统中的确认机制在分布式系统中如何实现
消息队列系统中的确认机制在分布式系统中如何实现

热门文章

最新文章