MQ消息队列选型

消息队列在实际应用中常用的使用场景:异步处理,应用解耦,流量削锋和消息通讯四个场景,保证最终一致性

先看下云平台商用的消息队列的使用对比吧

1.产品对比(腾讯云)

腾讯云上面的mq,主要有CMQ,CKAFKA,消息队列IoT MQ

CMQ:在需要进行异步通信的应用情景中推荐使用 CMQ;同时 CMQ 保证不丢失消息,其可广泛应用于金融、电商订单、支付结算等对数据可靠性要求极高的场景中

CKafka:适用于吞吐量非常大的大数据处理场景。

IoT MQ:消息队列 IoT MQ 适用于需要低功耗、网络吞吐有限、网络质量差的 IOT(物联网)和移动互联网场景

应用案例:

微信红包


2.产品对比(引用阿里云官网):

功能消息队列 RocketMQApache RocketMQ
(开源)
消息队列 KafkaApache Kafka
(开源)
RabbitMQ
(开源)
安全防护支持不支持支持不支持支持
主子账号支持支持不支持支持不支持不支持
可靠性- 同步刷盘 
- 同步双写 
- 超3份数据副本 
- 99.99999999%
- 同步刷盘
- 异步刷盘
- 同步刷盘 
- 同步双写 
- 超3份数据副本 
- 99.99999999%
异步刷盘,丢数据概率高同步刷盘
可用性- 非常好,99.95%
- Always Writable
- 非常好,99.95%
- Always Writable
横向扩展能力- 支持平滑扩展
- 支持百万级 QPS
支持- 支持平滑扩展
- 支持百万级 QPS
支持- 集群扩容依赖前端
- LVS 负载均衡调度
Low Latency支持不支持支持不支持不支持
消费模型Push / PullPush / PullPush / PullPullPush / Pull
定时消息支持(可精确到秒级)支持(只支持18个固定 Level)暂不支持不支持支持
事务消息支持不支持不支持不支持不支持
顺序消息支持支持暂不支持支持不支持
全链路消息轨迹支持不支持暂不支持不支持不支持
消息堆积能力百亿级别
不影响性能
百亿级别
影响性能
百亿级别
不影响性能
影响性能影响性能
消息堆积查询支持支持支持不支持不支持
消息回溯支持支持支持不支持不支持
消息重试支持支持暂不支持不支持支持
死信队列支持支持不支持不支持支持
性能(常规)非常好
百万级 QPS
非常好
十万级 QPS
非常好
百万级 QPS
非常好
百万级 QPS
一般
万级 QPS
性能(万级 Topic 场景)非常好
百万级 QPS
非常好
十万级 QPS
非常好
百万级 QPS
性能(海量消息堆积场景)非常好
百万级 QPS
非常好
十万级 QPS
非常好
百万级 QPS
引用地址: https://www.aliyun.com/product/ons?spm=5176.8142029.388261.399.a7236d3eBWUT7W
百度云平台只提供kafka的商用版:
参见: https://cloud.baidu.com/product/kafka.html

3.各个开源消息队列主要关注点和实现方式:

rabbitmq消息发送接收原理:

参见官网:http://www.rabbitmq.com/getstarted.html

消息的几种发送接收类型

exchange有四种类型:分别是Direct exchange、Fanout exchange、Topic exchange、Headers exchange。


几个概念说明: 
Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输, 
Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。 
Queue:消息的载体,每个消息都会被投到一个或多个队列。 
Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来. 
Routing Key:路由关键字,exchange根据这个关键字进行消息投递。 
vhost:虚拟主机,一个broker里可以有多个vhost,用作不同用户的权限分离。 
Producer:消息生产者,就是投递消息的程序. 
Consumer:消息消费者,就是接受消息的程序. 

Channel:消息通道,在客户端的每个连接里,可建立多个channel.

高可用部署方案有两种模式:普通模式和镜像模式

    集群类型:普通集群、镜像集群

  • 普通集群:结构同步,消息实体只存在一个节点中,但consumer在非消息节点获取是,节点间存在消息拉取,易产生性能瓶颈。
  • 镜像集群:集群中一个master,负责调度,处理消息实体,其他节点保存一份数据到本地;性能主要靠master承载。

参考官网文档:http://www.rabbitmq.com/clustering.html#starting

运维管理:

rabbitmq提供管理的web插件


rocketmq消息发送接收原理:

消息发送、消费模型,详见官方文档:http://rocketmq.apache.org/,原理图:

