kafka

启动kafka ./kafka-server-start.sh -daemon …/config/server.properties
创建topic ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 2 --topic kafkatest_1.0
查看topic ./kafka-topics.sh --list --zookeeper localhost:2181
创建生产者 ./kafka-console-producer.sh --broker-list localhost:9092 --topic xxx
创建消费者./kafka-console-consumer.sh --zookeeper localhost:2181 --topic xxx

kafka两个leader:

  1. 集群的leader
    由zookeeper负责选举,这个leader叫做KafkaController,起的作用为:负责管理整个集群中分区和副本的状态,比如partition的leader副本故障,由controller 负责为该partition重新选举新的leader副本;当检测到ISR列表发生变化,有controller通知集群中所有broker更新其MetadataCache信息;或者增加某个topic分区的时候也会由controller管理分区的重新分配工作。
  2. 副本的leader
    几个partition数据副本只有leader一个对外提供服务,其他的只是起到备份,再leader损坏时顶上去。

zk作用:选举leader,跟跟用户共同管理offset。

  1. 每一个partition有几个副本,是通过KafkaController,zookeeper在kafka中
    选举leader,集群中的server同时向zk注册,当broker启动的时候,都会创建KafkaController对象,但是集群中只能有一个leader对外提供服务,这些每个节点上的KafkaController会在指定的zookeeper路径下创建临时节点,只有第一个成功创建的节点的KafkaController才可以成为leader,其余的都是follower。当leader故障后,所有的follower会收到通知,再次竞争在该路径下创建节点从而选举新的leader。
  2. KafkaController还维护isr列表,只存储leader副本状态,长时间没更新的会被剔除出列表。

kafka pull push两种模式

kafka写快是因为,顺序写磁盘。
kafka读取快
消费者获取数据快 PageCache 还只是第一步,Kafka 为了进一步的优化性能还采用了 Sendfile 技术
一般情况下:数据 copy到内核区 再到用户区 由程序通过socket发送到内核去 Socket buffer中 在通过网卡发送。
而sendfile技术,省去与用户区交互 完成数据到内核区,发送到Socket buffer中,发送到网卡,
二,用了offset 其他消息队列要维护每条消息是否消费,耗费读写,kafka顺序写磁盘

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值