Kafka的一些特色

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

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

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

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

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

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

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

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

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

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

  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. 开发较活跃,用户量较多,目前还在增加中

相关文章
相关标签/搜索