文档章节

万亿级数据洪峰下的分布式消息引擎

小虾米DYX
 小虾米DYX
发布于 2017/08/10 14:26
字数 1439
阅读 4
收藏 0

点击查看全文

前言

通过简单回顾阿里中间件(Aliware)消息引擎的发展史,本文开篇于双11消息引擎面临的低延迟挑战,通过经典的应用场景阐述可能会面临的问题 - 响应慢,雪崩,用户体验差,继而交易下跌。为了应对这些不可控的洪峰数据,中间件团队通过大量研究和实践,推出了低延迟高可用解决方案,在分布式存储领域具有一定的普适性。在此基础上,通过对现有有限资源的规划,又推出了分级的容量保障策略,通过限流、降级,甚至熔断技术,能够有效保障重点业务的高吞吐,成功的支撑集团包括海外业务平缓舒畅地度过双11高峰。与此同时,在一些对高可靠、高可用要求极为苛刻的场景下,中间件团队又重点推出了基于多副本机制的高可用解决方案,能够动态识别机器宕机、机房断网等灾难场景,自动实现主备切换。整个切换过程对用户透明,运维开发人员无需干预,极大地提升消息存储的可靠性以及整个集群的高可用性。

1. 消息引擎家族史

阿里中间件消息引擎发展到今日,前前后后经历了三代演进。第一代,推模式,数据存储采用关系型数据库。在这种模式下,消息具有很低的延迟特性,尤其在阿里淘宝这种高频交易场景中,具有非常广泛地应用。第二代,拉模式,自研的专有消息存储。能够媲美Kafka的吞吐性能,但考虑到淘宝的应用场景,尤其是其交易链路等高可靠场景,消息引擎并没有一位的追求吞吐,而是将稳定可靠放在首位。因为采用了长连接拉模式,在消息的实时方面丝毫不逊推模式。在前两代经历了数年线上堪比工况的洗礼后,中间件团队于2011年研发了以拉模式为主,兼有推模式的高性能、低延迟消息引擎RocketMQ。并在2012年进行了开源,经历了6年双11核心交易链路检验,愈久弥坚。目前已经捐赠给阿帕奇基金会(ASF),有望成为继ActiveMQ,Kafka之后,Apache社区第三个重量级分布式消息引擎。时至今日,RocketMQ很好的服务了阿里集团大大小小上千个应用,在双11当天,更有不可思议的万亿级消息流转,为集团大中台的稳定发挥了举足轻重的作用。

e673c3eeeef08ed68ff261e06085697a1696fa1d

2. 低延迟可用性探索

疾风吹征帆,倏尔向空没。千里在俄顷,三江坐超忽。—孟浩然

2.1低延迟与可用性

随着Java语言生态的完善,JVM性能的提高,C和C++已经不再是低延迟场景唯一的选择。本章节重点介绍RocketMQ在低延迟可用性方面的一些探索。
应用程序的性能度量标准一般从吞吐量和延迟两方面考量。吞吐量是指程序在一段时间内能处理的请求数量。延迟是指端到端的响应时间。低延迟在不同的环境下有不同的定义,比如在聊天应用中低延迟可以定义为200ms内,在交易系统中定义为10ms内。相对于吞吐量,延迟会受到很多因素的影响,如CPU、网络、内存、操作系统等。
根据Little’s law,当延迟变高时,驻留在分布式系统中的请求会剧增,导致某些节点不可用,不可用的状态甚至会扩散至其它节点,造成整个系统的服务能力丧失,这种场景又俗称雪崩。所以打造低延迟的应用程序,对提升整个分布式系统可用性有很大的裨益。

2.2 低延迟探索之路

