返回 登录
1

【SDCC讲师专访】阿里巴巴冯嘉:RocketMQ开源二三事,侦破万亿级数据容量背后的架构实践

【编者按】每个人的成长曲线不同,有的人在研究生之时就已有相当知名的产品和框架,从而在接下来的工作中一路顺风顺水,有的人缺需要经历一个又一个的坑才能成长,不管是前者的聪明高效,还是后者的笨鸟先飞,他们都是在迈着脚步不断地向前。不妨,我们停下脚步看下一些同行,以激励自己更好地前行。CSDN与你相约SDCC 2017·深圳站讲师。

图片描述

2017年6月10-11日,SDCC 2017将在创新之都深圳火热开启。据悉,阿里巴巴中间件架构师冯嘉将在SDCC 2017·深圳站之互联网应用架构实战峰会带来题为《万亿级消息引擎架构、核心技术与最佳实践-Apache RocketMQ》的分享,更多峰会嘉宾和议题请点击这里

以下为正文:

图片描述

【嘉宾】冯嘉,阿里巴巴中间件架构师,具有丰富的分布式软件架构、高并发网站设计、性能调优经验,拥有多项分布式、推荐领域的专利。开源爱好者,关注分布式、云计算、大数据领域。目前主要负责阿里巴巴消息中间件生态输出、MQ商业化 ,Apache RocketMQ联合创始人,社区布道者。

CSDN:请先和大家介绍下您和目前所从事的工作,以及关注哪些技术领域?

冯嘉:大家好,我叫冯嘉,10年毕业后进入阿里巴巴,先后负责过交易线的核心业务系统、Feeds系统、性能侦测平台、消息推送平台等。多年来一直致力于分布式、网站架构、全栈性能优化领域的研究与改进工作,最近开始关注大数据相关技术栈。目前主要负责阿里巴巴消息引擎RocketMQ的架构设计及其改进,同时也是Aliware MQ(RocketMQ商业版),Apache RocketMQ社区负责人。

CSDN:您对架构是怎样的理解?以及您对于架构师是如何定义的?包括其能力与职责。

冯嘉:我个人喜欢把架构分解为宏架构与微架构。宏架构可以理解为传统意义上的架构,强调高屋建瓴,全局视野,在重视功能特性的同时又不忽略非功能属性,如容错、安全、性能、可维护性、可扩展性、可运维性等,随着时间的推移、数据体量的陡增会不断演化。而微观架构是介于设计和实现之间的一种抽象思考,模式提炼。如测试驱动架构、Metrics驱动架构、IO编程模型、模型生命周期管理、API与SPI设计、重演与追溯、Backoff设计、流控设计、资源优雅释放模型、Reactive编程模型、资源Lookup模型、依赖管理模型等等。微架构的展开需要相当的篇幅,后面有机会会和大家一一分享。软件架构师不仅能够使用全局视野,对软件进行全屋勾勒,更需要具备很强的微架构能力,为软件落地过程中的关键部位把关诊脉,而这种综合能力也是我一直在团队里提倡的。

CSDN:2016年11月,阿里将RocketMQ捐献给Apache软件基金会,正式成为孵化项目,「开源」的初衷是什么?在「开源」的过程中有哪些让您印象深刻的事件?

冯嘉:捐赠的初衷,其实我在另一篇文章里面有经提及过。我们希望能为世界展示我们有能力设计出一款自主知识产权的具有世界级影响力的分布式产品。RocketMQ开源5年来,一直未停止对整个引擎的优化与升级。正是通过这么多年来的坚持,我们才有了站在Apache的机会。团队也非常珍惜这个与世界强手过招的机会,像开源领域的顶级会议(ApacheCon和OSCon),我们都会派同学去参加,分享我们的研发经验,同时也能带回来非常有意思的Idea,反哺我们的产品。

至于开源过程中印象深刻的事情,确实有不少。像在国内,很多同学还是比较倾向于伸手主义,这个我在社区也多次强调过。Apache RocketMQ,应该说所有开源软件项目几乎不存在全职的Committer,分享知识本是一件很快乐的事情,但有时候我们的用户灰常喜欢提一些“过份”的要求,这样的声音在社区里多了,对整个社区的健康发展非常不好。像在Apache,因为考虑到时区,考虑到隐私,通常都是通过异步的邮件进行沟通,这种形式存在了有18年了,我相信一定有它的合理性。而目前,我们也在大力提倡国内社区的同学向这方面靠拢,如果你遇到问题,能够通过这种方式反馈,我相信社区里还是有很多热心的同学很乐意帮助解答的。至于其他好玩的事情,后面有机会再和大家分享。

CSDN:Apache基金会中的342个项目中,暂时还只有Kylin、CarbonData、Eagle和RocketMQ共计四个中国技术人主导的项目,对此您怎么看?您认为驱动「开源」最重要的因素是?

