Kafka的分布式架构与高可用性

news2024/12/28 18:14:26
alt

导语

一开始我们就说过Kafka是一款开源的高吞吐、分布式的消息队列系统,那么今天我们就来说下它的分布式架构和高可用性以及双/多中心部署。

Kafka 体系架构简介

以下是 Kafka 的软件架构,整个 Kafka 体系结构由 Producer、Consumer、Broker、ZooKeeper 组成。Broker 又由 Topic、分区、副本组成。

alt

详细可以参考 Kafka 官方文档,Kafka introduction。

分布式与高可用

Kafka通过其分布式架构来实现高可用性。以下是Kafka分布式架构与高可用性之间的关系:

  1. 分布式数据存储:Kafka的主题被分为多个分区,每个分区都可以有多个副本。这些副本可以分布在不同的Broker节点上,形成分布式的数据存储。这种分布式存储使得数据在多个节点上冗余存储,即使某个节点发生故障,其他副本仍然可用,保证了数据的高可用性。

  2. 冗余备份:Kafka中的每个分区都可以配置多个副本,这些副本被分布在不同的Broker节点上。当一个Broker节点发生故障时,其他副本可以接管该分区并继续提供服务。这种冗余备份机制保证了即使多个节点发生故障,系统仍然可以继续工作,避免了单点故障,提高了可用性。

  3. ISR机制:Kafka使用ISR(In-Sync Replicas)机制来保证数据的可靠性和一致性。ISR是指与Leader副本保持同步的副本集合。当消息被写入Leader副本后,必须等待ISR中的所有副本完成写入操作,才会返回确认给生产者。这样可以保证消息的复制和同步,提高数据的可靠性和一致性。

  4. 动态的故障转移:Kafka具备自动故障转移能力。当一个Broker节点发生故障时,ISR中的其他副本会参与到Leader选举过程中,自动选举新的Leader副本,并进行分区重平衡。这样可以快速恢复系统的可用性,保证生产者和消费者能够无缝地继续工作。

  5. 水平扩展:Kafka的分布式架构支持水平扩展。通过增加更多的Broker节点,可以扩展Kafka集群的吞吐量和容量。水平扩展提高了系统的伸缩性,使得Kafka能够处理大规模的数据流和高并发的读写请求。

  6. 多中心数据互为灾备:即一般为了避免天灾人祸大型项目都会在不同地域部署相同的数据数据中心,彼此之间互为灾备。

多中心相关术语

  • RTO(Recovery Time Objective):即数据恢复时间目标。指如果发生故障,发生故障转移时业务系统所能容忍的最长停止服务时间。如果需要 RTO 越低,就越要避免手工操作,只有自动化故障转移才能实现比较低的 RTO。

  • RPO(Recovery Point Objective):即数据恢复点目标。指如果发生故障,故障转移需要从数据历史记录中的哪个点恢复。换句话说,有多少数据会在故障期间丢失。

  • 灾难恢复(Disaster Recovery): 涵盖所有允许应用程序从灾难中恢复的体系结构、实现、工具、策略和过程的总称,在本文档的上下文中,是指整个区域故障。

  • 高可用性(High Availability): 一个高度可用的系统即使在出现故障的情况下也可以连续运行。在多区域架构的上下文中,高可用性应用程序即使在整个区域故障期间也可以运行。HA 应用程序具有灾难恢复策略。

发生故障的场景

不论是在虚拟化或容器化架构下,还是在提供成熟服务的云厂商上,但都有可能因为各种因素发生局部和系统故障,因此就需要考虑整体系统容灾能力及可用性。

下面列出一些典型的故障场景

序号故障场景影响缓解措施
1单节点故障单个节点或托管在该节点上的 VM 的功能丧失集群部署
2机架或交换机故障该机架内托管的所有节点/虚拟机(和/或连接)丢失集群部署分布在多个机架和/或网络故障域中
3DC/DC-机房故障在该 DC/DC 机房内托管的所有节点/虚拟机(和/或连接)丢失扩展集群、复制部署
4区域故障该区域内托管的所有节点/虚拟机(和/或连接)丢失地理延伸集群(延迟相关)和/或复制部署
5全球性系统性中断(D​​NS 故障、路由故障等)影响客户和员工的所有系统和服务完全中断离线备份;第三方域中的副本
6人为行为(无意或恶意)在检测之前,人为行为可能会破坏数据和任何同步副本的可用性离线备份

这篇文章重点围绕故障场景2、3、4说明 Kafka 中有哪些方案来应对这几类故障场景。第1种单节点故障,Kafka 集群高可用可以应对;第5、6种故障可以考虑将数据存储到第三方系统,如果在云上可以转储到 COS。