RocketMQ作为一款消息引擎,最大的作用是异步解耦和削峰填谷。一方面,分布式应用会利用RocketMQ来进行异步解耦,应用程序可以自如地扩容和缩容。另一方面,当洪峰数据来临时,大量的消息需要堆积到RocketMQ中,后端程序可以根据自己的消费速度来进行数据的读取。所以保证RocketMQ写消息链路的低延迟至关重要。
在今年双11期间,天猫发布了红包火山的新玩法。该游戏对延迟非常敏感,只能容忍50ms内的延迟,在压测初期RocketMQ写消息出现了大量50~500ms的延迟,导致了在红包喷发的高峰出现大量的失败,严重影响前端业务。下图为压测红包集群在压测时写消息延迟热力图统计。

 

 

点击查看全文

本文转载自:http://click.aliyun.com/m/23000/

共有 人打赏支持
小虾米DYX
粉丝 0
博文 113
码字总数 0
作品 0
海淀
私信 提问
SACC2017:万亿级数据洪峰消息引擎实践

  【IT168 SACC现场报道】在数字化转型时代,云已成为万物智能的数字化大脑。而随着大数据应用、人工智能、移动互联网等技术的飞速发展,“智慧+”的概念正在深入到各行各业,提升企业效率...

it168网站
2017/10/20
0
0
Apache RocketMQ:从孵化项目到顶级项目 这是一个新的开始

几个月前,RocketMQ 社区发生了一件大事 —— Apache RocketMQ 宣布从 Apache 社区正式毕业,成为 Apache 顶级项目 (TLP),这也是国内首个互联网中间件的 Apache 顶级项目。要知道,RocketM...

局长
2017/12/18
427
1
分享一个号称万亿级海量的深度日志分析系统

分享一个号称万亿级海量的深度日志分析系统 我想,作为我们IT运维管理人员都知道,日志是记录设备和系统问题的信息,同时还可以监视系统中发生的事件,用户可以通过它来分析错误发生的原因,...

畅享择天0
2016/08/28
615
5
常用mq对比及rocketmq、kafka选型

一、常用MQ对比 上述来自CSDN搜索博客中的图片。 上述来自阿里云栖社区搜索博客中的图片。 二、rocket、kafka选型 (以下汉字内容是从下述各个网站中摘取出的个人认为的重点内容。) 1、Kaf...

二进制卤蛋
2017/10/11
0
0
阿里巴巴向 Apache 软件基金会捐赠消息中间件 RocketMQ

继向 Apache 软件基金会捐赠 JStorm 后,阿里巴巴在开源界又有一大举动。 11 月 28 日,阿里巴巴宣布将开源分布式消息中间件 RocketMQ 捐赠给 Apache,成为 Apache 孵化项目,孵化成功后 Ro...

局长
2016/11/28
12.1K
32

没有更多内容

加载失败,请刷新页面

加载更多

揭秘 | 双11逆天记录背后的数据库技术革新

摘要: 第十个天猫“双11”狂欢节圆满落幕,如今双11已不仅仅是天猫的盛会,更是阿里技术人的新年 每一个数字背后 都需要强大的技术支撑 Higher, Faster, Smarter 是我们不变的追求 技术无边...

阿里云云栖社区
19分钟前
4
0
element ui中的input组件不能监听键盘事件解决

vue使用element-ui的el-input监听不了键盘事件,原因应该是element-ui自身封装了一层div在input标签外面,把原来的事件隐藏了,所以如下代码运行是无响应的: <el-input v-model="search" p...

呵呵闯
22分钟前
3
0
Linux常用中间件启动命令

zookeeper redis lts

王桥修道院副院长
23分钟前
1
0
Kotlin极简教程中对? extends 和 ? super (out和int)的描述

PECS 现在问题来了:我们什么时候用extends什么时候用super呢?《Effective Java》给出了答案: PECS: producer-extends, consumer-super 比如,一个简单的Stack API: public class Stack<E...

SuShine
24分钟前
1
0
微信分享link问题

前提:公司业务,分享的页面需要自定义并且是一个固定页面 因此自定义分享link,这里存在一个问题,必须与安全域名一致,自不必说,而且这个link必须是当有协议的,也就是说不能写成locatio...

litCabbage
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部