kafka与rocketmq优劣势_kafka rocketmq rabbitmq

kafka与rocketmq优劣势_kafka rocketmq rabbitmq前言:公司采用了两种消息队列,一种是阿里云的rocketMQ,一种是kafka.分别用在了两种不同的场景.这里做个记录.rocketMQ使用场景:1.异步解耦:拿我们的项目举例,有一个场景,是需要pc端触发派单接口,然后发送给app端消息通知.此时要求能够做到每个app都能收到消息,但是又希望这个发送的过程尽量的短,也就是派单接口尽量快.那么这个派送的过程可以采用rocketM…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言:

公司采用了两种消息队列,一种是阿里云的rocketMQ,一种是kafka.分别用在了两种不同的场景.这里做个记录.

rocketMQ

使用场景:

1.异步解耦:

拿我们的项目举例,有一个场景,是需要pc端触发派单接口,然后发送给app端消息通知.此时要求能够做到每个app都能收到消息,但是又希望这个发送的过程尽量的短,也就是派单接口尽量快.那么这个派送的过程可以采用rocketMQ去进行异步处理这个过程.使这个接口能够尽快的给pc端的用户响应,已经派工成功的通知.这个场景就是异步解耦.派工的过程在消息系统中去通过rocketMQ去异步处理.这样起到解耦的作用.并且rocketMQ的广播模式能够保证每个app都能够消费到消息.

2.事务消息:

拿公司支付举例,微信支付的时候想要快速的回应微信的回调.以便让微信知道我们已经收到回调了.尽快改变支付状态就可以了.而我们这边需要再回调中做大量的逻辑处理,如修改订单状态,发送短信等操作.那么这些操作可能耗时很久,使用rocketMQ可以解决耗时久的问题.但是同时又产生一个问题,就是需要保证rocketMQ去修改订单状态的过程是事务性的.不然微信那边已经通知支付成功.但是我们这里状态却没变.这就会让客户认为我钱白付了,又会重复支付的问题.所以rocketMQ的事务消息能够做到事务性.也就是消息的回调处理,我们可以在消费者端去处理完修改订单状态逻辑之后,收到rocketMQ的一个回调通知,报告是否可以提交消息的事务.如果回调中说明修改订单状态有误.我就可以在回调中做消息的补偿处理(修改订单状态.)直到我们的状态更改成功.

3.削峰填谷

拿派单来说,一旦用户群体过多.比如我们公司会在年底某一天搞活动,派单越多,奖励越多,那么使用量上来之后,一定会产生高并发的问题,造成崩溃,影响用户体验的问题.此时我们可以采用mq去解决这种问题.mq最大的好处就是可以让消息不丢失.只要消息发出去了.就能保证消费者一定能够收到.

4.顺序收发

我们没用到,场景如一些游戏平台需要保证优先注册的五百名可以收到5000元奖励,那么要保证消息处理时的五百名一定是实际的顺序.才能做到公平公正.

5.定时消息和延时消息

顾名思义,rocketmq支持一种场景,就是你的某些逻辑需要在特定时间执行.比如我想三十分钟后执行我的逻辑(微信支付三十分钟后如果没有支付,我就停掉该订单的锁定).或者我想在每天早上9点发送短息给客户.都可以采用这种消息类型.

…..可以结合自身场景进行对比使用.

 

kafka

kafka不支持事务消息,支持消息顺序,但是一台代理宕机后,就会产生消息乱序.而rocketMQ不会出现消息乱序,不支持定时消息

使用场景:

1.收集日志.

我们公司系统的分布式日志收集系统,采用的是elk+kafka设计,可参考(六) elasticsearch手把手搭建生产环境ELK加kafka实现终极版日志收集系统.因为kafka每秒可以处理百万条10字节的消息,并且可以持久化数据都磁盘.kafka可以横向扩展,当你需要进行大量数据的持久化存储时,kafka是你的不二之选.可将Kafka视为一种专用于高性能,低延迟提交日志存储,复制和传播的专用分布式文件系统。

2.异步解耦.

同rocketMQ.解耦和生产者和消费者、缓存消息等

3.跟踪用户动作

对于我们的网站,我们想要知道网站哪些模块被用户点击浏览的的最多,进而分析用户的操作习惯.定位哪些模块的点击,浏览等.都可以进行消息的发布和订阅做到实时的监控.

4.分布式流平台

It is possible to do simple processing directly using the producer and consumer APIs. However for more complex transformations Kafka provides a fully integrated Streams API. This allows building applications that do non-trivial processing that compute aggregations off of streams or join streams together.