双/多中心的应用场景

  • 跨地域复制
    在项目比较大的时候,可能需要在多个地域部署中心服务,以增加系统的容灾能力和业务能力,每个数据中心都有自己的 Kafka 集群,这里就涉及到应用和Kafka集群之间的访问,是本地访问还是跨中心访问。

  • 灾备
    任何集群服务都会收到天灾、人祸等因素影响稳定性,比如地震,火灾,高温、超低温等等,Kafka 集群可能因为这些不可预估的原因导致不可用,这时就需要有另外的与第一个集群完全相同的集群。如果有任何一个集群出现不可用情况,其他中心可以及时顶上,也就是所谓的互为灾备。

  • 集群的物理隔离
    多环境设置,数据隔离部署。

  • 云迁移和混合云部署
    在云计算流行的今天,部分公司会将业务同时部署在本地 IDC 和云端。本地 IDC 和每个云服务区域可能都会有 Kafka 集群,应用程序会在这些 Kafka 集群之间传输数据。例如,云端部署了一个应用,它需要访问 IDC 里的数据,IDC 里的应用程序负责更新这个数据,并保存在本地的数据库中。可以捕获这些数据变更,然后保存在 IDC 的 Kafka 集群中,然后再镜像到云端的 Kafka 集群中,让云端的应用程序可以访问这些数据。这样既有助于控制跨数据中心的流量成本,也有助于提高流量的监管合规性和安全性。

  • 法律和法规要求
    见题知意。

跨数据中心Kafka的部署形态

一般来说,Kafka 跨数据中心部署大体分两种形态:Stretched Cluster和Connected Cluster。

Stretched Cluster

延展集群,它本质上是单个集群,是使用Kafka内置的复制机制来保持broker副本的同步。通过配置min.insync.replicas和acks=all,可以确保每次写入消息时都可以收到至少来自两个数据中心的确认。

alt

Connected Cluster

连接集群,一般通过异步复制完成多地域复制,并且使用外部工具将数据从一个(或多个)集群复制到另一个集群。该工具中会有Kafka消费者从源集群消费数据,然后利用Kafka生产者将数据生产到目的集群。但Confluent提供了一种不使用外部工具实现此功能的连接集群,在下面介绍商业化方案的时候再详细说明。

alt

下面是这两种部署形态的对比

部署形态数据传输方式Offset 保留延迟RTO&RPO何时使用
Stretched Cluster同步可以0数据中心距离较短
Connected Cluster异步可以取决于网络>0数据中心较远

以这两种部署形态可以形成多种部署方式,有兴趣的朋友可以深入研究下。

顶尖架构师栈

关注回复关键字

【C01】超10G后端学习面试资源

【IDEA】最新IDEA激活工具和码及教程

【JetBrains软件名】 最新软件激活工具和码及教程

工具&码&教程

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1072172.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序等轻应用技术是不是对企业有价值?

技术的持续迭代发展和用户使用习惯的养成,影响了企业业务载体和创新方式的改变。回看企业与用户交互技术载体的变革,发现曾经是PC软件,然后是网页,再后来是App,之后是小程序形态的轻应用。 移动互联网风起云涌的数十年…

【C语言】Linux平台下解析pcap文件

开发环境是readhat、ubuntu、kali 在wireshark上抓包需要使用 Wireshark/tcpdump/ 且 文件后缀名为.pcap 方式保存 效果如下&#xff1a; 引入俩文件如下。 my_pcap.h #pragma once #include <netinet/in.h>#define PCAP_MAGIC 0xa1b2c3d4typedef struct pcap_file_he…

TCP 和UDP通信流程

TCP 通信流程 根据上图可以看到&#xff0c;TCP 服务器和客户端通信分为 TCP 服务端和客户端&#xff0c;需要先建立服务 端然后再建立客户端与之连接进行数据交互。 服务端编程步骤&#xff1a; 1.使用 socket 创建流式套接字 2.使用 bind 绑定将服务器绑定到 IP 3.listen…

测试小白必掌握软件测试十大原则

软件测试是确保软件质量的重要手段之一&#xff0c;它可以检测软件中的各种缺陷和问题&#xff0c;从而提高软件的可靠性、可用性和安全性。软件测试也是一项极富创造性、极具挑战性的工作。为了尽可能发现软件中的错误&#xff0c;提高软件产品的质量&#xff0c;在软件测试的…

不用休眠的 Kotlin 并发:深入对比 delay() 和 sleep()

本文翻译自&#xff1a; https://blog.shreyaspatil.dev/sleepless-concurrency-delay-vs-threadsleep 毫无疑问&#xff0c;Kotlin 语言中的协程 Coroutine 极大地帮助了开发者更加容易地处理异步编程。该特性中封装的诸多高效 API&#xff0c;可以确保开发者花费更小的精力去…

2023年中国隆鼻行业发展历程及趋势分析:隆鼻手术市场将实现进一步增长[图]

隆鼻术就是以各种植入材料置入为主要方法&#xff0c;隆起或抬高鼻部形态为主要目的的鼻整形术式。隆鼻术可能是开展最多的整形美容手术之一。隆鼻术也是一种很成熟的美容手术&#xff0c;操作较为简单、安全、风险较小&#xff0c;也易于接受。 隆鼻行业分类 资料来源&#x…

【2023研电赛】安谋科技企业命题特别奖:面向独居老人的智能居家监护系统

本文为2023年第十八届中国研究生电子设计竞赛安谋科技企业命题特别奖分享&#xff0c;参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力&#xff0c;更有丰富电子礼品等你来领&#xff01;&#xff0c;分享2023研电赛作品扩大影响力&#xff0c;更有丰富电子礼品等你来…

