一、前言

提到mq,可能很多朋友都有多耳闻,很多大公司都在使用这种技术。就小编而言,听说使用mq可以进行秒杀的操作,而且使用十分的方便,效率十分的高。以前小编也做过关于秒杀的技术,就是使用悲观锁对DAO进行操作,通过加锁使得线程单一。但是上亿条数据访问数据库也是对数据有很大的压力的。所以我们可以在DAO和数据库之间加入一个MQ,他的承载数据的能力非常强,有什么就直接向这个里面装就可以了。然后他再负责向数据库传递消息。数据库再进行操作,达到了数据库解耦。

但是为毛小编这里要选择RocketMQ呢?在众多的mq中,他有什么突出的优点呢?小编在下面向大家介绍。

二、说说现在主流的MQ

MQ,消息队列,Message Queue。

在主流的MQ中,有很多,比如ActiveMQ、RabbitMQ、RocketMQ、Kafka、ZeroMQ等,下面是小编在网上找到的对比的情况:

关于为什么使用RocketMQ?

RocketMQ是一款分布式、队列模型的消息中间件,是由阿里巴巴设计的,具有以下特点:

  • 支持严格的消息顺序

  • 支持Topic与Queue两种模式

  • 亿级消息堆积能力

  • 比较友好的分布式特性

  • 同时支持Push与Pull方式消费消息

  • 历经多次天猫双十一海量消息考验

  • RocketMQ是纯java编写,基于通信框架Netty。

其实小编就冲着RocketMQ历经多次天猫双十一海量消息考验,就感觉应该选择他了,再加上有亿级消息堆积能力,这么强大的一个部件,一个新生的黑马!值得大家发现。

三、专访RocketMQ联合创始人

2012年,阿里巴巴开源其自研的第三代分布式消息中间件——RocketMQ。经过几年的技术打磨,阿里称基于RocketMQ技术,目前双十一当天消息容量可达到万亿级。

2016年11月,阿里将RocketMQ捐献给Apache软件基金会,正式成为孵化项目。阿里称会将其打造成顶级项目。这是阿里迈出的一大步,因为加入到开源软件基金会需要经过评审方的考核与观察。坦率而言,业界还对国人的代码开源参与度仍保持着刻板印象;而Apache基金会中的342个项目中,暂时还只有Kylin、CarbonData、Eagle 和 RocketMQ 共计四个中国技术人主导的项目。

2017年2月20日,RocketMQ正式发布4.0版本,专家称新版本适用于电商领域,金融领域,大数据领域,兼有物联网领域的编程模型。

经历双11洗礼的英雄

在备战2016年双十一时,团队重点做了两件事情,优化慢请求与统一存储引擎。

  • 优化慢请求:这里主要是解决在海量高并发场景下降低慢请求对整个集群带来的抖动,毛刺问题。这是一个极具挑战的技术活,团队同学经过长达1个多月的跟进调优,从双十一的复盘情况来看,99.996%的延迟落在了10ms以内,而99.6%的延迟在1ms以内。优化主要集中在RocketMQ存储层算法优化、JVM与操作系统调优。更多的细节大家可以参考我们之前写的电子书章节《万亿级数据洪峰下的分布式消息引擎》。

  • 统一存储引擎:主要解决的消息引擎的高可用,成本问题。在多代消息引擎共存的前提下,我们对Notify的存储模块进行了全面移植与替换。

RocketMQ天生为金融互联网领域而生,追求高可靠、高可用、高并发、低延迟,是一个阿里巴巴由内而外成功孕育的典范,除了阿里集团上千个应用外,根据我们不完全统计,国内至少有上百家单位、科研教育机构在使用。

四、小结

通过这次的总结分析也更加了解了为什么要使用RocketMQ,他高可靠,高并发,低延迟,基本O丢失。所以非常值得学习。

下一篇博客将带来如何搭建RocketMQ服务器。

原文地址:https://blog.csdn.net/kisscatforever/article/details/72773295

