聊聊分布式集群的基本概念

在当前主流的分布式架构中,各种各样的集群技术几乎成了任何想要提升系统稳定性和处理能力的团队的必备技能。虽然各种中间件和系统都有让人看似眼花缭乱的集群实现方案,但其背后仍然逃不过一些核心的技术概念,我会结合几个我比较熟悉的中间件,简单聊一下我对集群的理解:

集群的类型

按照搭建集群的目标来划分,大致可以划分为三类集群

高可用集群

高可用性集群的主要目的是使集群的整体服务尽可能可用,在集群中任意一个节点失效的情况下,该节点上的所有任务会自动转移到其他正常的节点上。此过程并不影响整个集群的运行,能够有效的避免单点故障。高可用集群要求节点间可以进行任务和状态的迁移。我们通常所说的双机热备,也就是某种意义上的高可用集群。

负载均衡集群

负载均衡集群的主要是通过一个或多个负载均衡器,基于一定的算法将客户端集中的访问请求负载压力尽可能平均地分摊在集群中的各个节点进行处理,实现访问请求在各节点之间动态分配,以提升集群整体的吞吐量和性能,避免单个节点的网络,硬件资源等成为性能瓶颈,实现服务的横向扩展。这个例子就很多了,比如通过nginx反向代理多个后端的web服务器实例,实现多实例间的负载均衡。

高性能集群

主要用于大型任务的并行计算,将一个复杂问题拆分为多个可以并行执行的任务在多个节点同时进行计算,主要用于大数据领域,比如hadoop的mapreduce,flink,spark等等。

常用中间件的集群实现

Kafka集群

kafka的集群基于副本机制来实现了高可用,然后通过多broker,多分区来实现消息生产和消费的负载均衡,整个集群的架构图如下:
kafka集群

核心概念作用
Broker消息中间件处理节点,一个Kafka节点就是一个broker,一个或者多个Broker可以组成一个Kafka集群
TopicKafka根据topic对消息进行归类,发布到Kafka集群的每条消息都需要指定一个topic
Partition分区,物理上的概念,一个topic可以分为多个partition,每个partition内部消息是有序的,一个分区可以简单的看作一个日志文件
Producer消息生产者,向Broker发送消息的客户端
Consumer消息消费者,从Broker读取消息的客户端
ConsumerGroup消费者组,每个Consumer属于一个特定的Consumer Group,一条消息可以被多个不同的Consumer Group消费,但是一个Consumer Group中只能有一个Consumer能够消费该消息Partition

Clickhouse集群

clickhouse集群有两个重要的概念:分片(shard)和 副本(replica),分片与分片间存储了不同的数据,而副本与副本之间数据是一致的(最终一致),一个分片可以有多个副本。从这里就可以看出它是通过分片实现负载均衡,而对分片创建副本来实现分片的高可用。一个典型的clickhouse集群主要由六个节点组成,分别为3个分片以及每个分片一个副本,:
在这里插入图片描述
这六个节点构成集群的配置如下:

<remote_servers><!-- User-specified clusters --><replicated><shard><internal_replication>true</internal_replication><replica><host>chi-clickhouse-replicated-0-0</host><port>9000</port>

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

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

相关文章

zlib安装教程(Windows)

开源项目地址&#xff1a;madler/zlib: A massively spiffy yet delicately unobtrusive compression library. (github.com) 下载代码 可以选择git clone 或直接下载release包 Releases madler/zlib (github.com) git clone https://github.com/madler/zlib.git release…

被拷打已老实!面试官问我 #{} 和 ${} 的区别是什么?

引言&#xff1a;在使用 MyBatis 进行数据库操作时&#xff0c;#{} 和 ${} 的区别是面试中常见的问题&#xff0c;对理解如何在 MyBatis 中安全有效地处理 SQL 语句至关重要。正确使用这两种占位符不仅影响应用的安全性&#xff0c;还涉及到性能优化。 题目 被拷打已老实&…

2024-06-19,面试官问的问题

文章目录 1、采用minIO完成了图片存储&#xff0c;采用阿里云OSS服务器存储图片这两个功能面试官理解为重复&#xff0c;面试官又问minIO怎么同步到OSS&#xff1f;2、讲一下ThreadLocal&#xff1f;3、为什么用ThreadLocal存数据&#xff1f;4、redis有几种数据结构&#xff1…

零成本!无需服务器,搭建你的图床!

先给大家看看成品&#xff1a; 访问地址&#xff1a;http://cp64mba5g6h48vl4is50.app.memfiredb.cn/ 这是我花十分钟做出来的零成本&#xff0c;不需要服务器的图床&#xff0c;不需要登录&#xff0c;任何人都可以在上面上传图片和拿到图片链接去使用&#xff0c;当然这只…

【Java面试】二十一、JVM篇(中):垃圾回收相关

文章目录 1、类加载器1.1 什么是类加载器1.2 什么是双亲委派机制 2、类装载的执行过程&#xff08;类的生命周期&#xff09;3、对象什么时候可以被垃圾回收器处理4、JVM垃圾回收算法4.1 标记清除算法4.2 标记整理算法4.3 复制算法 5、分代收集算法5.1 MinorGC、Mixed GC、Full…

大数据的发展,带动电子商务产业链,促进了社会的进步【电商数据采集API接口推动电商项目的源动力】

