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

简介: 本文帮助大家了解对于分布式消息系统,传统的消息系统以及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一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
消息中间件 存储 NoSQL
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
|
1月前
|
存储 Web App开发 运维
原来10张图就可以搞懂分布式链路追踪系统原理
原来10张图就可以搞懂分布式链路追踪系统原理
|
1月前
|
算法 Java 数据中心
分布式ID生成系统之雪花算法详解
在当今的云计算和微服务架构盛行的时代,分布式系统已成为软件开发的重要组成部分。随着系统规模的扩大和业务的复杂化,对数据一致性和唯一性的要求也越来越高,尤其是在全局唯一标识符(ID)的生成上。因此,分布式ID生成系统应运而生,成为保证数据唯一性和提高系统可扩展性的关键技术之一。雪花算法(Snowflake)是Twitter开源的一种算法,用于生成64位的全局唯一ID,非常适用于分布式系统中生成唯一标识符。下面我们将深入探讨雪花算法的原理、结构和实现方式。
92 2
 分布式ID生成系统之雪花算法详解
|
3月前
|
存储 供应链 安全
新一代数据库技术——基于区块链的分布式存储系统
传统数据库系统通常采用集中式存储结构,容易受到单点故障和数据篡改的影响。本文将介绍基于区块链技术的分布式存储系统,探讨其在数据库领域的应用和优势,以及面临的挑战和未来发展趋势。
168 1
|
3月前
|
消息中间件 存储 NoSQL
面试题解析:如何解决分布式秒杀系统中的库存超卖问题?
面试题解析:如何解决分布式秒杀系统中的库存超卖问题?
108 0
|
3月前
|
存储 监控 网络协议
百度基于金融场景构建高实时、高可用的分布式数据传输系统的技术实践
本文将通过一个百度搜索旗下的金融场景案例来分享构建高实时、高可用的分布式数据传输系统的技术实践。
48 0
|
3月前
|
中间件 测试技术 调度
设计一个简易版本的分布式任务调度系统
设计一个简易版本的分布式任务调度系统
73 0
|
4月前
|
消息中间件 监控 负载均衡
Kafka 最佳实践:构建可靠、高性能的分布式消息系统
Apache Kafka 是一个强大的分布式消息系统,被广泛应用于实时数据流处理和事件驱动架构。为了充分发挥 Kafka 的优势,需要遵循一些最佳实践,确保系统在高负载下稳定运行,数据可靠传递。本文将深入探讨 Kafka 的一些最佳实践,并提供丰富的示例代码,帮助大家更好地应用这一强大的消息系统。
|
4月前
|
消息中间件 监控 安全
Kafka安全性探究:构建可信赖的分布式消息系统
在本文中,将研究Kafka的安全性,探讨如何确保数据在传输和存储过程中的完整性、机密性以及授权访问。通过详实的示例代码,全面讨论Kafka安全性的各个方面,从加密通信到访问控制,帮助大家构建一个可信赖的分布式消息系统。
|
4月前
|
存储 JavaScript 前端开发
基于Sprngboot+Vue的分布式酒店管理系统
基于Sprngboot+Vue的分布式酒店管理系统