Kafka内核中的分布式机制实现
Kafka内核中的分布式机制实现
一个Topic中的所有数据分布式的存储在kafka集群的所有机器(broker)上,以分区(partition)的的形式进行数据存储;每个分区允许存在备份数据/备份分区(存储在同一kafka集群的其它broker上的分区)
每个数据分区在Kafka集群中存在一个broker节点上的分区叫做leader,存储在其它broker上的备份分区叫做followers;只有leader节点负责该分区的数据读写操作,followers节点作为leader节点的热备节点,从leader节点备份数据;当leader节点挂掉的时候,followers节点中会有一个节点变成leader节点,重新提供服务
Kafka集群的Partition的leader和followers切换依赖Zookeeper
Kafka分布式保证的第一个特性就是:Kafka的Replication
Kafka的Replication指的是Partition的复制,一个Partition的所有分区中只有一个分区是leader节点,其它分区是follower节点。
Replication对Kafka的吞吐率有一定的影响,但是极大的增强了可用性
Follower节点会定时的从leader节点上获取增量数据,一个活跃的follower节点必须满足一下两个条件:
1. 所有的节点必须维护和zookeeper的连接(通过zk的heartbeat实现)
2. follower必须能够及时的将leader上的writing复制过来,不能“落后太多”; “落后太多”由参数{replica.lag.time.max.ms}和{replica.lag.max.messages}决定
Kafka分布式保证的第二个特性就是:Kafka Leader Election
Kafka提供了一个in-sync replicas(ISR)来确保Kafka的Leader选举,ISR是一个保存分区node的集合,如果一个node宕机了或数据“落后太多”,leader会将该node节点从ISR中移除,只有ISR中的follower节点才有可能成为leader节点
Leader节点的切换基于Zookeeper的Watcher机制,当leader节点宕机的时候,其他ISR中的follower节点会竞争的在zk中创建一个文件目录(只会有一个follower节点创建成功),创建成功的follower节点成为leader节点
Kafka内核中的分布式机制实现的更多相关文章
- [Kafka] - Kafka内核理解:分布式机制
一个Topic中的所有数据分布式的存储在kafka集群的所有机器(broker)上,以分区(partition)的的形式进行数据存储:每个分区允许存在备份数据/备份分区(存储在同一kafka集群的其它 ...
- Linux内核中的信号机制--一个简单的例子【转】
本文转载自:http://blog.csdn.net/ce123_zhouwei/article/details/8562958 Linux内核中的信号机制--一个简单的例子 Author:ce123 ...
- 详解Linux2.6内核中基于platform机制的驱动模型 (经典)
[摘要]本文以Linux 2.6.25 内核为例,分析了基于platform总线的驱动模型.首先介绍了Platform总线的基本概念,接着介绍了platform device和platform dri ...
- 内核中的锁机制--RCU
一. 引言 众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了 ...
- Linux内核中的Workqueue机制分析
1. 什么是workqueue Linux中的workqueue(工作队列)主要是为了简化在内核创建线程而设计的.通过相应的工作队列接口,可以使开发人员只关心与特定功能相关的处理流程,而不必关心内核线 ...
- 浅析linux内核中的idr机制
idr在linux内核中指的就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起的机制.这个机制最早是在2003年2月加入内核的,当时是作为POSIX定时器的一个补丁.现在, ...
- 再谈Linux内核中的RCU机制
转自:http://blog.chinaunix.net/uid-23769728-id-3080134.html RCU的设计思想比较明确,通过新老指针替换的方式来实现免锁方式的共享保护.但是具体到 ...
- linux x86内核中的分页机制
Linux采用了通用的四级分页机制,所谓通用就是指Linux使用这种分页机制管理所有架构的分页模型,即便某些架构并不支持四级分页.对于常见的x86架构,如果系统是32位,二级分页模型就可满足系统需求: ...
- [Kafka] - Kafka内核理解:消息存储机制
一个Topic分为多个Partition来进行数据管理,一个Partition中的数据是有序.不可变的,使用偏移量(offset)唯一标识一条数据,是一个long类型的数据 Partition接收到p ...
随机推荐
- iOS 9 学习系列: Xcode Code Coverage
Code coverage 是一个计算你的单元測试覆盖率的工具. 高水平的覆盖给你的单元測试带来信心.也表明你的应用被彻底的測试过了. 你可能写了几千个单元測试,但假设覆盖率不高.那么你写的这套測试可 ...
- Python 爬虫实例(14) 爬取 百度音乐
#-*-coding:utf-8-*- from common.contest import * import urllib def spider(): song_types = ['新歌','热歌' ...
- 数据仓库和ETL建设
这个是Ralph kimball ETL的书籍,其中第10章主要讲如何管理数据仓库团队,ETL团队是属于数据仓库团队的:第一章和第二章是概况性的介绍,强烈建议大家都看下1/2/10章,对于大家形成对数 ...
- Windows 上 怎么安装 install elasticsearch plugin
D:\elasticsearch-5.2.1\bin>elasticsearch-plugin install file:///D:/elasticsearch -5.2.1/bin/elast ...
- tomcat重启步骤
tomcat重启步骤1.切换到tomcat目录cd /home/tomcat-home/tomcat-erp/bin2.关闭tomcatsh shutdown.sh3.启动tomcatsh start ...
- java.lang.CharSequence cannot be resolved
转自:http://jingyan.baidu.com/article/f25ef2546eace4482c1b82a9.html 方法/步骤 1 在MyEclipse中的配置方式为:右击项目-> ...
- hdu 1874 畅通工程续(求最短距离,dijkstra,floyd)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874 /************************************************* ...
- org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint
org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint-Xms2024m -Xmx2024m -Dlog.file ...
- python 创建txt并且写入做追加
import os def create_str_to_txt(self,date,str_data): """ 创建txt,并且写入 """ ...
- 07Vue.js快速入门-Vue路由详解
对于前端来说,其实浏览器配合超级连接就很好的实现了路由功能.但是对于单页面应用来说,浏览器和超级连接的跳转方式已经不能适用, 所以各大框架纷纷给出了单页面应用的解决路由跳转的方案. Vue框架的兼容性 ...