kafka基础介绍

1.kafkakafka是类jms消息队列,与jms不同的是,kafka可以有多个消费者consumer主动拉取数据。2.topictopic是逻辑上:一个目标发送目的地,物理上:一个磁盘上的partition的目录。一个topic可以对应多个partition;一个partition可以划分多个segment; 一个segment的默认值是1G;一个segment包括index 和 ...
摘要由CSDN通过智能技术生成

1.kafka

kafka是类jms消息队列,与jms不同的是,kafka可以有多个消费者consumer主动拉取数据。

2.topic

topic是逻辑上:一个目标发送目的地,物理上:一个磁盘上的partition的目录。

一个topic可以对应多个partition;

一个partition可以划分多个segment; 一个segment的默认值是1G;

一个segment包括index 和 log 文件。

注意点:

topic不仅可以设置partition,还可以设置replication number,并且在多个replication中选取leader。 该主从模式与mysql的主从不同,此模式下所有的读写操作均通过leader管理,而mysql的主从则是为了读写分离。在kafka中,读写操作都是leader; 在mysql中,leader负责写,follower负责读。

3.producer

producer负责数据生产到broker中,producer决定数据分发策略,默认使用key的哈希值对分区数取模算法,该算法和hdfs中partition算法相同。

4.broker

broker是当前服务器上运行的kafka的实例,在kafka集群中每一个broker对应一个唯一的ID,即brokerId。

broker不关心数据何时生产,何时消费,它只关心数据存储。

5.consumergroup

consumergroup是数据消费组,该组可以设置多个,组与组之间消费的数据都是一样的;

在同一个组内可以有多个consumer,在同一个组内的成员共同消费一个topic数据,组内成员不能重复消费数据。

  1. 负载均衡策略

分组策略:数据如何分组
默认是 (key.hashcode)%numPartitions。

安全策略:消息是否确认接收
ack机制,

0是不等待broker返回确认消息,

1是等待topic中某个partition的leader保存成功statement,

-1是等待topic中某个partition所有副本都保存成功statement。

保存策略:消息如何保存
在理论环境下,broker按照顺序读写的机制,可以每秒保存600M的数据。主要通过pagecache机制,尽可能的利用当前物理机器上的空闲内存来做缓存。当前topic所属的broker,必定有一个该topic的partition,partition是一个磁盘目录,partition的目录中有多个segment组合。

存放策略:partition与broker 关系
partition轮询依次访问broker,这样负载均衡在多个broker上。

消费策略:partition与consumergroup关系
理想策略是一个consumer对应一个partition;

若consumer数量大于partition数量,则会出现空闲的consumer;

若consumer数量小于partition数量,则使用如下算法:

假如topic, 具有如下partitions: P0,P1,P2,P3
加入group中,有如下consumer: C1,C2
首先根据partition索引号对partitions排序: P0,P1,P2,P3
根据consumer.id排序: C0,C1
计算倍数: M = [P0,P1,P2,P3].size / [C0,C1].size, 本例值M=2(向上取整)
然后依次分配partitions: C0 = [P0,P1],C1=[P2,P3], 即 Ci = [P(i * M),P((i + 1) * M -1)]
有序策略:信息消费全局有序性
数据生产可以做producer集群,数据存储可以做broker集群,数据消费可以做consumergroup;

倘若保证消息消费的全局有序,则保证数据生产有序,数据存储有序,数据消费有序。

若满足一个producer,一个partition,一个consumer,则可以保证数据消费的全局有序。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值