This facility helps solve the hard problems this type of application faces: handling out-of-order data, reprocessing input as code changes, performing stateful computations, etc.

Kafka中,流处理器是指从输入主题中获取连续数据流,对该输入进行一些处理并生成连续数据流以输出主题的任何东西

可以直接使用生产者和消费者API进行简单处理。但是,对于更复杂的转换,Kafka提供了完全集成的Streams API。这允许构建执行非重要处理的应用程序,这些应用程序计算流的聚合或将流连接在一起。

该功能有助于解决此类应用程序所面临的难题:处理无序数据,在代码更改时重新处理输入,执行状态计算等。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183765.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 自动补全_eclipse自动补全的设置[通俗易懂]

    java 自动补全_eclipse自动补全的设置[通俗易懂]如果你用过VisualStudio的自动补全功能后,再来用eclipse的自动补全功能,相信大家会有些许失望。但是eclipse其实是非常强大的,eclipse的自动补全没有VS那么好是因为eclipse的补全功能用的是默认设置。你只需要稍微修改一下就行了。最简单的修改方式是:Windows——>Preferences——>Java–>Editor–>Content…

    2022年10月8日
    0
  • win32api python 手册_windows api如何使用

    win32api python 手册_windows api如何使用本文整理汇总了Python中win32api.GetSystemMetrics方法的典型用法代码示例。如果您正苦于以下问题:Pythonwin32api.GetSystemMetrics方法的具体用法?Pythonwin32api.GetSystemMetrics怎么用?Pythonwin32api.GetSystemMetrics使用的例子?那么恭喜您,这里精选的方法代码示例或许可以为您…

    2022年10月11日
    0
  • STM32 看门狗和嘀嗒定时器

    STM32 看门狗和嘀嗒定时器看门狗一个定时器,独立的定时器,对单片机CPU进行监控,一旦CPU的程序出现错误,或者电压过低使单片机出现任何意外情况,看门狗就会给单片机复位使单片机回到初始状态。单片机就会从错误中脱离出来。看门狗–是一个定时器,供能–计数。每隔一段时间就喂狗–计数清零,重新计时,程序出错不能喂狗,得复位。独立看门狗独立看门狗是基于一个12位的递减计数器和一个8位的预分频器。他有一个内部独立的40KHz的RC振荡器提供时钟;因为这个RC振荡器独立于主时钟,所以他可运行于停机和待机模式。它可以被当成看门狗用于在发生问

    2022年5月26日
    41
  • bytebuf池_Netty ByteBuf[通俗易懂]

    bytebuf池_Netty ByteBuf[通俗易懂]ByteBufByteBuf需要提供JDKByteBuffer的功能(包含且不限于),主要有以下几类基本功能:7种Java基础类型、byte[]、ByteBuffer(ByteBuf)的等的读写缓冲区自身的copy和slice设置网络字节序构造缓冲区实例操作位置指针扩容原理首先确认ByteBuf是否已经被释放,如果被释放,则抛出IllegalReferenceCountException异常判断…

    2022年9月19日
    0
  • Expand命令_copy命令的用法

    Expand命令_copy命令的用法使用Expand命令行可以在计算机没有安装Windows操作系统的情况下应用批处理文件和脚本:虽然有多个基于Windows的工具可以压缩和解压缩文件(包括WinZip和WinRAR),但是必须有一个可以工作的Windows操作系统才能使用它们。Expand工具用来压缩的WndowsCAB文件中展开文件,并把释放出来的文件保存在磁盘的指定目录内。这个工具通常用来从Windows安装

    2025年6月11日
    0
  • 数仓分层(ODS、DWD、DWS、DWT、ADS)和数仓建模

    数仓分层(ODS、DWD、DWS、DWT、ADS)和数仓建模文章目录一、数仓分层数仓概念ODS(原始数据层)做了哪些事DWD(明细数据层)做了哪些事DWS(服务数据层)做了哪些事DWT(主题数据层)做了哪些事ADS(应用数据层)做了哪些事二、数仓建模常用的建模工具ODS层DWD层DWS层DWT层ADS层一、数仓分层数仓概念什么是数仓:数据仓库是为企业所有决策制定过程,提供所有系统数据支持的战略集合。通过对数据仓库中数据的分析,可以帮助企业改进业务流程、控制成本、提高产品质量等。数据仓库并不是数据的最终目的地,而是为数据最终的目的地做好准备。这些准

    2022年6月26日
    61

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号