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

简介: 本文帮助大家了解对于分布式消息系统,传统的消息系统以及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版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
73 4
|
2月前
|
存储 运维 负载均衡
构建高可用性GraphRAG系统:分布式部署与容错机制
【10月更文挑战第28天】作为一名数据科学家和系统架构师,我在构建和维护大规模分布式系统方面有着丰富的经验。最近,我负责了一个基于GraphRAG(Graph Retrieval-Augmented Generation)模型的项目,该模型用于构建一个高可用性的问答系统。在这个过程中,我深刻体会到分布式部署和容错机制的重要性。本文将详细介绍如何在生产环境中构建一个高可用性的GraphRAG系统,包括分布式部署方案、负载均衡、故障检测与恢复机制等方面的内容。
133 4
构建高可用性GraphRAG系统:分布式部署与容错机制
|
2月前
|
机器学习/深度学习 人工智能 分布式计算
【AI系统】分布式通信与 NVLink
进入大模型时代后,AI的核心转向大模型发展,训练这类模型需克服大量GPU资源及长时间的需求。面对单个GPU内存限制,跨多个GPU的分布式训练成为必要,这涉及到分布式通信和NVLink技术的应用。分布式通信允许多个节点协作完成任务,而NVLink则是一种高速、低延迟的通信技术,用于连接GPU或GPU与其它设备,以实现高性能计算。随着大模型的参数、数据规模扩大及算力需求增长,分布式并行策略,如数据并行和模型并行,变得至关重要。这些策略通过将模型或数据分割在多个GPU上处理,提高了训练效率。此外,NVLink和NVSwitch技术的持续演进,为GPU间的高效通信提供了更强的支持,推动了大模型训练的快
47 0
|
3月前
|
消息中间件 中间件 数据库
NServiceBus:打造企业级服务总线的利器——深度解析这一面向消息中间件如何革新分布式应用开发与提升系统可靠性
【10月更文挑战第9天】NServiceBus 是一个面向消息的中间件,专为构建分布式应用程序设计,特别适用于企业级服务总线(ESB)。它通过消息队列实现服务间的解耦,提高系统的可扩展性和容错性。在 .NET 生态中,NServiceBus 提供了强大的功能,支持多种传输方式如 RabbitMQ 和 Azure Service Bus。通过异步消息传递模式,各组件可以独立运作,即使某部分出现故障也不会影响整体系统。 示例代码展示了如何使用 NServiceBus 发送和接收消息,简化了系统的设计和维护。
76 3
|
3月前
|
消息中间件 存储 监控
消息队列系统中的确认机制在分布式系统中如何实现
消息队列系统中的确认机制在分布式系统中如何实现
|
3月前
|
消息中间件 存储 监控
【10月更文挑战第2天】消息队列系统中的确认机制在分布式系统中如何实现
【10月更文挑战第2天】消息队列系统中的确认机制在分布式系统中如何实现
|
3月前
|
存储 开发框架 .NET
C#语言如何搭建分布式文件存储系统
C#语言如何搭建分布式文件存储系统
92 2
|
4月前
|
存储 块存储
ceph分布式存储系统常见术语篇
关于Ceph分布式存储系统的常见术语解释和概述。
200 1
ceph分布式存储系统常见术语篇
|
3月前
|
消息中间件 存储 监控
消息队列系统中的确认机制在分布式系统中如何实现?
消息队列系统中的确认机制在分布式系统中如何实现?
|
3月前
|
存储 分布式计算 监控
C# 创建一个分布式文件存储系统需要怎么设计??
C# 创建一个分布式文件存储系统需要怎么设计??
50 0
下一篇
开通oss服务