kafka的运行及原理

什么是kafka

kafka是一个开源流处理平台,由java和scala编写。是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。kafka的目的是通过hadoop的并行加载机制来同意线上和离线的消息处理,也是为了通过集群来提供实时的消息。简单的来说,它就是一个消息中间件,天然分布式、支持集群的,专注于数据吃的存放缓存的。


相关术语

broker(经纪人):kafka服务器,用户存储消息的。kafka集群中一台或多台服务器被称为broker

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

producer(生产者):负责把消息发送到broker。

consumer(消费者):消息消费者,想kafka读取消息的客户端。

partition(分区):Partition是物理上的概念,每个Topic包含一个或多个Partition,例如:“kafka-test”这个Topic下可以分为6个分区,分别由两台服务器提供,那么通常可以配置为让每台服务器提供3个分区,假如服务器ID分别为0、1,则所有的分区为0-0、0-1、0-2和1-0、1-1、1-2。Topic物理上的分组,一个 topic可以分为多个 partition,每个 partition 是一个有序的队列。partition中的每条消息都会被分配一个有序的 id(offset)。

offset(偏移量):消息存储在Kafka的Broker上,消费者拉取消息数据的过程中需要知道消息在文件中的偏移量,这个偏移量就是所谓的Offset。


特性

kafka是一种高吞吐量的分布式发布订阅消息系统有如下特性:
1 同时为发布和订阅提供高吞吐量:通过I/O的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。即使是非常普通的硬件kafka也支持每秒数百万的消息。
2 消息持久化:将消息持久化到磁盘,可用于批量消费。
3 分布式支持server间的消息分区及分布式消费,同时保证每个partition内的消息顺序传输。这样易于向外扩展,所有的producer,broker,consumer都会有多个均为分布式的,无需停机即可展开机器。
4消费者消息采用pull(拉取)模式:消息被处理的状态实在consumer端维护,而不是由server端维护,broker无状态,consumer自己保存offset。
5 支持online(在线)和offline(离线)的场景:同时支持离线数据处理和实施数据处理


kafka运行流程

首先启动zookeeper和broker(kafka服务器),broker先去zookeeper中注册成为 leader(领导人)。如果brokers同时去zookeeper中注册,那么zookeeper将会通过投票选举出leader,其余的broker成为follower(跟随者),zookeeper必须为单数。如果broker是排队注册的话,则第一个注册的broker为leader。

生产者发布消息给指定的话题,如果话题不存才则zookeeper创建一个新话题,接着推送数据给broker。

消费者消费数据的话需要先去zookeeper中获得授权,才能在broker中拉取数据。




topic和part'ition

消息发送时需要指定topic,topic由是由一些Partition Logs(分区日志)组成。partition的名称规则为:topic名称+有序序号,第一个序号从0开始计。partition是实际物理上的概念,而topic是逻辑上的概念。其组织结构如下图所示:


以Partition的形式存放日志由两个好处:

    1    方便在集群中扩展,一个topic可以由多个分区组层,每个分区可以放在多个borker上,可以做到适合任意大小的消息量。

    2    可以提高并发,消费时是针对consumer消费的,通过增加partation、consumer可以提升性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值