美文网首页
Kafka的高可用与高性能

Kafka的高可用与高性能

作者: 万里凪 | 来源:发表于2020-03-04 10:12 被阅读0次

一.kafka如何确保高可用(High Availability):

Kafka在0.8版本之前是没有HA机制来确保高可用的,当某一个broker挂掉,partition就挂了。即存在单点故障。0.8之后提供了副本机制,副本机制会将 一个broker下某个topic的一个partition放入到另外一个broker里,这个备份的分区和原分区都叫做副本(replica)。在所有的副本里,只能有一个leader,其余的副本都作为follower,同一时间内只有leader负责读写,follower不起任何作用。这样做的原因是为了确保消费者单调读 且 确保能立即读取写入的信息(Read-your-writes)。其他所有的follower会异步的拉去leader消息,拉的快的会进入ISR里,拉的慢得超过replica.lag.time.max.ms 配置的超时值的,会被踢进OSR里,这个过程是动态的,如果一个follower开始没跟上leader的消息写入速度,被踢出了ISR,等到跟上后又会重新进入ISR。当leader挂掉之后,为了保证高可用性,从ISR中获取一个副本,升格为leader。如果ISR全挂了,有两种策略,一是等待ISR第一个恢复的副本,二是开启unclean从OSR中选择一个副本作为leader。为保证高可用 可以选择第二种牺牲一致性的方式。

二.kafka如何保证高性能:

1.分区:

kafka将topic分区,每一个broker里面会保存topic的不同分区,这样就可以让一个消费者组同时消费不同的分区,提高吞吐。一个消费组下只应有一个消费者去消费一个分区。理想情况下,一个消费者对应一个partition性能最佳。

2.页缓存:

kafka重度依赖页缓存技术,kafka只是将数据写入页缓存(内存)中而不直接操作磁盘,由操作系统决定什么时候把页缓存中数据刷到磁盘上。同时写入页缓存的数据是按照磁盘顺序去写入的,因此刷到磁盘上的速度也较快。当读操作发生时,先从页缓存中查询是否有所需信息,若没有才会调度磁盘。

3. Sendfile:

若页缓存中没有所需信息,需要去调度磁盘。原本网络io操作需要四个步骤 : 硬盘 -> 内核态 PageCache -> 用户态程序读取 -> 内核态socket写入 -> 拷贝至网卡。Sendfile优化后,使用零拷贝可以将buffer从内核态和用户态间任意切换。PageCache仅会传递一个文件描述符给socket,就等效于直接从PageCache中拷贝至网卡。少两步IO操作。

三.controller选举机制

Broker选举:第一个启动的broker会在zk中创建临时节点/controller,利用zk的强一致性,成为唯一的控制器节点,而其余的broker会监听该节点。随后由controller决定每个broker的master,每当broker挂掉,controller会检测其副本,重新决定出master。当控制器broker断开时,/controller临时节点会删除,其余连接的broker将收到事件通知,抢占式注册为新的controller

相关文章

  • Kafka的高可用与高性能

    一.kafka如何确保高可用(High Availability): Kafka在0.8版本之前是没有HA机制来确...

  • 2019-07-16

    高性能,高并发,高可用

  • 服务三高

    三高定义 高并发、高性能、高可用 1.1高并发与高性能的关系 高并发指的是机器的并发连接数。如果静态的看待,就是一...

  • 多线程

    高可用,高性能,高并发 高可用:数据不能出错 高性能:不能等太久 高并发:表示大家同时操作 主内存和工作内存 Th...

  • Kafka高可用——replica分配方式

    Kafka的Replica 概念 kafka的replica指的是消息的备份,为了保证kafka的高可用(当lea...

  • 架构复杂度的来源

    1. 高性能 高性能增加机器目的在于“扩展”处理性能,例如:平行扩展(加机器)。 2. 高可用 高可用增加机器目的...

  • 在Docker下部署RocketMQ(一)

    方案 RocketMQ是分布式的消息队列,所以有各种高性能,高可用的部署方案。本文暂时不考虑高性能和高可用的部署方...

  • 总结

    简单总结 kafka Service端设计 我们知道 kafka 有 高吞吐,高可用,低延迟,允许多次消费 等特性...

  • 舔一舔 · 肌霸Kafka

    目录 1、关于Kafka你知道这些术语么? 2、Kafka如何存储数据? 3、kafka扑街了,如何保证高可用? ...

  • 面试官:请谈谈写入消息中间件的数据,如何保证不丢失?

    目录 1、背景引入 2、Kafka分布式存储架构 3、Kafka高可用架构 4、画图复现Kafka的写入数据丢失问...

网友评论

      本文标题:Kafka的高可用与高性能

      本文链接:https://www.haomeiwen.com/subject/gggplhtx.html