无废话技术选型之--消息中间件选型(rabbitMQ、rocketMQ、kafka)

0-前言

  消息中间件在高并发系统中作用尤为重要,几乎必不可少,现在几乎都是rabbitMQ、rocketMQ、kafka的天下,

  其他的请忘了它们;

1-消息中间件的作用

  提升系统性能;系统解耦;大流量削峰;

2-rabbitMQ、rocketMQ、kafka对比

kafka:

优点:

  1、高吞吐量、高性能,单机十几万QPS

  2、Kafka支持集群部署

缺点:

  1、有可能会造成数据丢失

  2、功能单一,主要就是收发消息;缺少高级功能;

rabbitMQ:

优点:

  1、保证数据不丢失;

  2、高可用,有高级功能;如消息重试、死信队列等

缺点:

  1、性能较低,QPS几万;

  2、集群线性扩展麻烦;

  3、erlang实现,懂得人不多,二次开发困难;

rocketMQ:

优点:

  1、高吞吐量、高性能,单机十万QPS

  2、保证数据绝对不丢失

  3、支持大规模集群部署,线性扩展方便

  4、支持各种高级的功能,如延迟消息、消息回朔等

  5、java实现,二次开发方便

缺点:

  1、比kafka性能略低

3-如何选择

1、小项目可以选择rabbitMQ,性能略低,但使用和部署都简单;

2、性能要求极高,且能允许丢失部分数据,可以选择kafka,比如大数据日志处理相关场景;

3、除以上之外,rocketMQ无疑是一步到位的方案;

 

实际项目中,rocketMQ是首选;个人墙裂推荐;

实际上,除了大数据处理上适当考虑增加kafka,其他时候,rocketMQ就已经一劳永逸了;

posted @ 2020-08-10 17:43  程序员恒哥  阅读(1341)  评论(0编辑  收藏  举报