• kafka,activemq,rabbitmq,rocketmq都有什么区别?


    对于吞吐量来说kafka和rocketmq支持高吞吐,activemq和rabbitmq比他们低一个数量级。对于延迟量来说rabbitmq是最低的

    1.从社区活跃度

    按照目前网络上的资料,rabbitmq、activemq、zeromq三者中,综合来看,rabbitmq是首选

    2.持久化消息比较

    activemq和rabbitmq都支持。持久化消息主要是指我们机器在不可抗力因素等情况下挂掉了,消息不会丢失的机制

    3.综合技术实现

    可靠性、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件系统等等

    rabbitmq/kafka最好,activemq次子,zeromq最差。当然zeromq也可以做到,不过自己必须手动写代码实现,代码量不少。尤其是可靠性中的:持久化、投递确认、发布者证实和高可用性

    4.高并发

    rabbitmq最高,原因是它的实现语言是天生具备高并发高可用的erlang语言。

    5.比较关注的比较,rabbitmq和kafka

    rabbitmq比kafka成熟,在可用性上,稳定性上,可靠性上,rabbitmq胜于kafka(理论上)。另外,kafka的定位主要在日志等方面,因为kafka设计的初衷就是处理日志的,可以看做是一个日志(消息)系统一个重要组件,针对性很强,所有如果业务方面还是建议选择rabbitmq。还有就是,kafka的性能(吞吐量、TPS)比rabbitmq要高出来很多

    设置mq的思路

    比如说这个消息队列系统,我们从以下几个角度来考虑一下:

    首先这个 mq 得支持可伸缩性吧,就是需要的时候快速扩容,就可以增加吞吐量和容量,那怎么搞?设计个分布式的系统呗,参照一下kafka 的设计理念,broker -> topic -> partition,每个 partition 放一个机器,就存一部分数据。如果现在资源不够了,简单啊,给 topic增加 partition,然后做数据迁移,增加机器,不就可以存放更多数据,提供更高的吞吐量了?

    其次你得考虑一下这个 mq 的数据要不要落地磁盘吧?那肯定要了,落磁盘才能保证别进程挂了数据就丢了。那落磁盘的时候怎么落啊?顺序写,这样就没有磁盘随机读写的寻址开销,磁盘顺序读写的性能是很高的,这就是 kafka 的思路。

    其次你考虑一下你的 mq 的可用性啊?这个事儿,具体参考之前可用性那个环节讲解的 kafka 的高可用保障机制。多副本 -> leader &follower -> broker 挂了重新选举 leader 即可对外服务。能不能支持数据 0 丢失啊?可以的,参考我们之前说的那个 kafka 数据零丢失方案

  • 相关阅读:
    怎么通过docker/portainer部署vue项目
    Java设计模式之亨元模式(Flyweight Pattern)
    网络安全基础入门-概念名词
    Magic Copy 抠图神器,非专业人士的福音。
    温故而知新二(C++)
    CsPbCl3钙钛矿量子点CsPbCl3 QDs发射波长410±10nm
    技术成神之路:设计模式(一)单例模式
    国际站阿里云服务器无法安装程序怎么办?
    c++字符串相关接口
    软考系列(系统架构师)- 2021年系统架构师软考案例分析考点
  • 原文地址:https://blog.csdn.net/weixin_47541976/article/details/126297185