滚雪球学Java(43):探究 Java 中的 Class 类:透视类的本质和实现原理

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…

科普丨语音芯片选型应遵守的原则

在选择语音芯片时&#xff0c;设计者应该首先详细了解设计要求&#xff0c;并从要求中整理出电路功能模块和性能指标要求。根据功能和性能要求&#xff0c;制定总体设计方案。一般来说&#xff0c;选择语音芯片有以下要求&#xff1a; 1、 性价比&#xff1a;选择物美价廉的语…

16.(开发工具篇mysql)mysql不同库同步数据的异常记录

1:mysql导入时出现“ERROR at line : Unknown command ‘\‘‘.“的解决办法 default-character-set=utf82:ERROR 2006 (HY000) at line 71: MySQL server has gone away (1) 连接超时 查看各项连接时间: show global variables like %timeout;这些值是相对是MySQL的默认…

Redis AOF重写原原理

重写aof之前 appendonly.aof.1.base.aof appendonly.aof.1.incr.aof appendonly.aof.manifest 重写aof 一次 appendonly.aof.2.base.aof 大小变化 appendonly.aof.2.incr.aof 大小o appendonly.aof.manifest 大小不变 AOF文件重写并不是对原文件进行重新整理&#xff0c;而是直…

web:[护网杯 2018]easy_tornado

题目 点进页面显示如下 点进去查看 有个render&#xff0c;结合题目名&#xff0c;可能是ssti 同时注意到url&#xff0c;无论点进哪个文件&#xff0c;url的格式都为file?filename/xxx&filehashxxx 所以结合hints.txt中的提示&#xff0c;filehash就是md5加密得到的&…

CasA:用于点云 3D 目标检测的级联注意力网络

论文摘要 LiDAR 收集的数据通常表现出稀疏和不规则的分布。 3D 空间中的 LiDAR 扫描并不均匀。近处和远处的物体之间存在巨大的分布差距。 CasA(Cascade Attention) 由 RPN&#xff08;Region proposal Network&#xff09;和 CRN&#xff08;cascade refinement Network&…

目标追踪算法DeepSORT简介

背景&#xff1a;目标检测 vs 目标跟踪 在开始介绍 DeepSORT 的原理之前呢&#xff0c;我们先来了解下目标检测&#xff0c;和目标跟踪之间的区别&#xff1a; 目标检测&#xff1a;在目标检测任务中&#xff0c;我们需要利用 AI 模型识别出单张画面中&#xff0c;物体的位置…

【稳定性】稳定性建设之弹性设计 | 京东物流技术团队

背景 随着业务的快速变化和技术的不断发展&#xff0c;系统面临着诸多挑战&#xff0c;例如流量峰值、依赖服务故障、硬件故障、网络中断、软件缺陷等&#xff0c;这些因素都可能影响到系统的正常运行。在这种背景下&#xff0c;弹性设计&#xff08;Resilience Design&#x…

开启深度学习之门—《深度学习》

开启深度学习之门—《深度学习》 《深度学习》由Ian Goodfellow和Yoshua Bengio合著,以其前沿的内容和深入浅出的风格,成为了当今最受欢迎的人工智能教材之一。首先,让我们来了解一下这两位作者。Ian Goodfellow是一位备受瞩目的计算机科学家,他在深度学习和生成对抗网络的…

第二证券:华为全液冷超充上线,高压快充概念爆发,双杰电气等涨停

受华为全液冷超充上线消息提振&#xff0c;高压快充概念9日盘中强势拉升&#xff0c;到发稿&#xff0c;双杰电气、永贵电器“20cm”涨停&#xff0c;英可瑞、易事特涨超13%&#xff0c;伊戈尔、协鑫能科、宝馨科技、日丰股份等涨停&#xff0c;万祥科技、星云股份涨近8%。 消…

外汇天眼:三大方法提高容错率——成功投资者的秘密策略!

容错率是什么&#xff1f; 虽然A股市场投资体验不佳&#xff0c;但相较于中概股市场的波动&#xff0c;A股投资者仍有幸福感。以中概股的代表&#xff0c;金龙指数ETF为例&#xff0c;仅一年多时间内从85.90元下跌至20.47元&#xff0c;跌幅高达76%。 然而&#xff0c;有一位…

【PPT】ppt里面使用svg图标

要想编辑好的PPT&#xff0c;少不了小图标的美化&#xff0c;图标可以使PPT变得更有趣&#xff0c;更易懂&#xff0c;更美观。 对于png&#xff0c;主要处理它的颜色&#xff0c;可使用【重新着色】功能。 对于jpg&#xff0c;主要处理它的背景&#xff0c;删除背景后同png处…

vue-6

一、声明式导航-导航链接 1.需求 实现导航高亮效果 如果使用a标签进行跳转的话&#xff0c;需要给当前跳转的导航加样式&#xff0c;同时要移除上一个a标签的样式&#xff0c;太麻烦&#xff01;&#xff01;&#xff01; 2.解决方案 vue-router 提供了一个全局组件 router…