成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

分布式系統架構之一Master-Workers 架構

開發 架構 分布式
分布式系統有很多經典的套路,也即設計模式。每個設計模式可以解決經典的一類問題,積累的多了,便可以稍加變化,進行取舍,設計出貼合需求的架構組織。

[[409063]]

本文轉載自微信公眾號「木鳥雜記」,作者穆尼奧。轉載本文請聯系木鳥雜記公眾號。

分布式系統有很多經典的套路,也即設計模式。每個設計模式可以解決經典的一類問題,積累的多了,便可以稍加變化,進行取舍,設計出貼合需求的架構組織。但似乎大家在這方面經驗分享的不太多,因此之后打算總結一些工作和學習的經驗,既是備忘,也希望對大家有些助益。篇幅所限、能力所囿,難以面面俱到,又或疏于精確。不當之處,歡迎指正。

每篇將以概述背景、架構模塊、總結延伸來分別解析,本篇是第一篇:Master-Workers 架構。

概述

Master-Workers 架構(粗譯為主從架構)是分布式系統中常見的一種組織方式,如 GFS 中的 Master、ChunkServers;MapReduce 中的 Master、Workers。面對分布式系統中一堆分離的機器資源,主從架構是一種最自然、直白的組織方式——就像一群人,有個說了算 leader 進行組織、協調,才能最大化這群人的對外輸出能力。

這也是計算機系統中常見的一種分而治之思想的體現。即將一個復雜的系統,拆解成幾個相對高內聚、低耦合的子模塊,定義清楚其功能邊界和交互接口,使得系統易于理解、維護和擴展。對于主從架構來說,主(Master) 通常會維護集群元信息、進而依靠這些元信息進行調度,從(Workers) 通常負責具體數據切片(存儲系統)的讀寫或者作為子任務(計算系統)的執行單元。

架構模塊

主從架構系統,通常由單個 Master ,多個 Worker 組成。插一句,這里從英文翻譯沒有用 Slave 的原因是,我覺得 Worker 更中性一些。當然,單個 Master 會有性能瓶頸和可用性問題,通常也有多種解決方案,后面詳說。但單個 Master 的好處是顯而易見的:Master 作為一個控制節點,而不用處理由多副本帶來的一致性問題,大大降低實現難度。

以我更熟悉一點的存儲系統架構為例,其架構圖通常長這樣。

master-workers architecture

除了系統內部的 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 一身。業界也有很多解決辦法,比如:

  1. 使用主備。即給 Master 做個分身,備 Master 所有元信息要時刻跟主 Master 保持一致,一旦主 Master 掛掉,分身立刻跟上。Hadoop 后來這么干過。
  2. 使用共識算法(consensus algorithm)。簡單來說,就是由一堆 Master 機器來組成委員會,每個狀態變更都要通過某種算法達成共識。Google 的 Spanner 就是這么干的。
  3. 無主。系統中不再有 Master,人人平等,然后通過某種策略,比如說一致性哈希(consistent hash),來分活干。Amazon 的 Dynamo 是這么干的。

每種策略都是比較大的主題,以后可以分別單開一篇,本文限于篇幅不再展開。

Workers

在存儲系統中,Workers 會存儲實際數據,并對外提供數據 IO 服務。

從單機視角來看,Worker 需要設計一個貼合業務需求的單機引擎,高效的存儲數據。單機引擎設計也是一個很大的話題,這里簡要提一嘴:

  1. 索引設計:比如 B+ 樹、LSM-tree、哈希索引等等。
  2. 底層系統:是用裸盤還是文件系統。
  3. 存儲介質:使用可持久化內存、固態硬盤還是機械硬盤。

從多機視角來看,機器的數量一上去,系統中單臺機器出現故障的概率便大大提高。為了應對這種常態化的故障,需要:

運維的自動化。機器不可用后要自動剔除,修好后要便捷上線。

數據的冗余化。機器故障后數據不能丟,因此每份數據要多副本存放、使用 EC 算法做冗余。

小結

Master-Workers 架構是分布式系統中最常用的一種組織方式。該架構類似于人類社群的組織方式,將系統的職責進行拆解,Master 收集元信息,并據此進行任務調度;Workers 負責實際工作負載,需要設計高效的單機引擎,并配合全局做冗余。該架構簡單直接,但威力強大。

 

責任編輯:武曉燕 來源: 木鳥雜記
相關推薦

2023-05-29 14:07:00

Zuul網關系統

2017-12-20 16:15:30

分布式系統架構

2019-12-26 08:59:20

Redis主從架構

2019-10-10 09:16:34

Zookeeper架構分布式

2018-12-14 10:06:22

緩存分布式系統

2015-08-03 15:48:42

Hadoop大數據

2013-03-22 15:55:22

Web架構架構

2016-08-12 15:17:40

分布式

2017-10-19 08:45:15

存儲系統HBase

2012-05-10 14:04:07

分布式文件系統架構

2020-02-12 15:02:39

KVM架構圖分布式

2024-03-05 09:52:57

2018-01-23 15:55:23

分布式系統架構

2019-07-19 08:46:58

2019-07-19 19:53:01

2025-02-14 08:50:00

架構開發軟件

2017-10-30 08:52:27

vSAN架構RAID

2022-03-06 21:43:05

Citus架構PostgreSQL

2011-03-11 16:02:05

2023-09-12 22:58:51

分布式架構微服務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 2019天天操| 亚洲国产成人精品女人久久久 | av在线一区二区三区 | 国产在线精品一区二区 | 色婷婷亚洲国产女人的天堂 | 日本精品一区二区三区视频 | 性色av香蕉一区二区 | 欧美激情五月 | 亚洲国产一 | 成人免费毛片片v | 午夜看电影在线观看 | 久久精品色视频 | 精品成人| 可以免费观看的av片 | 亚洲国产区 | 久久精品视频亚洲 | 欧美另类视频在线 | 亚洲精品三级 | 热99在线| 中文成人无字幕乱码精品 | 国产色网站 | 免费色网址| 欧美日韩国产精品激情在线播放 | 国产精品久久久久aaaa | 国产天天操 | 久久久精品 | 日韩美女在线看免费观看 | 精品真实国产乱文在线 | 国产成人在线视频 | 日韩在线视频网址 | 伊人精品在线视频 | 在线激情视频 | 亚洲av毛片 | 成人在线小视频 | 欧美国产中文字幕 | 亚洲精品久久久 | 久久久久国产精品午夜一区 | 亚洲a毛片 | 91精品久久久久久久99 | 日韩国产中文字幕 | 亚洲精品欧美 |