1. 有pub/sub功能,同步和异步都支持,producer.type项设置

  2. 单条消息的上限用max.message.size项设置

  3. 消息可能有丢失,在consumer宕机后消息可能有重复投递

  4. 同一个partition内保证消息顺序,多个partition不保证

  5. 支持异步发送消息,可配置producer使得在一定时间后发送消息,或是消息累积到一定量后再发送

  6. 支持Scala、Java、C++、C#、Go、PHP、Python、Ruby,PHP需要5.3.3版本以上

  7. PHP版本的client功能还不够丰富

  8. 支持持久化,消息存储在磁盘上,复杂度为O(1)

  9. 没有消费反馈,哪些消息已消费由consumer维护(通过记录一个offset值),consumer也可以回滚到以前的位置,重新读取之前读取过的消息

  10. 异步方式可支持消息的延时投递,queue.time项设置

  11. 单个队列能够承受的消息容量的极限由queue.size项设置

  12. 没有固定的协议

  13. 消息的状态由客户端维护,服务端不参与,服务端会在消息保存一定时间(默认为7天)后将其删除

  14. 每个consumer进程属于一个consumer group,一个message只被发给同一个consumer group中的一个consumer进程,因此可以支持queue和topic两种语义

  15. producer发送消息后,broker不会发送ACK给producer

  16. consumer与broker间有负载均衡

  17. 在linux系统上使用sendfile系统调用,通过zero-copy技术达到很高的效率

  18. 部署难度一般,配置管理还算方便

  19. 最新版支持副本机制,解决了单点故障问题

  20. 最新版支持镜像功能,可支持消息迁移,但还不太成熟,限制较多,如只能使用默认的patitioner等

  21. 水平扩展方便,对业务无影响,Zookeeper管理consumer和broker的加入和退出

  22. 也可以不依赖Zookeeper,那么事先需要在配置文件中指定机器信息,集群是静态的,不能变动

  23. 消息支持压缩,节省网络开销,目前只支持gzip格式

  24. 有安全机制和监控机制

  25. 数据可批量导入hadoop,做离线数据分析

  26. 设计指导思想是注重吞吐率更胜于注重功能特性

  27. 未来会支持流式处理

  28. Scala语言实现,代码行数不到6K,语言不熟悉但代码量不大

  29. 开发较活跃,用户量较多,目前还在增长中

本文固定链接: http://www.js-code.com/cpp/cpp_59455.html