有pub/sub功能,同步和异步都支持,producer.type项设置
单条消息的上限用max.message.size项设置
消息可能有丢失,在consumer宕机后消息可能有重复投递
同一个partition内保证消息顺序,多个partition不保证
支持异步发送消息,可配置producer使得在一定时间后发送消息,或是消息累积到一定量后再发送
支持Scala、Java、C++、C#、Go、PHP、Python、Ruby,PHP需要5.3.3版本以上
PHP版本的client功能还不够丰富
支持持久化,消息存储在磁盘上,复杂度为O(1)
没有消费反馈,哪些消息已消费由consumer维护(通过记录一个offset值),consumer也可以回滚到以前的位置,重新读取之前读取过的消息
异步方式可支持消息的延时投递,queue.time项设置
单个队列能够承受的消息容量的极限由queue.size项设置
没有固定的协议
消息的状态由客户端维护,服务端不参与,服务端会在消息保存一定时间(默认为7天)后将其删除
每个consumer进程属于一个consumer group,一个message只被发给同一个consumer group中的一个consumer进程,因此可以支持queue和topic两种语义
producer发送消息后,broker不会发送ACK给producer
consumer与broker间有负载均衡
在linux系统上使用sendfile系统调用,通过zero-copy技术达到很高的效率
部署难度一般,配置管理还算方便
最新版支持副本机制,解决了单点故障问题
最新版支持镜像功能,可支持消息迁移,但还不太成熟,限制较多,如只能使用默认的patitioner等
水平扩展方便,对业务无影响,Zookeeper管理consumer和broker的加入和退出
也可以不依赖Zookeeper,那么事先需要在配置文件中指定机器信息,集群是静态的,不能变动
消息支持压缩,节省网络开销,目前只支持gzip格式
有安全机制和监控机制
数据可批量导入hadoop,做离线数据分析
设计指导思想是注重吞吐率更胜于注重功能特性
未来会支持流式处理
Scala语言实现,代码行数不到6K,语言不熟悉但代码量不大
开发较活跃,用户量较多,目前还在增长中
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。