kafka基本概念

1,kafka是分布式的消息队列系统,另外提供分布式缓存功能。
2,消息持久化,可以达到0(1)的访问速度,因为支持预读和后写功能
3,kafka目标成为队列平台,strom 则是流式计算框架
4,kafka包含一些组件:
Broker:每一台机器叫一个broker
Producer:日志消息的生产者,主要来写数据
Consumer:日志消息的消费者,主要来读数据
Topic:一个虚拟的概念,不同的Consumer去指定的topic去读。不同的Producer往不同的Topic去写
5,Partition的功能:实现负载均衡,需要保证消息的顺序性
6,topic是一个虚拟概念,Partition是一个 实际概念
7,Partition是以文件夹的形式存在的
8,分为两个部分
index log 定位储存索引信息
message log 真实数据
9,给定一个顺序数字序列,如何快速查找到其中某一个值的位置?
二分法+顺序遍历
10,参考HDFS 多副本的方式来完成高可用
如果设置一个topic,这个topic有5个partition,3个replication
假设:将第i个Partition分配到(i % N)个Broker上
将第i个Partition的第j个replication分配到((i+j) % N)个Broker上
11,zookeeper保持系统可用性,zk储存一个meta信息(topic)
12,物理上不同的topic是分来储存的
13,topic中的偏移量 offset,可以设置偏移量读取数量的位置
14,无论有没有消费,消息会一直持久化,什么时候会被清理掉呢?
配置持久化时间,最大7天,配置最大数据量
15,message是kafka的基本单位,类似于flume的event,s’torm的tuple
16,producer分为异步和同步模式
17,最大传输的message的size不得超过1M,可以通过参数配置控制
18,Consumer:消费者
consumer group:消费组
19,传输效率:zero-copy,0拷贝,减少kernel和user模式上下文的切换,直接把dist上的data传给sorker,而不是通过应用程序传输
20,kafka的消息是无状态,消费者需要自己维护消息的状态
21、Kafka使用基于时间的SLA的保留策略,消息超过一定时间后,会被自动删除
22,交付保证,
kafka默认采用 at least once :至少发送一次
at most once :最多发送一次
exactly onec:只有一次(最理想),目前不支持,目前只能靠客户端维护
23,Offset由谁维护?(zookeeper维护,变由topic维护,建议客户端来维护)
24、Kafka集群里面,topic内部由很多partition(包含很多replication),达到高可用的目的
日志副本策略:保证可靠性
分为两个角色:主,从
ISR:是一个集合,所有在set里面的follower才有机会被选为leader
如何让leader知道follower是否成功接收数据:(心跳,ack)
如果心跳正常,代表节点活着
25、如何判断“活着”
1)心跳
2)如果是slave则能够紧随leader的更新不至于落得太远
如果挂掉,从ISR集合里剔除掉slave

你可能感兴趣的:(kafka,kafka)