Kafka

Kafka体系架构=M个producer +N个broker +K个consumer+ZK集群


broker:服务代理节点,Kafka服务实例

多个broker组成一个Kafka集群,通常一台机器部署一个Kafka实例,一个实例宕机了其他实例仍可以使用,体现了高可用


producer:生产者

消息的发送端,按topic发送消息


consumer:消费者

消费topic 的消息, 一个topic 可以让若干个consumer消费,若干个consumer组成一个 consumer group ,一条消息只能被consumer group 中一个consumer消费,若干个partition 被若干个consumer 同时消费,达到消费者高吞吐量


topic :主题

按业务划分不同消息类别


partition:分区

 一个topic 可以拥有若干个partition(从 0 开始标识partition ),分布在不同的broker 上, 实现发布与订阅时负载均衡。producer 通过自定义的规则将消息发送到对应topic下某个partition,以offset标识一条消息在一个partition的唯一性。

“同一主题下的分区有没有可能到不同的borker上?” ——非常可能,而且也是期望的结果。


replica:副本

一个partition拥有多个replica,提高容灾能力。

replica 包含两种类型:leader 副本、follower副本,

leader副本负责读写请求,follower 副本负责同步leader副本消息,通过副本选举实现故障转移。

partition在机器磁盘上以log 体现(以最小消息offer命名,使用二分查找提高搜索效率), 采用顺序追加日志的方式添加新消息,降低随机插入时的性能损耗,实现高吞吐量。

“同一分区的副本有没有可能在不同的borker上” —— 必须如此。同一分区的不同副本必然在不同的broker上。


关于分区与消费疑问

1. 主题中的每个分区都只会被消费组内的一个消费者实例消费,其他消费者实例不能消费它。

2. 假设组内某个实例挂掉了,Kafka 能够自动检测到,然后把这个 Failed 实例之前负责的分区转移给其他活着的消费者。

3. 在一个消费者组下,一个分区只能被一个消费者消费,但一个消费者可能被分配多个分区,因而在提交位移时也就能提交多个分区的位移。

4. 如果1个主题有2个分区,消费者组有3个消费者,那至少有1个消费者闲置?是的。有一个消费者将无法分配到任何分区,处于idle状态。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 3. 分布式发布订阅消息系统Kafka 3.1 Kafka概述 Kafka官网(http://kafka.apac...
    牦牛sheriff阅读 4,871评论 0 4
  • 一、前言,所谓消息队列 一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个...
    Megahorn阅读 4,369评论 0 0
  • Kafka 是一个java开发的mq中间件,依赖于zookeper,有高可用,高吞吐量等特点。 优势 可靠性:pa...
    何笙阅读 15,172评论 1 9
  • 摘自Jason’s Blog,原文链接http://www.jasongj.com/2015/01/02/Kafk...
    谁动了MyWorld阅读 3,192评论 0 5
  • 两年多了,何时才是个头。你说你放过我,我说希望你放过我,究竟是怎样的放过我。我拜托你,真的放过我吧。我们LH吧,真...
    小金主007阅读 1,288评论 0 0

友情链接更多精彩内容