IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【MQ选型】RabbitMQ、RocketMQ、Kafka选型 -> 正文阅读

[大数据]【MQ选型】RabbitMQ、RocketMQ、Kafka选型

前言

在平常管理团队的时候,肯定会遇到这种情况,某种业务问题,有解决方案的技术有很多种,但是不知道该如何选择,技术选型也是一件非常谨慎的事情,事关日后对应服务的维护和拓展,这里就讲讲RabbitMQ、RocketMQ、Kafka这三款MQ该如何选择


选型前提

1、产品必须是开源的

主要是为了应对实际需求,如果开源产品有一点点不满足或者bug,我们也可以下载源码,潜心钻研一下并修改源码,就可以继续使用,方便且实用

2、近几年比较流行的

这个不用说了吧,技术大多数情况下,越流行,说明业务场景的解决方案就越成熟

3、消息传输是可靠的:保证消息不会丢失

这是MQ必须要保证的

4、支持集群,可以横向扩展,包括解决单点故障

这是MQ必须要保证的

5、性能要好,不能用了它之后,反而影响服务响应

这是MQ必须要保证的


RabbitMQ

【背景】

最开始普遍用在电信业务方面的,也是极少数中支持AMQP协议的产品

【优点】

1、轻量级,部署方便且快速

2、支持灵活的配置,在RabbitMQ中存在一个处于生产者和队列之间的交换器模块,可以自定义路由规则,把不同消息发送到指定的队列中,规则也是自定义的,非常人性化,我个人非常喜欢的一个功能

3、RabbitMQ是跨平台的,它支持大多数编程语言,Java肯定是不用说了

【缺点】

1、如果出现消息堆积或阻塞,性能会大幅度下降

2、在RocketMQ和Kafka的对比下,它的性能是最差的。官方测试是每秒处理几万到几十万的消息,如果你有更高的需求,就不要用RabbitMQ了

3、它的开发语言是Erlang,平常我们走Java的,如果对源码进行修改,成本肯定是相当大的,相当于要学习这个语言


RocketMQ?

【背景】?

背景就是阿里出品,那大多数就是精品了,阿里团队参考Kafka的设计并使用Java实现的,最主要的是RocketMQ经住了多次双十一这种大数据传输的场景,性能和可靠稳定性那就不用说了

【优点】

1、Java语言开发的,源码比较亲近,源码的拓展和二级开发,对于我们来说只是时间问题

2、提供了多种场景功能,比如:有序、事务、流计算等等

3、具备了市场定义的消息队列应该具备的所有特性和功能

4、经得住双十一的考验,因为诞生于电商,所以它在响应延迟方面做了很多优化,它的响应大多在毫秒级别,如果需要响应时效的,可以考虑RocketMQ

5、性能比RabbitMQ要好,每秒处理几十万的消息量

【缺点】

它没有像RabbitMQ那样,支持多种语言,可能是因为阿里在设计的时候,是专门为电商设计的,所以就没有考虑为其他平台做兼容,不过对于我们Java的业务场景,大多数情况下是ok的


Kafka?

【背景】?

是一个分布式流媒体平台,Apache出品的一款开源流处理平台

【优点】

1、默认是异步发送和接收消息的,所以性能是杠杠的,比RocketMQ和RabbitMQ都要好,如果是异步并且开启了消息压缩,那Kafka可以达到每秒两千万的消息处理量

2、兼容性也是数一数二的,尤其是大数据和流计算领域,几乎所有相关的开源软件都支持Kafka

3、性能佳,可伸缩,支持消息持久化、分区、副本和容错

4、基于Scala和Java开发的,为啥上面提到对大数据领域比较适用,Scala的衍生品Spark不知道你们有没有听说,是一款大数据领域下很热门的新一代内存级大数据计算框架,所以知道为啥Kafka适用于大数据领域了吧

【缺点】

因为Kafka在批处理和异步方面做了大量的设计和优化,性能是非常好了,但是延迟也会特别高,不适合电商场景


总结?

就我司的场景来说,典型的电商,果断还是选择RocketMQ作为主力,Kafka的应用一般用在日志采集方面,毕竟他是异步的,而且日志的打印也是非常庞大的,RabbitMQ的力度相对就比较小了但是一些特定场景使用RabbitMQ也是没有问题的?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:15:14  更:2022-05-07 11:15:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:14:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码