APP下载

Apache RocketMQ 流计算处理

2018-11-26历启鹏

软件和集成电路 2018年8期
关键词:阿帕奇日志阿里

历启鹏

很高兴有机会和大家分享Apache RocketMQ。首先,和大家分享一下RocketMQ的發展历史。2007年,阿里的B2C业务蓬勃发展,当时,阿里启动了“五采石”项目,这个项目把阿里平台拆分为若干个库存中心、订单中心、支付中心等,阿里第一代消息引擎Notify就诞生于此。2010年,阿里B2B业务也做了一些新的项目,打造了一个全新的消息中间件,叫做Napoli。无论是Napoli,还是第一代消息引擎Notify,都是基于关系型数据库做的数据存储。淘宝的关系型数据存储量比较大,关系型数据库会有大量事件堆积,也会导致很多性能问题。2011年,阿帕奇开源了一个叫卡布卡的项目,该项目的日志处理能力非常好,随后,阿里也基于卡布卡的思路重构了核心逻辑,形成了一个新的项目MetaQ。后来,阿里也把MetaQ贡献给开源社区。因为卡布卡是社交场景,而阿里是电商场景,所以MetaQ在阿里内部的使用过程中会遇到很多问题,比如,宕机和扩容问题。2015年,阿里重新编写了MetaQ,命名为RocketMQ。2016年,阿里把RocketMQ捐献给了阿帕奇基金会,成为了阿帕奇的孵化项目。2017年,RocketMQ成为了阿帕奇基金会的顶级项目。从此以后,RocketMQ受到了极大的关注,国内外的很多银行开始用RocketMQ进行POC的测试。

接下来,为大家介绍RocketMQ的生态布局。首先是RocketMQ Core,主要功能是进行消息订阅和发布。其次是RocketMQ IoT Bridge,主要对接RocketMQ的上游生态IoT设备,可以支持MQTT和其他行业。我们在深耕各个产业的IoT时,发现很多行业都有自己的IoT设备协议。RocketMQ IoT Bridge原生设计的目的是为了兼容多协议,发动有热情的开发者或者厂商一起去补充、完善各个行业的IoT采集协议,支持厂商自己定义自己的行业协议。RocketMQ IoT Bridge可以基于我们设备的数量做平滑的自动扩容和缩容,使用起来非常方便。最后是RocketMQ API,RocketMQ API支持下游生态,可以支持在线以及离线的大数据分析平台进行融合,Spark和Hadoop可以做无缝对接。目前,RocketMQ支持四种语言,分别是Java、C++、Goland、PHP。

关于Cloud RocketMQ,Cloud RocketMQ是我们对RocketMQ的一个功能规划,包括Apache RocketMQ、Alibaba Cloud MQ、云服务三层。第一层包括普通消息、顺序消息、广播消息等基本功能。第二层包括Dashboard、定时消息、授权认证、安全配额、高可用等功能,据了解,现在阿里内部使用的RocketMQ已经完善了这些功能,如果有公司自己想用,我们建议他把这些功能补充上。第三层包括容灾演练、依赖管理、智能部署等功能。

接下来,介绍一下RocketMQ在大数据方面的几个使用场景。第一个是RocketMQ for ELK。RocketMQ与ELK相融合,做一些日志分析。ELK是一个非常火的日志处理平台,包括日志采集、日志分析、日志存储等。但是,ELK这个平台也有很多不尽如人意的地方,比如,ELK在做数据分析的时候,如果数据量非常大,对ELK就会产生巨大的压力,一旦ELK出现故障,就会导致数据丢失,整个日志有可能会丢失。现在,我们基于RocketMQ为ELK日志平台推荐了一个方案,首先可以通过ELK产生一个filebeat,通过filebeat采集数据之后,直接发送到RocketMQ,把这些日志存储下来做持久化。RocketMQ通过RocketMQ Streaming平台完成日志分析、特定标签的识别以及简单的统计。完成之后,这些信息可以存储到ELK的ElasticSearch平台里,这样就可以避免ELK的数据丢失和高负荷情况。

第二个是RocketMQ for IoT。RocketMQ在电力、能源、交通、物流等很多行业已经在做IoT设备数据的一些存储与分发,比如,国家电网的电动汽车的车辆轨迹跟踪,都是基于RocketMQ做存储。另外,我们觉得未来IoT设备与云端连接,可以实现双向通信与数据传输。比如,未来的智能冰箱,用户使用一键购物,通过按键,向RocketMQ发送消息,RocketMQ如果再加上阿里云的计算函数或AWS的计算函数,可以打通云端平台,完成一键购物。

第三个是RocketMQ for Storm。RocketMQ是一个消息处理平台,Storm是流式处理平台,不同点是,我们定位RocketMQ为更轻量级的流式处理,比如,如果一个密集型的大数据分析,我们还是建议放在Storm平台上做。

第四个是基于RocketMQ的金融级消息服务平台。随着金融业务的快速发展,ESB总线很多地方的扩展性并不是很强,比如,ESB总线很难做到服务的熔断、降级等,我们基于RocketMQ,结合现有业务,对ESB总线做了一些改造,结合消息组件完成了服务平台的一个服务治理。

RocketMQ在这里起的作用主要有:收集各个服务中心的运行状态和健康情况,把这些数据发送到决策中心,基于数据做了分析之后,把消息通过RocketMQ系统部署到各个服务,完成对服务的闭环控制,在压力比较大的时,RocketMQ可能会把消息发到控制端进行服务降级。

(根据演讲内容整理,未经本人审核)

猜你喜欢

阿帕奇日志阿里
高效管理日志文件用命令行就可以
云上阿里
读扶贫日志
疼痛后才计数
雅皮的心情日志
雅皮的心情日志
Catalan数及几种应用实例
拳王阿里因何被人铭记
阿帕奇反机场型导弹