可以实现消息发送时指定topic的一个队列来实现顺序消费, 可以支持顺序消费和消息回溯,可以支持按照messageKey来查询消息


高可用集群部署方案,broker部署主从模式


运维管理:

rocketmq提供管理的web-console


kafka:

消息发送接收机制:



kafka 应用场景

  • 日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。
  • 消息系统:解耦和生产者和消费者、缓存消息等。
  • 用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
  • 运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
  • 流式处理:比如spark streaming和storm
  • 事件源

参考各大云平台对Kafka的使用说明可以看出kafka适合于海量数据的处理系统中

官方使用案例说明:http://kafka.apache.org/uses

4.腾讯云平台CMQ

参考:CMQ后台

CMQ是rabbitmq的升级版,支持mq的消息回溯,对消息的超时策略等做了简单的优化

腾讯云平台使用地址:https://console.cloud.tencent.com/mq/index?rid=1

cmq队列参数为:

y

添加主题订阅可以设置重试的策略:


订阅地址官方文档中说明:目前推送服务不能推送到私有网络中,因此 endpoint 填写为私有网络域名或地址将接收不到推送的消息,目前支持推送到公网和基础网络。

文档地址:https://cloud.tencent.com/document/product/406

二、我们的业务场景

1.订单消息分发,特点:消息时效性高,消息不能丢失,优先级高

可以使用rabbitmq,rocketmq,cmq

2.日志收集分析,特点:数据量大,优先级低,

可以使用ELK解决方案,使用kafka,redis,rocketmq做消息队列

3.数据分库分表后数据异构,特点:消息及时性和顺序性,优先级中

可以使用rocketmq来保证消息顺序可靠传输


参考文章:https://blog.csdn.net/whoamiyang/article/details/54954780

参考文章:https://blog.csdn.net/woogeyu/article/details/51119101

rabbitmq中交换机参考文章:https://blog.csdn.net/rainday0310/article/details/22082503

rabbitmq普通集群和镜像集群参考:https://blog.csdn.net/yangbutao/article/details/10982391

rocketmq消息发送接收相关参考:https://blog.csdn.net/wuzhengfei1112/article/details/78076718

rocketmq相关核心原理参考:https://m.aliyun.com/yunqi/articles/66110

KAFKA相关文章:

https://blog.csdn.net/suifeng3051/article/details/48053965

https://blog.csdn.net/xlgen157387/article/details/77211729







  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧农业是一种结合了现代信息技术,包括物联网、大数据、云计算等,对农业生产过程进行智能化管理和监控的新模式。它通过各种传感器和设备采集农业生产中的关键数据,如大气、土壤和水质参数,以及生物生长状态等,实现远程诊断和精准调控。智慧农业的核心价值在于提高农业生产效率,保障食品安全,实现资源的可持续利用,并为农业产业的转型升级提供支持。 智慧农业的实现依赖于多个子系统,包括但不限于设施蔬菜精细化种植管理系统、农业技术资料库、数据采集系统、防伪防串货系统、食品安全与质量追溯系统、应急追溯系统、灾情疫情防控系统、农业工作管理系统、远程诊断系统、监控中心、环境监测系统、智能环境控制系统等。这些系统共同构成了一个综合的信息管理和服务平台,使得农业生产者能够基于数据做出更加科学的决策。 数据采集是智慧农业的基础。通过手工录入、传感器自动采集、移动端录入、条码/RFID扫描录入、拍照录入以及GPS和遥感技术等多种方式,智慧农业系统能够全面收集农业生产过程中的各种数据。这些数据不仅包括环境参数,还涵盖了生长状态、加工保存、检验检疫等环节,为农业生产提供了全面的数据支持。 智慧农业的应用前景广阔,它不仅能够提升农业生产的管理水平,还能够通过各种应用系统,如库房管理、无公害监控、物资管理、成本控制等,为农业生产者提供全面的服务。此外,智慧农业还能够支持政府监管,通过发病报告、投入品报告、死亡报告等,加强农业产品的安全管理和质量控制。 面对智慧农业的建设和发展,存在一些挑战,如投资成本高、生产过程标准化难度大、数据采集和监测的技术难题等。为了克服这些挑战,需要政府、企业和相关机构的共同努力,通过政策支持、技术创新和教育培训等手段,推动智慧农业的健康发展。智慧农业的建设需要明确建设目的,选择合适的系统模块,并制定合理的设备布署方案,以实现农业生产的智能化、精准化和高效化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值