上才艺
1. notify
优点:实时性高;缺点:缓存、磁盘存储量不高
2. metaq
优点:可靠性高;缺点:吞吐率不高
3. 与kfk的对比
Notify | Metaq | Kafka | |
元数据管理者 | NameServer | zookeepers(负责选举,均衡,meta记录,消费记录) | |
消息获取方式 | 推模式 | 拉模式,长轮询 | 拉模式,长轮询 |
持久化 | 持久化、非持久化同时存在,写磁盘的时候操作系统cache没有同步到磁盘时就非持久化 | 所有消息持久化 | 所有消息持久化 |
持久化方式 | 缓存、数据库、磁盘文件均可 | 存储在commitlog文件 | 存储在partition目录的segment.meta文件中 |
有序性 | 不能保证有序性 | 局部有序或全局有序 | 局部有序或全局有序 |
消费机制 | 所有订阅topic的消费者都能消费消息 | 消息只能被同一Group中的一个Consumer消费,可以被不同Group的多个消费者消费 | 消息只能被同一Group中的一个Consumer消费,可以被不同Group的多个消费者消费,因为同一CG在zk中维护共同维护对一个topic的消费pos |
失败处理 | 消息推送后,由callback等待消费端的ack(最多5秒钟),失败的将consumerId存储到f ailtarget,Notify Server会有后台线程扫描未删除的记录,重新投递给消费失败的消费者,重试期间受集群整体的堆积量影响 | ⾸次消费和再次重试逻辑上和其他消费者隔离,乱序消费由broker控制重试,顺序消费则在消费端本地重试、服务端队列阻塞消费 | 消费端控制消息的消费,并由zookeeper维护读的offset。 |
堆积能⼒ | 消息堆积能⼒弱,当消费端消费能力弱时,这种方法不适用 | 堆积能力强,受磁盘⼤⼩影响,亿级的消息堆积能⼒ | |
实时性 | 到达即推送,实时性高于metaq | 实时,由消费端配置决定拉取消息的频率 | kafka同时支持离线数据处理和实时数据处理 |
吞吐率 | 写很慢,读很快 | 写很快(顺序写磁盘的速度比随机写内存还快),读很慢,整体吞吐率比kafka低一些,数据量增加时会出现性能下降 | 批量顺序读写,时间复杂度为O(1);性能与数据量多少无关(TB级),适合处理大数据,高吞吐,100k条/s |