Kafka主题体系架构-复制、故障转移和并行处理
本文讨论了Kafka主题的体系架构,讨论了如何将分区用于故障转移和并行处理。
Kafka主题,日志和分区
Kafka将主题存储在日志中。主题日志分为多个分区。Kafka将日志的分区分布在多个服务器或磁盘上。将主题视为类别,流名称或提要。
主题本身就是发布和订阅样式的消息传递。一个主题可以有零个或多个名为使用者组的订阅户。为了速度、可伸缩性和大小,主题被划分为多个分区。
Kafka主题分区
Kafka将主题日志分解为多个分区。记录存储在一个分区上,如果存在该键,通常按记录键存储;如果缺少该键,则按循环存储(默认行为)。默认情况下,记录键决定生产者发送记录的分区。
Kafka使用分区在多个服务器上扩展主题以进行生产者写入。此外,Kafka还使用分区来促进并行消费者。使用者使用的记录与分区数并行。
每个分区保证的顺序。如果按键进行分区,则密钥的所有记录都将位于同一分区上,如果您必须重播日志,则该分区非常有用。Kafka可以将分区复制到多个代理以进行故障转移。
Kafka主题日志分区的排序和基数
Kafka一个分区中维护记录顺序。分区是一个有序的、不变的记录序列。Kafka使用分区作为结构化提交日志连续附加到分区。分区中的记录被分配了称为偏移量的顺序ID号。偏移量标识分区中的每个记录位置。主题分区允许Kafka日志扩展超出适合单个服务器的大小。主题分区必须适合承载它的服务器,但主题可以跨越承载在许多服务器上的多个分区。此外,主题分区是并行性的一个单元——一个分区一次只能由一个使用者组中的一个使用者处理。消费者可以在自己的进程或线程中运行。如果消费者停止,Kafka将分区分布在同一消费者组中的剩余消费者上。
Kafka体系架构:主题分区布局和偏移
Kafka主题分区复制
Kafka可以跨多个可配置的Kafka服务器复制分区,这些服务器用于容错。每个分区都有一个领导服务器和零个或多个追随服务器。领导处理分区的所有读写请求。
追随者模仿领导者,如果领导者死了,他们就会接管。Kafka还使用分区在组中进行并行消费者处理。Kafka将主题日志分区分布在Kafka集群中的服务器上。每个服务器通过共享分区领导层来处理其数据和请求的共享。
复制:Kafka分区领导者、追随者和ISR
Kafka使用ZooKeeper选择一个经纪人分区的副本作为领导者。
具有分区领导的代理处理分区记录的所有读写操作。Kafka将写操作复制到主分区的后续分区(节点/分区对)。同步的追随者称为ISR(同步副本)。如果分区领导失败,Kafka选择一个新的ISR作为新的领导。
复制到分区0
当分区的所有ISR都写入其日志时,该记录被视为“已提交”。只有提交的记录才可从消费者中读取。另一个分区可以由另一个Kafka代理的领导者拥有。
复制到分区1
Kafka主题体系结构评论
什么是ISR?
ISR是同步副本。如果领导者失败,ISR将被选为新的领导者。
Kafka如何扩大消费者规模?
Kafka通过分区来扩展消费者,这样每个消费者都可以获得分区的份额。消费者可以有多个分区,但一个分区一次只能由一个使用者组中的一个使用者使用。如果只有一个分区,那么只能有一个使用者。
什么是领导者?追随者?
领导者执行对特定主题分区的所有读写操作。追随者复制领导者。
Kafka如何为消费者执行故障转移?
如果消费者组中的消费者死亡,则分配给该消费者的分区将在该组中的剩余消费者之间分配。
Kafka如何为代理执行故障转移?
如果一个代理死了,那么Kafka将其主题分区的领导权分配给集群中的其余代理。
Kafka主题体系架构-复制、故障转移和并行处理的更多相关文章
- Kafka Topic 体系结构 - 复制 故障转移 并行处理
本文介绍了 Kafka Topic 的体系结构,并讨论了如何使用分区进行故障转移和并行处理. 1. Kafka Topic, Log, Partition Kafka Topic(主题) 是一个有名字 ...
- GPU体系架构(一):数据的并行处理
最近在了解GPU架构这方面的内容,由于资料零零散散,所以准备写两篇博客整理一下.GPU的架构复杂无比,这两篇文章也是从宏观的层面去一窥GPU的工作原理罢了 GPU根据厂商的不同,显卡型号的不同,GPU ...
- Apache Kafka主题 - 架构和分区
1.卡夫卡话题 在这篇Kafka文章中,我们将学习Kafka主题与Kafka Architecture的整体概念.Kafka中的体系结构包括复制,故障转移以及并行处理.此外,我们还将看到创建Kafka ...
- Hyper-V 2012 R2 故障转移群集
和终端用户相比,企业用户对于业务的连续性和可靠性更为在意.相对而言,企业一般不会将追逐单一硬件的性能排在第一位. 如何衡量业务是否持续可用,一般使用"x 个 9"这种方式来定义.如 ...
- 第八章 Hyper-V 2012 R2 故障转移群集
和终端用户相比,企业用户对于业务的连续性和可靠性更为在意.相对而言,企业一般不会将追逐单一硬件的性能排在第一位. 如何衡量业务是否持续可用,一般使用"x 个 9"这种方式来定义.如 ...
- Kafka体系架构详细分解
我的个人博客排版更舒服: https://www.luozhiyun.com/archives/260 基本概念 Kafka 体系架构 Kafka 体系架构包括若干 Producer.若干 Broke ...
- sqlserver2008 复制,镜像,日志传输及故障转移集群区别
一, 数据库复制 SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行 实时数据同步, ...
- sql server 复制,镜像,日志传输及故障转移集群区别
一, 数据库复制 SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行 实时数据同步, ...
- Kafka体系架构、命令、Go案例
原文地址:https://github.com/WilburXu/blog/blob/master/kafka/Kafka基本架构和命令.md Kafka体系架构 Broker服务代理节点 服务代理节 ...
随机推荐
- hdu 5869 Different GCD Subarray Query BIT+GCD 2016ICPC 大连网络赛
Different GCD Subarray Query Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K ( ...
- 【csp模拟赛4】 珠江夜游 (cruise.cpp)-二分,贪心
Problem 1 珠江夜游 (cruise.cpp) [题目描述] 小 Z 放假后难得来一趟广州游玩,当然要吃遍广州各路美食小吃然后再 到珠江新城看看远近闻名的小蛮腰啦!可当小 Z 一路吃吃吃以后, ...
- mac使用php-version切换PHP版本
在开发过程中,有时候我们的程序对某个php版本有着极为重要的限制,特别是大型项目. 因此,我们就需要切换多个php版本来满足我们的需求. 我们使用php-version来达到这个目的. 首先我们先使用 ...
- async for的使用
import random import asyncio async def random_number_gen(delay, start, end): while True: yield rando ...
- LC 794. Valid Tic-Tac-Toe State
A Tic-Tac-Toe board is given as a string array board. Return True if and only if it is possible to r ...
- Android中图片优化
1.对图片进行压缩:建议使用TinyPNG工具压缩 2.WebP格式(支持4.0以上)可减少文件大小 3.尽量使用NinePatch的PNG 4.图片缓存
- Fragment 和Activity的数据传递实例代码
package com.example.fragment; import android.os.Bundle; import android.support.v4.app.FragmentActivi ...
- 实验一 绘制任意斜率的直线段 | 使用VS2017工具
这世界上有很多坑,注定有些坑是要填的.下面我就用VS2017使用MFC对这个课堂实验进行填坑. 一.实验目的 (1)掌握任意斜率直线段的重点 Bresenham 扫描转换算法: (2)掌握 Cline ...
- iView分页组件之分页使用
基于表格简单示例 <template> <div style="margin:0 auto;"> <Table :loading="load ...
- WebServer_简单例子
#-*-coding:utf-8-*- importwebimportjson urls=("/.*","index")app=web.application( ...