首页 > 其他分享 >分布式系统架构master-worker

分布式系统架构master-worker

时间:2022-11-17 12:35:09浏览次数:39  
标签:架构 机器 worker Worker master 分布式系统 Master 数据

概述

Master-Workers 架构(粗译为主从架构)是分布式系统中常见的一种组织方式。

面对分布式系统中一堆分离的机器资源,主从架构是一种最自然、直白的组织方式——就像一群人,有个说了算 leader 进行组织、协调,才能最大化这群人的对外输出能力。

架构模块

主从架构系统,通常由单个 Master ,多个 Worker 组成。

此外,还有使用系统的外部用户。我们通常称之为客户端(Client),Client 通过系统暴露的接口(如 RPC、HTTP)与系统进行交互。

Master

Master 通常会存储系统的元信息,什么是元信息呢?可以理解为集群组织信息在 Master 脑中的一个倒影,或者说视图(View):比如集群有多少 Worker、每个 Worker 有多少剩余容量、负载如何、哪些 Worker 存储了哪些数据等等。

元信息收集:分两种情况:

  1. 配置。可以理解为集群静态信息,比如系统初始有多少个 Worker、Worker 的物理拓扑、每个 Worker 的容量等等,Master 会在启动时加载这些配置信息。
  2. 汇报。主要是集群动态信息,Worker 在运行时,主动将自身状态汇报给 Master,比如 Worker 是否存活、Worker 负载信息、Worker 存了哪些数据等等。在系统运行中,Worker 会定时地通过心跳(Heartbeat)等方式,持续给 Master 汇报。

  -----》  然后,Master 就可以对整个集群情况有个掌握,从而做出一系列的决策,试举几例:

  1. 调度(Schedule)。一个新的写数据请求来了,要分配给哪个 Worker 负责?通常会选择一个负载小的。
  2. 均衡(Balance)。随着 Worker 变动、数据增删,数据在不同机器中分布可能不再均匀,在某些机器形成读写热点、在另一些机器却存在资源浪费,从而影响系统整体性能。因此需要实时监测,适时迁移。
  3. 路由(Locate/Route)。一个读写请求来了,不知道去找哪个 Worker?Master 便会查询元信息,给出对应数据的 Worker 信息。

  -----》 Master很重要,使用主备来保证其中一个master故障,可以通过选举来重新替换master。

 

Workers

在存储系统中,Workers 会存储实际数据,并对外提供数据 IO 服务。

从单机视角来看,Worker 需要设计一个贴合业务需求的单机引擎,高效的存储数据。单机引擎设计也是一个很大的话题,这里简要提一嘴:

  1. 索引设计:比如 B+ 树、LSM-tree、哈希索引等等。
  2. 底层系统:是用裸盘还是文件系统。
  3. 存储介质:使用可持久化内存、固态硬盘还是机械硬盘。

从多机视角来看,机器的数量一上去,系统中单台机器出现故障的概率便大大提高。为了应对这种常态化的故障,需要:

  1. 运维的自动化。机器不可用后要自动剔除,修好后要便捷上线。
  2. 数据的冗余化。机器故障后数据不能丢,因此每份数据要多副本存放、使用 EC 算法做冗余。

小结

Master-Workers 架构是分布式系统中最常用的一种组织方式。

还有: Master-Worker-Gcs架构。

标签:架构,机器,worker,Worker,master,分布式系统,Master,数据
From: https://www.cnblogs.com/chuting/p/16899069.html

相关文章

  • 第一章 分布式系统概述
    一、分布式系统的组成   二、分布式协调组件单机:进程间通信的可行措施有共享内存,信号量,事件单机系统有单点故障缺陷分布式协调组件的作用:对外提供分布式同步服务......
  • 报错--RuntimeError: Too many open files. Communication with the workers is no lo
    问题描述pytorch 的dataloader在读取数据时,设置了较大的batchsize和num_workers.然后训练一段时间报错:RuntimeError:Toomanyopenfiles.Communicationwith......
  • Docker基础知识 (19) - Kubernetes(二) | 搭建单个 Master 集群(一主一从)
    Kubernetes,也被称为K8s或Kube,是谷歌推出的业界最受欢迎的容器管理/运维工具(容器编排器)。它是一套自动化容器管理/运维的开源平台,包括部署、调度和节点集群的扩展等。Kub......
  • git 分支合并到master,将分支所有提交汇总为一次提交
    当有一个新的功能需要开发时,我们一般需要从master新建一个功能开发分支,如果这个功能需要的开发周期超过一天,我们一般都会留下多次commit提交。当功能开发并测试完毕,需要合......
  • 分布式系统全局唯一ID生成
    转载:https://www.cnblogs.com/liuqingzheng/p/11074623.html 一什么是分布式系统唯一ID在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在金融、电......
  • [CS] C3-1. 分布式系统
    书名:分布式系统:概念与设计中文版第五版作者:GeorgeCoulouris/JeanDollimore/TimKindberg/GordonBlairISBN:9787111403920第一章1.分布式系统构建原因主......
  • XIicPs_MasterSendPolled和XIicPs_MasterRecvPolled
    Xilinx FPGA的IIC程序中的XIicPs_MasterSendPolled和XIicPs_MasterRecvPolled函数的使用,8位寄存器地址写入24位数据硬件平台:黑金AX7010开发板vivado版本:Vivado2017.4SDK......
  • gunicorn workers
    我们在第一篇里已经了解过gunicorn的SyncWorker原理,现在我们来看下其他的workers是如何工作的)Eventlet如果你打开eventlet的官网Eventlet是一个Pytho......
  • GapWorker导致RecyclerView视频播放声音残留问题
    场景描述App有两个tab,每一个都是Fragment,以FragmentA和FragmentB代称.切到FragmentA视频播放(在RecyclerViewA内部),然后切到FragmentB视频暂停.就在此刻,滑动FragmentB......
  • git合并master到本地分支
    首先将自己本地分支dev上的代码正常提交到git上,拉取代码到自己本地。然后:1.切换到master主分支上gitcheckoutmaster 2.将master更新的代码拉取到本地gitpul......