冯嘉:说实话,我个人其实不太喜欢听到“由中国人主导”这样的字样,我希望大家不管做什么事情,都要把握一个度,不卑不亢。2016年11月,阿里将RocketMQ捐献给Apache软件基金会,正式成为孵化项目,对我们来说这是一大步,因为加入到Apache开源软件基金会需要经过评审方的严格考核与观察。这既是一种荣誉,又是一种压力。RocketMQ开源至今有五年历史,伴随着阿里巴巴的业务体量不断攀登,其架构也做了一次又一次的优化与升级。我们希望打造全球一流的产品,为此团队这几年不断深耕细作,进入Apache对我们来说是一个很好的开始,在Apache严谨且专业的开源理念熏陶下,我们相信RocketMQ能够发展得越来越好。在全球最享有声望的开源基金会上,相信也会有更多的由中国人捐赠的产品受益全球。

开源是IT技术快速发展的重要引擎,正是开源的共享和协同文化,促进了互联网、大数据、物联网、移动化信息技术的迅猛发展。提供“免费的产品”能够让大家进行初始的评估,而一旦确定用户对该产品的必然需求后,往往会通过一款增强版的付费产品来接近客户。这通常比传道士式的营销策略要有效得多。从这个角度来说,驱动开源向前发展的最重要的因素是商业化。如果你依赖的开源软件,过了一年作者不再维护了,企业用户就会有很大的损失。而且商业支持一般会解锁更多的功能,并且出了问题都有及时的解决。这一点最典型的成功案例当属Linux与MySQL。而这一开源商业化模式也被越来越多的互联网、云计算公司采纳,如Kafka背后的confluent、RabbitMQ背后的pivotal、Hadoop背后的Cloudera、Hortonworks与MAPR。以及最近闹得沸沸扬扬的Docker。

CSDN:使用RocketMQ技术的阿里目前可以在双十一当天承受万亿级消息容量,能否简单分享下其目前的架构及主要解决的问题特点?

冯嘉: RocketMQ主要由NameServer、Broker、Producer以及Consumer四部分构成。其中NameServer以轻量级的方式提供服务发现和路由功能,每个NameServer存有全量的路由信息,提供对等的读写服务,支持快速扩缩容。Broker负责消息存储,以Topic为纬度支持轻量级的队列,单机可以支撑上万队列规模,支持消息推拉模型,具备多副本容错机制(2副本或3副本)、强大的削峰填谷以及上亿级消息堆积能力,同时可严格保证消息的有序性。除此之外,Broker还提供了同城异地容灾能力,丰富的Metrics统计以及告警机制。Producer和Consumer以SDK形式提供,由用户进行分布式部署,消息由Producer通过多种负载均衡模式发送到Broker集群,支持Batch发送、oneway发送。发送低延时,支持快速失败。Consumer支持PUSH和PULL两种消费模式,支持集群消费和广播消息,提供实时的消息订阅机制,目前不支持Exactly once语义,所以需要用户自己做好判重处理。

RocketMQ目前主要主要用在金融领域的交易链路、数据同步(如MySQL binlog解析订阅)、日志分发、异构系统交互、异步解耦与流计算领域。我们希望RocketMQ能够在互联网、金融、物联网、大数据领域遍地开花、深耕细作。这个也是下一代RocketMQ(第四代)主要演进的方向。

CSDN:与其他消息中间件的对比,RocketMQ的特点是?

冯嘉:与其他MQ产品想比,RocketMQ最大优势在于它经历了历年双十一的高并发,海量数据(去年双十一是万亿级)的洗礼和积甸,愈发可靠和稳定。在功能特性层面,我们觉得它最大的亮点在于大数据流量下依然能够保证出色的低延迟,能够支撑海量消息堆积,全局保序。当然,今年我们会陆续推出一系列更靓的特性,如支持海量消息的延迟投递、分布式事务、分级的消息去重、物联网套件,甚至还包括Stream特性。也非常希望这方面的专家同学能够加入我们,帮助我们一同打造全球最具影响力的分布式产品。

CSDN:您最期待在SDCC 2017·深圳站大会上看到哪些内容?

冯嘉:非常期待深圳大会能够有更多的外籍同行来分享他们的互联网架构实战经验,也非常期望能够看到更多的分布式架构与实践、性能优化方面的精彩分享。深圳站不见不散,让我们。


图片描述

SDCC 2017•深圳站将于2017年6月10-11日登陆深圳,拥有互联网应用架构实战峰会大数据技术实战峰会两大峰会,秉承干货实料的内容原则,汇聚业内顶尖架构师和数据技术专家,共话架构、大数据热点话题,深度解析技术难点和落地思考,带你高台起步,走近技术圈的浮生万象。八折抢票通道倒计时最后4天,票务火爆,欲购从速,详情点击注册参会

评论