【MQ】为什么选择RocketMQ?的更多相关文章

  1. 微服务异步架构---MQ之RocketMQ

    “我们大家都知道把一个微服务架构变成一个异步架构只需要加一个MQ,现在市面上有很多MQ的开源框架.到底选择哪一个MQ的开源框架才合适呢?” 一.什么是MQ?MQ的原理是什么? MQ就是消息队列,是Me ...

  2. 【Rocket MQ】RocketMQ 在windows7 64位安装使用 +RocketMQ管理界面的安装

    参考地址:https://blog.csdn.net/yucaifu1989/article/details/80960018 参考地址:https://blog.csdn.net/u01204090 ...

  3. RocketMQ快速入门

    前面几篇文章介绍了为什么选择RocketMQ,以及与kafka的一些对比: 阿里 RocketMQ 优势对比,方便大家对于RocketMQ有一个简单的整体了解,之后介绍了:MQ 应用场景,让我们知道M ...

  4. RocketMq(一)初识消息中间件

    1.对消息的理解 消息即为数据(data),数据有一定的规则.长度.大小. Java Message Service(Java消息服务)简称JMS,为Java 程序提供一种通用的方式,来创建.发送.接 ...

  5. Spring boot实战项目整合阿里云RocketMQ (非开源版)消息队列实现发送普通消息,延时消息 --附代码

    一.为什么选择RocketMQ消息队列? 首先RocketMQ是阿里巴巴自研出来的,也已开源.其性能和稳定性从双11就能看出来,借用阿里的一句官方介绍:历年双 11 购物狂欢节零点千万级 TPS.万亿 ...

  6. 技术干货丨如何在VIPKID中构建MQ服务

    小结: 1. https://mp.weixin.qq.com/s/FQ-DKvQZSP061kqG_qeRjA 文 |李伟 VIPKID数据中间件架构师 交流微信 | datapipeline201 ...

  7. 【Apache RocketMQ】RocketMQ捐赠给Apache那些鲜为人知的故事-转自阿里中间件

    序言 今年的双十一对阿里巴巴中间件消息团队来说,注定是个不平凡的日子.在这一天,稳定性小组重点攻克的低延迟存储解决方案成功地经受住了大考.整个大促期间,99.996%的延迟落在了10ms以内,极个别由 ...

  8. 企业业务数据处理用“work”还是“MQ”

    近期公司在做架构梳理已经项目架构方向,不知不觉就引起了使用“work”跑数据还是用“MQ”进行跑数据的争论! 对于争论这件事在各行各业都有,其实我觉得针对“争论”这个词的根源在于一件事情有很多解决方案 ...

  9. rocketMQ(二 )Centos7 集群

    rocketMQ集群: 在运用中流程一般 是在程序中使用代码编辑生产者,将所需要的消息发送到rocketmq中,然后另一个程序编辑消费者从rocketmq里面获取消息.rocketmq集群 需要对na ...

随机推荐

  1. php的if函数

    条件语句用于基于不同条件执行不同的动作 PHP 条件语句 在您编写代码时,经常会希望为不同的决定执行不同的动作.您可以在代码中使用条件语句来实现这一点. 在 PHP 中,我们可以使用以下条件语句: i ...

  2. C++入门经典-例4.7-变量的作用域

    1:代码如下: // 4.7.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  3. 【学习】SpringBoot之自定义拦截器

    /** * 自定义拦截器 **/ @Configuration//声明这是一个拦截器 public class MyInterceptor extends WebMvcConfigurerAdapte ...

  4. ShiroFilterFactoryBean 找不到的原因

    是因为参考的那篇shiro的博客,没有引入这个依赖的原因 <dependency> <groupId>org.apache.shiro</groupId> < ...

  5. snmpEngineBoots & snmpEngineID数据存储到非易失性存储设备

    #include <stdio.h> #include <stdlib.h> #include <string.h> int regenerateID() { ; ...

  6. Dubbo HelloWord 与 Spring Boot 整合

    实现消费者项目代码调用提供者项目代码,使用 zookeeper 做为注册中心 interface 项目 pom.xml <?xml version="1.0" encodin ...

  7. Learn The Architecture Memory Management 译文

    1.概述 本文档介绍了ARMv8-A架构内存管理的关键——内存地址转换,包括虚拟地址(VA)到物理地址(PA)的转换.页表(或称地址转换表)格式以及TLBs(Translation Lookaside ...

  8. PLSQL查看表创建语句

    在我们想要查看的表上右键选择view:

  9. Go语言程序结构

    注意:Go语言源码文件编码格式必须是 UTF-8 格式,否则会导致编译器出错. 1.语言变量 a) 指定变量类型,声明后若不赋值,使用默认值. var name string b) 根据值自行判定变量 ...

  10. SweetAlert(弹出层插件)

    怀着非常.非常恼火的心情写下这个博文.我深深怀疑有一些人只会瞎粘贴复制别人的博文,自己试都不试就发布到网上,左右看的人想法,就此深通恶绝!! 废话不多说. SweetAlert是一个简洁好用的自制Al ...