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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VC6下的platform SDK安装方法[通俗易懂]

    VC6下的platform SDK安装方法[通俗易懂]最近要用到winpcap控件做个网络抓包的工具,把源码下载下来之后,文件包里面有源码,驱动,例子,lib等,装上驱动之后,运行例子,提示出现打不开IPHlpApi.Lib文件的错误,百度一下,原来是没有安装platformSDKforinternet,于是下载platformSDK,在网上找了好长时间,终于找到合适的了,因为据说现在最新版本不支持VC6了,所以比较不好找,platform

    2022年5月13日
    73
  • 代理服务器搭建和加密传输区别_如何自己搭建ip代理服务器

    代理服务器搭建和加密传输区别_如何自己搭建ip代理服务器一,简介和安装1.关于squidSquidCache(简称为Squid)是HTTP代理服务器软件。Squid用途广泛的,可以作为缓存服务器,可以过滤流量帮助网络安全,也可以作为代理服务器链中的一环,向上级代理转发数据或直接连接互联网。Squid程序在Unix一类系统运行。由于它是开源软件,有网站修改Squid的源代码,编译为原生Windows版;用户也可在Windows里安装

    2022年9月8日
    2
  • 2019前端技术栈梳理

    2019前端技术栈梳理首先 Mark 住值得参考的资料一个关于前端 后端和运维 roadmap 的网站 2016 年前端技术观察 2019 前端技术栈参考图图中关于前端技术栈主要分为三个阶段 1 前端基本功 HTML CSS JavaScript2 前端模块化 工具化 3 前端的深入学习比熊很赞同曹刘阳老师在 2016 年前端技术观察里提到的学好前端自己领域的知识 专一门 再去扩展其它领域知识 近几年前端技术更

    2025年8月30日
    0
  • servlet生命周期

    servlet生命周期servlet生命周期

    2022年4月23日
    39
  • 二十种电容分类详解(附常用电子元件实物图片大全)

    二十种电容分类详解(附常用电子元件实物图片大全)转载—嘉峪检测网2020-04-2320:50以下为正文:一、瓷介电容器(CC)1.结构用陶瓷材料作介质,在陶瓷表面涂覆一层金属(银)薄膜,再经高温烧结后作为电极而成。瓷介电容器又分1类电介质(NPO、CCG);2类电介质(X7R、2X1)和3类电介质(Y5V、2F4)瓷介电容器。2.特点1类瓷介电容器具有温度系数小、稳定性高、损耗低、耐压高等优点。最大容量不超过1000pF,常用的有CC1、CC2、CC18A、CC11、CCG等系列。2、3.

    2022年8月22日
    6
  • 与ClientWidth有关的一点资料「建议收藏」

    与ClientWidth有关的一点资料「建议收藏」51windows.Netvar s=””;s+=”网页可见区域宽:”+document.body.clientWidth;s+=”网页可见区域高:”+document.body.clientHeight;s+=”网页可见区域宽:”+document.body.offsetWidth +”(包括边线的宽)”;s+=”网页可见区域高:

    2022年7月22日
    14

发表回复

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

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