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

  • 对于分布式消息系统,传统的消息系统以及Messaging生态面临的挑战;

  • 结合阿里巴巴自身的开源实践,提供如何应对以上挑战的参考答案;

  • OpenMessaging生态现状和未来的发展方向。

冯嘉:Apache RocketMQ 创始人,Linux OpenMessaging 创始人,阿里巴巴 Messaging 技术负责人。

消息系统的业界挑战

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

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

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

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

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

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

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

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

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

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

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

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

OpenMessaging的未来发展方向

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

就像这幅图描述的那样:数据维度,我们可以涵盖日志数据和业务数据;行业维度,游戏行业、电商行业的交易数据都可以通过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如何解决分布式事务难题。

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

阿里巴巴分布式消息系统的实践之路相关推荐

  1. 电商异步消息系统的实践

    声明:本文为<程序员>7月期原创投稿文章,未经许可禁止任何形式的转载. 作者:王晓宇,小米网平台研发部软件研发工程师.2015年入职小米,主要负责电商后端仓储物流相关的业务系统开发.曾在西 ...

  2. Kafka:用于日志处理的分布式消息系统

    文章目录 摘要 常用术语 关键词 1. 简介 2. 相关工作 3. Kafka架构和设计原则 3.1 单分区的效率 3.1.1 简单的存储 3.1.2 高效的传输 3.1.3 无状态代理 3.2 分布 ...

  3. java kafka分布式_Kafka分布式消息系统

    1.简介 Kafka是一个分布式消息系统,使用Scala语言进行编写,具有高水平扩展以及高吞吐量特性. 目前流行的消息队列主要有三种:ActiveMQ.RabbitMQ.Kafka ActiveMQ. ...

  4. 分布式消息系统Kafka初步

    http://my.oschina.net/ielts0909/blog/92972 终于可以写kafka的文章了,Mina的相关文章我已经做了索引,在我的博客中置顶了,大家可以方便的找到.从这一篇开 ...

  5. 分布式消息系统 Kafka 简介

    分布式消息系统 Kafka 简介 阅读目录 5.1 吞吐量 5.2 负载均衡 5.3 拉取系统 5.4 可扩展性 5.5 消息删除策略 6.1 消息队列 6.2 行为跟踪 6.3 元信息监控 6.4 ...

  6. Centos_7.2 下构建 Kafka_2.13 分布式消息系统的单机版

    如何在 Centos_7.2 下构建 Kafka_2.13 分布式消息系统的单例模式 一.前言 本文对于 kafka 分布式消息系统,是一个不错的入口点,首先从安装开始,这样就可以对 kafka 有一 ...

  7. 快手基于 RocketMQ 的在线消息系统建设实践

    作者:黄理,10 多年软件开发和架构经验,热衷于代码和性能优化,开发和参与过多个开源项目.曾在淘宝任业务架构师多年,当前在快手负责在线消息系统建设工作. 为什么建设在线消息系统 在引入 RocketM ...

  8. Apache Kafka:下一代分布式消息系统

    简介 Apache Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一种快速.可扩展的.设计内在就是分布式的,分区的和可复制的提交 ...

  9. 快手基于RocketMQ的在线消息系统建设实践

    简介:快手需要建设一个主要面向在线业务的消息系统作为 Kafka 的补充,低延迟.高并发.高可用.高可靠的分布式消息中间件 RocketMQ 正是我们所需的. 作者:黄理 黄理,10多年软件开发和架构 ...

  10. pulsar 容量_[Apache Pulsar] 企业级分布式消息系统-Pulsar入门基础

    Apache Pulsar Pulsar是一个支持多租户的.高性能的服务与服务之间消息通讯的解决方案,最初由雅虎开发,现在由Apache软件基金会管理. Pulsar在Yahoo的生产环境运行了三年多 ...

最新文章

  1. 10通信端口感叹号_BFC 系列 数字光纤放大器通信转换器代理报价
  2. zoj——3556 How Many Sets I
  3. springboot整合mysql5.7_springboot整合mybatis访问mysql,数据库
  4. mysql left join的深入探讨
  5. uiuc计算机课程,UIUC计算机科学专业解读
  6. 靶形数独(信息学奥赛一本通-T1447)
  7. 微信小程序富文本rich-text使用详解-微信小程序系统学习攻略​
  8. opensource项目_Opensource.com的写作主题从A到Z
  9. HDU 1358 Period KMP
  10. OpenSolaris系列文章之----投影仪设置
  11. c语言五子棋设计报告及源代码,课程设计模板C语言之五子棋附源代码.pdf
  12. python中怎么压缩文件_如何使用Python实现文件压缩?
  13. 【web前端面试题整理07】我不理解表现与数据分离。。。
  14. Artifact ssmbuildFinal:war exploded: Artifact is being deployed SSM整合
  15. java游戏服务端实现
  16. 人们对人工智能的看法(积极篇)
  17. 中国移动CMnet和CMwap两种网络的区别?
  18. 新式“组织生活会”,再现团队互信的光辉
  19. Python tkinter之PhotoImage图片显示问题
  20. 事务与hibernate

热门文章

  1. 基于python的opencv计算机视觉基础知识及例程代码【视觉入门看这一篇就够了】
  2. cio时代_成功实现数字时代CIO的6条原则
  3. mac mtu测试_如何查看 Mac 的以太网卡速度
  4. 2.2.7 虚拟Ethernet以太网卡
  5. 『单片机原理』程序存储器的结构
  6. 程序员真的是这个世上最奇怪的生物吗
  7. spring boot 启动
  8. pycharm中python的默认安装路径_PyCharm下载和安装详细步骤
  9. 数据库索引的填充因子
  10. 私藏版64页DevOps笔记免费分享