首页 > 其他分享 >聊聊我认为的分布式、集群实现关键点

聊聊我认为的分布式、集群实现关键点

时间:2023-07-15 14:00:19浏览次数:33  
标签:算法 集群 聊聊 一致性 机制 分布式 数据 节点 关键点

基于常见的中间件(Mysql、ElasticSearch、Zookeeper、Kafka、Redis)等分布式集群设计的机制,自己总结了在在集群设计过程中需要考虑的通用问题。

节点通信机制

主节点的增加、删除、通信机制。

路由算法

即数据路由到哪个节点的策略机制。在集群内有多个节点,数据该路由到哪个节点存储,也可以看作是,请求应该转发到哪个节点执行。
常见算法:

  1. 一致性hash算法
  2. hash算法
  3. 取余算法
  4. 指定分区算法

数据一致性算法与同步机制

分布式多节点(主从、主备、主副本)中,数据在多节点中的一致性问题。一般都是采用分布式一致性算法来实现,简单列举下:
强一致性算法:
● 说明:保证系统改变提交以后,立即改变节点的数据状态
● 算法:
○ Paxos
○ Raft
○ ZAB
弱一致性算法:
● 说明:也叫最终一致性,系统不保证改变提交以后立即改变集群的状态,但是随着时间的推移最终状态是一致的。
● 算法:
○ DNS系统
○ Gossip协议
当数据在主节点已写入后,如何同步到其他的副本/从节点中。是过半写而后直接返回给客户端、还是全写后在返回给客户端、还是在主节点写完后,直接返回给客户端,再异步写入其他节点。

写请求机制

目前来看,大多数的中间件集群写请求都是在主节点上执行的,而后将数据同步到从节点/副本。

选主机制

集群内的某个主节点宕机后,从节点(副本)如何选主?

集群数据倾斜

在集群内,由于数据路由算法或是其它问题,导致主节点间,数据量不一致,有些主节点数据量多,而有些节点数据量少,导致集群中数据的分配不均匀。

节点动态变化

由于网络或是负载均衡的考虑等,会有动态增减主节点的情况。发生此类情况后,是否会影响到此前已存储数据的路由,这直接影响到数据的读取。

读请求负载均衡

即在主从节点(主副本)间读请求的负载均衡机制。是轮训还是指定等等,这直接影响到系统的吞吐量与数据的准确性。比如,有些从节点(副本)由于数据一致性与同步机制的影响,可能此时数据还没同步过来,而读请求路由到了此节点,那么就会出现数据取不到情况了。

数据的原子性与持久性

其实这个可以不归属于分布式、集群内,但可以提一下。在节点崩溃后,如何恢复数据?甚至是从崩溃点恢复?如何不丢失数据?
WAL机制,大多数的中间件都实现了该机制。尤其是数据库与消息中间件和非内存性的数据存储中间件。

标签:算法,集群,聊聊,一致性,机制,分布式,数据,节点,关键点
From: https://www.cnblogs.com/zhiyong-ITNote/p/17556052.html

相关文章

  • 推荐一款.NET开源的轻量级分布式服务框架
    前言今天要给大家推荐一款由新生命开发团队开源的.NET轻量级分布式服务框架:星尘分布式平台(NewLife.Stardust)。项目介绍星尘是一个轻量级分布式服务框架。它的功能包含配置中心、集群管理、远程自动发布、服务治理、服务自动注册和发现、负载均衡、动态伸缩、故障转移、性能监控......
  • LightDB分布式高可用+负载均衡部署
    软件版本LightDB13.8-22.3安装分布式多机单实例模式根据LightDB安装文档6.3节,安装分布式多机单实例模式。安装后,确认环境变量$LTDATA,$LTHOME正确配置,工作节点正确添加。本文假设CN(协调节点,primary)安装在机器186,两个DN(数据节点)安装在机器192,193,端口均为15858。本文之......
  • WinUI(WASDK)使用MediaPipe检查人体姿态关键点
    前言之前有用这个MediaPipe.NET.NET包装库搞了手势识别,丰富了稚晖君的ElectronBot机器人的第三方上位机软件的功能,MediaPipe作为谷歌开源的机器视觉库,功能很丰富了,于是就开始整活了,来体验了一把人体姿态关键点检测。所用框架介绍1.WASDK这个框架是微软最新的应用开发框架,我......
  • 31. Redis分布式锁
    我是javapub,一名Markdown程序员从......
  • 如何实现redis 分布式锁过期后,数据还存在吗?的具体操作步骤
    Redis分布式锁过期后数据是否还存在的实现一、问题描述小白在使用Redis实现分布式锁时,遇到了一个疑问:当分布式锁过期后,数据是否还存在?二、解决方案为了解决小白的问题,我们可以使用Redis的SET命令结合带有过期时间的锁来实现分布式锁的自动释放。下面是整个流程的步骤和......
  • 安装Hadoop单节点伪分布式集群
    目录安装Hadoop单节点伪分布式集群系统准备开启SSH安装JDK安装Hadoop下载准备启动伪分布式模式安装配置配饰SSH免密登录本机测试启动单节点安装YARN伪分布式集群启动与停止安装Hadoop单节点伪分布式集群操作系统:Ubuntuserver20.04参考文档:http://apache.github.io/hadoop/had......
  • 分布式多协议接入网关FluxMQ-2.0功能说明
    FluxMQ—2.0版本更新内容前言FLuxMQ是一款基于java开发,支持无限设备连接的云原生分布式物联网接入平台。FluxMQ基于Netty开发,底层采用Reactor3反应堆模型,具备低延迟,高吞吐量,千万、亿级别设备连接;方便企业快速构建其物联网平台与应用。FluxMQ官网:https://www.fluxmq.comFluxMQ......
  • springcloud -分布式事务解决方案 seata 分布式id生成方案
     使用三个服务来进行演示三个服务的共同部分 pom相关依赖 <!--nacos--> <dependency>   <groupId>com.alibaba.cloud</groupId>   <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!--seata-->......
  • Jmeter+Influxdb+garafana分布式压测+平台监控
    Jmeter+Influxdb+garafana分布式压测+平台监控 一、Jmeter 1、修改配置文件 主机:remote_hosts部分,修改内容为:remote_hosts=xx,xx代表的是压力机的ip:port 执行机:remote_hosts=本机ip+端口号、server_port=1099、server.rmi.localport=1099 2、主机和执行机都需下载......
  • 细节决定成败,聊聊JS的类型(下)
    讲完了基本类型,我们来介绍一个现象:类型转换。因为JS是弱类型语言,所以类型转换发生非常频繁,大部分我们熟悉的运算都会先进行类型转换。大部分类型转换符合人类的直觉,但是如果我们不去理解类型转换的严格定义,很容易造成一些代码中的判断失误。其中最为臭名昭著的是JavaScript......