kafka简单介绍

Kafka是由LinkedIn开发并开源的消息系统,现广泛用于构建高吞吐量的数据管道和消息系统。它通过解耦合的方式,允许消息在生产者和消费者之间高效传输。Kafka的核心组件包括Broker、Topic、Partition、Producer和Consumer,其中Broker负责消息的存储和管理,Topic用于分类消息,而Partition则实现了数据的分布存储和高可用性。

参考资料:https://www.ibm.com/developerworks/cn/opensource/os-cn-kafka/index.html

                  https://www.jianshu.com/p/b8cea98c17b3

                  http://www.cnblogs.com/seaspring/p/6138080.html

 

Kafka 是一个消息系统,原本开发自 LinkedIn,用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础

使用kafka的优势:实现了解耦合

  • Kafka 专用术语

Broker:Kafka 集群包含一个或多个服务器,这种服务器被称为 broker。(多个broker解决负载问题,当然也可以只有一个broker)

Topic:每条发布到 Kafka 集群的消息都有一个类别,这个类别被称为 Topic。(物理上不同 Topic 的消息分开存储,逻辑上一个 Topic 的消息虽然保存于一个或多个 broker 上,但用户只需指定消息的 Topic 即可生产或消费数据而不必关心数据存于何处)。

Partition:Partition 是物理上的概念,每个 Topic 包含一个或多个 Partition。

Producer:负责发布消息到 Kafka broker。(可以是其他组件也可以是自定义的服务等,只要需要消息传递都可以使用)

Consumer:消息消费者,向 Kafka broker 读取消息的客户端。

Consumer Group:每个 Consumer 属于一个特定的 Consumer Group(可为每个 Consumer 指定 group name,若不指定 group name 则属于默认的 group)。

 

Kafka各组件说明

Broker

每个kafka server称为一个Broker,多个borker组成kafka cluster。

 

 

一个机器上可以部署一个或者多个Broker,这多个Broker连接到相同的ZooKeeper就组成了Kafka集群。

Topic

Kafka是一个发布订阅消息系统,它的逻辑结构如下:

 

Topic 就是消息类别名,一个topic中通常放置一类消息。每个topic都有一个或者多个订阅者,也就是消息的消费者consumer。

Producer将消息推送到topic,由订阅该topic的consumer从topic中拉取消息。

Topic 与broker

一个Broker上可以创建一个或者多个Topic。同一个topic可以在同一集群下的多个Broker中分布。

 

 

 

Partition log

Kafka会为每个topic维护了多个分区(partition),每个分区会映射到一个逻辑的日志(log)文件:

 

每当一个message被发布到一个topic上的一个partition,broker应会将该message追加到这个逻辑log文件的最后一个segment上。这些segments 会被flush到磁盘上。Flush时可以按照时间来进行,也可以按照message 数来执行。

每个partition都是一个有序的、不可变的结构化的提交日志记录的序列。在每个partition中每一条日志记录都会被分配一个序号——通常称为offset,offset在partition内是唯一的。论点逻辑文件会被化分为多个文件segment(每个segment的大小一样的)。

         Broker集群将会保留所有已发布的message records,不管这些消息是否已被消费。保留时间依赖于一个可配的保留周期。例如:如果设置了保留策略是2day,那么每一条消息发布两天内是被保留的,在这个2day的保留时间内,消息是可以被消费的。过期后不再保留。

 

  

 

Partition distribution

日志分区是分布式的存在于一个kafka集群的多个broker上。每个partition会被复制多份存在于不同的broker上。这样做是为了容灾。具体会复制几份,会复制到哪些broker上,都是可以配置的。经过相关的复制策略后,每个topic在每个broker上会驻留一到多个partition。如图:

 

 

 

如果要了解kafka如何进行partition、replica 分配的,可以参考:

http://www.cnblogs.com/yurunmiao/p/5550906.html

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值