分布式消息队列kafka

kafka是Linkedin开源的分布式发布-订阅消息系统(消息队列)

kafka特点

1 高吞吐率、低延迟,每秒处理几十万消息,延迟最低几毫秒

2 可扩展性,支持动态扩展节点数据

3 持久性与可靠性,数据被持久化磁盘,支持数据多副本防止数据丢失

4 高容错,允许节点失败

5 高并发,支持上千个客户端同时读写


架构如图


kafka:produce

1 向broker发送消息

2 可通过任意一个broker发现其他broker的位置信息

3 消息组成 topic key value timestamp


kafka:broker

1 producer和consumer之间的桥梁

   从producer端接收消息,并保存下来

   将消息发送给订阅的consumer

2 可将消息可靠地缓存一段时间

   每个消息保存成多副本(默认3)

   可设置保存时间(默认时间)


kafka:partition与topic

topic

  用户划分message的逻辑概念,一个topic可以分布到不通的broker上

partition

  kafka横向扩展和一切并行化的基础,每个topic至少分成1个partition

  消息在partition中是有编号的,称为“offset”

  kafka以partition为单位对消息进行备份(replica),每个partition可以配置至少有1个replica


kafka:consumer

  负责从kafka中读取数据,并进行处理

Consumer group

  多个consumer可形成一个group,同时读取某个topic。

  每个consumer读取一个或多个partition

Consumer position

  每个consumer自己维护读取的位置(offset,一旦挂掉后,重启可继续读取)




kafka架构图


kafka:服务保证

顺序保证

  同一个producer发送到单个topic的同一partition的消息是顺序的

  Consumer按照消息在日志中的写入顺序读取消息

Producer产生的数据由Consumer消费

容错

  如果消息的副本数是N,则N-1台机器宕机后不会导致丢失数据

应用场景 :监控 、消息队列、站点的用户活动追踪 、流处理、



上一篇:magento -- 项目迁移后无法在线安装插件问题的解决


下一篇:magento -- 开发必备插件一