设为首页 加入收藏

TOP

Kafka组件
2019-04-20 02:22:46 】 浏览:47
Tags:Kafka 组件
版权声明:版权声明中 https://blog.csdn.net/lds_include/article/details/89363372

Kafka组件

Kafka核心组件

  • Topic :消息根据Topic进行归

  • Producer:发送消息者

  • Consumer:消息接受者

  • broker:每个kafka实例(server)

  • Zookeeper:依赖集群保存meta信息。

Kafka名词解释和工作方式

  • Producer :消息生产者,就是向kafka broker发消息的客户端。

    • 生产者复杂生产(采集)数据并把数据对接到kafka,比如flume、logstash,生产者往往会监控一个目录或者是一个服务负责把数据传到kafka
    • 生产者就群(组)是有多个进程组成,一个生产者是一个独立的进程
    • 多个生产者发送的数据可以存在同一个topic的同一个partition中
    • 一个生产者生产的数据可以同时传输到多个topic
    • 单个生产者具有数据分发的能力
  • Consumer :消息消费者,向kafka broker取消息的客户端

  • Topic :我们可以理解为一个队列。

  • Consumer Group (CG):这是kafka用来实现一个topic消息的广播(发给所有的consumer)和单播(发给任意一个consumer)的手段。一个topic可以有多个CG。topic的消息会复制(不是真的复制,是概念上的)到所有的CG,但每个partion只会把消息发给该CG中的一个consumer。如果需要实现广播,只要每个consumer有一个独立的CG就可以了。要实现单播只要所有的consumer在同一个CG。用CG还可以将consumer进行自由的分组而不需要多次发送消息到不同的topic。

  • Broker :一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。

  • Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体(多个partition间)的顺序。

  • Offset:kafka的存储文件都是按照offset.kafka来命名,用offset做名字的好处是方便查找。例如你想找位于2049的位置,只要找到2048.kafka的文件即可。当然the first offset就是00000000000.kafka。

Consumer与topic关系

本质上kafka只支持Topic;

  • 每个group中可以有多个consumer,每个consumer属于一个consumer group;
    通常情况下,一个group中会包含多个consumer,这样不仅可以提高topic中消息的并发消费能力,而且还能提高"故障容错"性,如果group中的某个consumer失效那么其消费的partitions将会有其他consumer自动接管。

  • 对于Topic中的一条特定的消息,只会被订阅此Topic的每个group中的其中一个consumer消费,此消息不会发送给一个group的多个consumer;那么一个group中所有的consumer将会交错的消费整个Topic,每个group中consumer消息消费互相独立,我们可以认为一个group是一个"订阅"者。

  • 在kafka中,一个partition中的消息只会被group中的一个consumer消费(同一时刻);一个Topic中的每个partition,只会被一个"订阅者"中的一个consumer消费,不过一个consumer可以同时消费多个partition中的消息。

  • kafka的设计原理决定,对于一个topic,同一个group中不能有多于partition个数的consumer同时消费,否则将意味着某些consumer将无法得到消息。kafka只能保证一个partition中的消息被某个consumer消费时是顺序的;事实上,从Topic角度来说,当有多个partitions时,消息仍不是全局有序的

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇从Kafka日志拆分来看系统架构 下一篇【Kafka】阿里云消息队列kafka 结..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目