最近几年计算机技术在诸多领域得到了有效的应用&#xff0c;同时在多方面深刻影响着我国经济水平的发展。除此之外&#xff0c;人民群众的日常生活水平也受大数据技术的影响。 在这其中电子商务领域也在大数据技术的支持下&#xff0c;得到了明显的进步。虽然电子商务领域的发…

网页钓鱼-克隆修改--劫持口令下载后门

免责声明:本文仅做技术交流与学习... 目录 1-右键另存为 2-goblin项目(不推荐) 修改goblin.yaml文件 运行exe ​编辑 3-Setoolkit (kali自带) 网页克隆---> 1-右键另存为 --不行就再定位元素进行修改. 2-goblin项目(不推荐) GitHub - xiecat/goblin: 一款适用于红蓝…

云原生安全联防联抗策略玩转微隔离

前言 随着信息技术的发展、互联网的快速普及&#xff0c;越来越多的信息被存储在云端&#xff0c;企业面临的安全问题也日益突出。在《网络安全法》、《数据安全法》等多部法律法规要求下&#xff0c;各行业用户纷纷设立安全部门。不管安全部门里是“一人当关”还是“三三两两…

PCB AVI品质报告采集工具

AVI设备,品质报告. 可以通过: 过滤文件名指定文件名 排除多余的日志;运行日志为增量日志,可采用增量模式;品质报告可设置采集后删除; 下载: Gitee下载 最新版本 优势: A. 开箱即用. 解压直接运行.不需额外安装. B. 批管理设备. 设备配置均在后台管理. C. 无人值守 客户端自…

lammps聚合物建模组合技巧

大家好,我是小马老师。 本文介绍聚合物结构的组合问题。 在lammps模拟中,聚合物模拟应该算是比较复杂的一种模拟,不仅建模复杂、势参数较多,而且在模拟过程中也会经常出现各种意想不到的错误。 本文主要解决聚合物建模过程中常遇到的一个问题:多成分的组合。 比如下面的结…

【仿真建模-anylogic】Port原理解析

Author&#xff1a;赵志乾 Date&#xff1a;2024-06-14 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 类图 2. 原理解析 2.1 核心函数&#xff1a; Port作为各类型端口的基类&#xff0c;其核心方法如下 &#xff1a; 函数功能Port(A…

Linux磁盘格式化与重新分区

1.df -BG查看磁盘挂载情况 2.fdisk -l查看磁盘详细信息 3.sudo mkfs.ext4 /path 格式化磁盘 4.挂载格式化后磁盘 挂载成功

初见DP

线性DP 例题1 1143. 最长公共子序列 &#xff08;LCS&#xff09; 子序列不连续 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#x…

opencv 视频处理

概述 OpenCV 的视频模块是其核心组成部分之一&#xff0c;主要负责视频文件的读取、处理、分析以及视频流的捕获和输出。这一模块使得开发者能够轻松地处理来自摄像头、文件或其他视频源的视频数据&#xff0c;进行实时或离线的图像处理和计算机视觉任务。以下是 OpenCV 视频模…

Pentest Muse:一款专为网络安全人员设计的AI助手

关于Pentest Muse Pentest Muse是一款专为网络安全研究人员和渗透测试人员设计和开发的人工智能AI助手&#xff0c;该工具可以帮助渗透测试人员进行头脑风暴、编写Payload、分析代码或执行网络侦查任务。除此之外&#xff0c;Pentest Muse甚至还能够执行命令行代码并以迭代方式…

Excel 找出最大值及其相邻的 N 个成员

某列都是数值&#xff1a; A1132213464215496973482396101113712491342144015151631171718114719182030212222423252419251326272738283029163012312332333233419351436463723383739384028 请找出最大值及其相邻的 10 个成员&#xff0c;注意越界检查&#xff0c;实际符合条件…

JAVA云HIS医院管理系统源码:可医保对接的云HIS运维平台源码 SaaS模式

JAVA云HIS医院管理系统源码&#xff1a;可医保对接的云HIS运维平台源码 SaaS模式 云HIS系统运用云计算、大数据、物联网等新兴信息技术&#xff0c;为医疗机构提供全面的医疗信息管理服务。该系统支持医保功能&#xff0c;通过与医保系统的对接&#xff0c;实现了医疗费用的自…

Boost 网络库

asio 网络编程的基本流程创建 socket绑定acceptor连接指定的端点服务器接受连接 网络编程的基本流程 服务端 1&#xff09;socket----创建socket对象。 2&#xff09;bind----绑定本机ipport。 3&#xff09;listen----监听来电&#xff0c;若在监听到来电&#xff0c;则建…

Vue 3的组合式API:你真的需要它吗?

Vue 3的组合式API&#xff1a;你真的需要它吗&#xff1f; 随着Vue 3的发布&#xff0c;我们迎来了一个新的API——组合式API&#xff08;Composition API&#xff09;。这个API为开发者提供了更灵活、更可复用的代码编写方式。然而&#xff0c;传统的选项式API&#xff08;Opt…

分布式操作系统入门:可的哥(Codigger)引领新潮流

早期&#xff0c;大型机系统盛行&#xff0c;随后个人计算机如Windows、Mac OS等操作系统普及。随着技术发展和计算需求增长&#xff0c;单机系统的局限显现&#xff0c;推动了分布式操作系统的崛起。操作系统演进显露出从单机到多机、从集中到分散的趋势。传统单机系统在处理大…