RocketMQ

RocketMQ简介

   RocketMQ是阿里巴巴开源的一款分布式的消息中间件,他源于JMS规范但是不遵守JMS规范。经历了Metaq1.x、Metaq2.x的发展和淘宝双十一的洗礼,在功能和性能上远超ActiveMQ。是一款低延迟、高可靠、可伸缩、易于使用的中间件。

RocketMQ优点

1.保证严格的消息顺序:RocketMQ通过发送消息时的orderId来确保消息的严格顺序。

2.消息高可靠性:RocketMQ的所有消息都是持久化的,发往broker的消息,有同步刷盘和异步刷盘机制, 总的来说可靠性非常高。

3.亿级消息堆积能力 亿级消息堆积后,还可以保持写入低延迟。

4.丰富的消息拉取机制(Push/Pull) Push,在消费者端设置Listener回调; 而Pull,控制权在于应用,即应用需要主动的调用拉消息方法从Broker获取消息。

RocketMQ应用场景

场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种   1.串行的方式;2.并行方式

(1)串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。

(2)并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间

假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒,并行的时间可能是100毫秒。 因为CPU在单位时间内处理的请求数是一定的,假设CPU1秒内吞吐量是100次。则串行方式1秒内CPU可处理的请求量是7次(1000/150)。并行方式处理的请求量是10次(1000/100) 小结:如以上案例描述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。如何解决这个问题呢? 引入消息队列,将不是必须的业务逻辑,异步处理。改造后的架构如下: 

按照以上约定,用户的响应时间相当于是注册信息写入数据库的时间,也就是50毫秒。注册邮件,发送短信写入消息队列后,直接返回,因此写入消息队列的速度很快,基本可以忽略,因此用户的响应时间可能是50毫秒。因此架构改变后,系统的吞吐量提高到每秒20 QPS。比串行提高了3倍,比并行提高了两倍。

 

posted @ 2018-09-25 15:48  薄荷熊猫  阅读(418)  评论(0编辑  收藏  举报