自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

互聯(lián)網(wǎng)架構(gòu),究竟為什么需要配置中心?

開發(fā) 開發(fā)工具 架構(gòu)
配置中心是互聯(lián)網(wǎng)架構(gòu)體系中很重要的一塊,但為什么會(huì)有配置中心,是不是一開始就要有配置中心,它究竟解決什么問題,這是今天要討論的問題。

配置中心是互聯(lián)網(wǎng)架構(gòu)體系中很重要的一塊,但為什么會(huì)有配置中心,是不是一開始就要有配置中心,它究竟解決什么問題,這是今天要討論的問題。

隨著互聯(lián)網(wǎng)業(yè)務(wù)的越來越復(fù)雜,用戶量與流量越來越大,“服務(wù)化分層”是架構(gòu)演進(jìn)的必由之路。

如上圖,站點(diǎn)應(yīng)用會(huì)調(diào)用服務(wù),上游服務(wù)調(diào)用底層服務(wù),依賴關(guān)系會(huì)變得非常復(fù)雜。

對(duì)于同一個(gè)服務(wù):

(1)它往往有多個(gè)上游調(diào)用;

(2)為了保證高可用,它往往是若干個(gè)節(jié)點(diǎn)組成的集群提供服務(wù);

如上圖,用戶中心服務(wù)user-service有三個(gè)節(jié)點(diǎn),ip1/ip2/ip3對(duì)上游提供服務(wù),任何一個(gè)節(jié)點(diǎn)當(dāng)機(jī),都不影響服務(wù)的可用性。

那么問題來了:

  • 調(diào)用方如何維護(hù)下游服務(wù)集群配置?
  • 當(dāng)服務(wù)集群增減節(jié)點(diǎn)時(shí),調(diào)用方是否有感知?

初期:“配置私藏”架構(gòu)

“配置私藏”是配置的最初級(jí)階段,上游調(diào)用下游,每個(gè)上游都有一個(gè)專屬的私有配置文件,記錄被調(diào)用下游的每個(gè)節(jié)點(diǎn)配置信息。

如上圖:

  • 用戶中心user-service有ip1/ip2/ip3三個(gè)節(jié)點(diǎn);
  • service1調(diào)用了用戶中心,它有一個(gè)專屬配置文件s1.conf,里面配置了us的集群是ip1/ip2/ip3;
  • service2也調(diào)用了用戶中心,同理有個(gè)配置文件s2.conf,記錄了us集群是ip1/ip2/ip3;
  • web2也調(diào)用了用戶中心,同理w2.conf,配置了us集群是ip1/ip2/ip3;

畫外音:是不是很熟悉?絕大部分公司,初期都是這么玩的。

“配置私藏”架構(gòu)的缺點(diǎn)是什么呢?

來看一個(gè)容量變化的需求:

  • 運(yùn)維檢測(cè)出ip1節(jié)點(diǎn)的硬盤性能下降,通知研發(fā)未來要將ip1節(jié)點(diǎn)下線;
  • 由于5月8日要做大促運(yùn)營(yíng)活動(dòng),未來流量會(huì)激增,研發(fā)準(zhǔn)備增加兩個(gè)節(jié)點(diǎn)ip4和ip5;

此時(shí)要怎么做呢?

需要用戶中心的負(fù)責(zé)人通知所有上游調(diào)用者,修改“私藏”的配置,并重啟上游,連接到新的集群上去。在ip1上沒有流量之后,通知運(yùn)維將ip1節(jié)點(diǎn)下線,以完成整個(gè)縮容擴(kuò)容過程。

這種方案存在什么問題呢?

當(dāng)業(yè)務(wù)復(fù)雜度較高,研發(fā)人數(shù)較多,服務(wù)依賴關(guān)系較復(fù)雜的時(shí)候,就沒這么簡(jiǎn)單了。

問題一:調(diào)用方很痛,容量變化的是你,憑啥修改配置重啟的是我?這是一個(gè)典型的“反向依賴”架構(gòu)設(shè)計(jì),上下游通過配置耦合,不合理。

問題二:服務(wù)方很痛,ta不知道有多少個(gè)上游調(diào)用了自己,往往只能通過以下方式來定位上游:

  • 群里吼
  • 發(fā)郵件詢問
  • 通過連接找到ip,通過ip問運(yùn)維,找到機(jī)器負(fù)責(zé)人,再通過機(jī)器負(fù)責(zé)人找到對(duì)應(yīng)調(diào)用服務(wù)

畫外音:是不是似曾相識(shí)?

不管哪種方式,都很有可能遺漏,導(dǎo)致ip1一直有流量難以下線,ip4/ip5的流量難以均勻遷移過來。該如何優(yōu)化呢?

中期:“全局配置”架構(gòu)

架構(gòu)的升級(jí)并不是一步到位的,先來用最低的成本來解決上述“修改配置重啟”的問題一。

“全局配置”架構(gòu):對(duì)于通用的服務(wù),建立全局配置文件,消除配置私藏:

  • 運(yùn)維層面制定規(guī)范,新建全局配置文件,例如/opt/global.conf;畫外音:如果配置較多,注意做好配置的垂直拆分。
  • 對(duì)于服務(wù)方,如果是通用的服務(wù),集群信息配置在global.conf里;
  • 對(duì)于調(diào)用方,調(diào)用方禁止配置私藏,必須從global.conf里讀取通用下游配置;

全局配置有什么好處呢?

  • 如果下游容量變化,只需要修改一處配置global.conf,而不需要各個(gè)上游修改;
  • 調(diào)用方下一次重啟的時(shí)候,自動(dòng)遷移到擴(kuò)容后的集群上來了;
  • 修改成本非常小,讀取配置文件目錄變了而已;

全局配置有什么不足呢?

如果調(diào)用方一直不重啟,就沒有辦法將流量遷移到新集群上去了。

有沒有方面實(shí)現(xiàn)自動(dòng)流量遷移呢?

答案是肯定的,只需要引入兩個(gè)并不復(fù)雜的組件,就能實(shí)現(xiàn)調(diào)用方的流量自動(dòng)遷移:

  • 文件監(jiān)控組件FileMonitor:作用是監(jiān)控文件的變化,起一個(gè)timer,定期監(jiān)控文件的ModifyTime或者md5就能輕松實(shí)現(xiàn),當(dāng)文件變化后,實(shí)施回調(diào)。
  • 動(dòng)態(tài)連接池組件DynamicConnectionPool:“連接池組件”是RPC-client中的一個(gè)子組件,用來維護(hù)與多個(gè)RPC-server節(jié)點(diǎn)之間的連接。所謂“動(dòng)態(tài)連接池”,是指連接池中的連接可以動(dòng)態(tài)增加和減少。

畫外音:用鎖來互斥,很容易實(shí)現(xiàn)。

引入了這兩個(gè)組件之后:

  • 一旦全局配置文件變化,文件監(jiān)控組件實(shí)施回調(diào);
  • 如果動(dòng)態(tài)連接池組件發(fā)現(xiàn)配置中減少了一些節(jié)點(diǎn),就動(dòng)態(tài)的將對(duì)應(yīng)連接銷毀,如果增加了一些節(jié)點(diǎn),就動(dòng)態(tài)建立連接,自動(dòng)完成下游節(jié)點(diǎn)的增容與縮容;

終版:“配置中心”架構(gòu)

“全局配置”架構(gòu)是一個(gè)能夠快速落地的,解決“修改配置重啟”問題的方案,但它仍然解決不了,服務(wù)提供方“不知道有多少個(gè)上游調(diào)用了自己”這個(gè)問題。

如果不知道多少上游調(diào)用了自己:

  • “按照調(diào)用方限流”
  • “繪制全局架構(gòu)依賴圖”

等這類需求便難以實(shí)現(xiàn),怎么辦?

“配置中心”架構(gòu)能夠完美解決

對(duì)比“全局配置”與“配置中心”的架構(gòu)圖,會(huì)發(fā)現(xiàn)配置由靜態(tài)的文件升級(jí)為動(dòng)態(tài)的服務(wù):

  • 整個(gè)配置中心子系統(tǒng)由zk、conf-center服務(wù),DB配置存儲(chǔ)與,conf-web配置后臺(tái)組成;
  • 所有下游服務(wù)的配置,通過后臺(tái)設(shè)置在配置中心里;
  • 所有上游需要拉取配置,需要去配置中心注冊(cè),拉取下游服務(wù)配置信息(ip1/ip2/ip3);

當(dāng)下游服務(wù)需要擴(kuò)容縮容時(shí):

  • conf-web配置后臺(tái)進(jìn)行設(shè)置,新增ip4/ip5,減少ip1;
  • conf-center服務(wù)將變更的配置推送給已經(jīng)注冊(cè)關(guān)注相關(guān)配置的調(diào)用方;
  • 結(jié)合動(dòng)態(tài)連接池組件,完成自動(dòng)的擴(kuò)容與縮容;

“配置中心”架構(gòu)有什么好處呢?

  • 調(diào)用方不需要再重啟;
  • 服務(wù)方從配置中心中很清楚的知道上游依賴關(guān)系,從而實(shí)施按照調(diào)用方限流;
  • 很容易從配置中心得到全局架構(gòu)依賴關(guān)系;

痛點(diǎn)一、痛點(diǎn)二同時(shí)解決。

“配置中心”架構(gòu)有什么不足呢?

  • 一來,系統(tǒng)復(fù)雜度相對(duì)較高;
  • 二來,對(duì)配置中心的可靠性要求較高,一處掛全局掛。

總結(jié)

究竟要解決什么痛點(diǎn)?

  • 上游痛:擴(kuò)容的是下游,改配置重啟的是上游;
  • 下游痛:不知道誰(shuí)依賴于自己;總之,難以實(shí)施服務(wù)治理。

究竟如何解決上述痛點(diǎn)?

  • “配置私藏”架構(gòu);
  • “全局配置文件”架構(gòu);
  • “配置中心”架構(gòu);

知其然,知其所以然。

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文

 

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2018-11-07 06:35:50

互聯(lián)網(wǎng)服務(wù)化高可用架構(gòu)

2018-01-01 06:41:44

耦合互聯(lián)網(wǎng)架構(gòu)配置中心

2016-09-22 15:01:59

微服務(wù)互聯(lián)網(wǎng)架構(gòu)

2017-01-11 21:40:03

互聯(lián)網(wǎng)架構(gòu)高并發(fā)

2016-12-06 11:56:13

互聯(lián)網(wǎng)架構(gòu)高可用

2019-03-18 07:08:53

高可用互聯(lián)網(wǎng)架構(gòu)分布式

2015-11-16 14:08:39

醫(yī)療行業(yè)互聯(lián)網(wǎng)

2021-08-27 08:44:52

MQ架構(gòu)耦合

2017-05-19 10:01:53

互聯(lián)網(wǎng)

2017-12-26 15:52:31

MQ互聯(lián)網(wǎng)耦合

2022-09-16 10:14:41

消息順序性分布式架構(gòu)

2019-04-10 14:10:02

高并發(fā)分布式系統(tǒng)架構(gòu)

2019-11-28 16:09:29

架構(gòu)模板存儲(chǔ)

2022-06-09 08:01:43

秒殺系統(tǒng)互聯(lián)網(wǎng)架構(gòu)

2015-08-24 10:34:21

云數(shù)據(jù)中心互聯(lián)網(wǎng)架構(gòu)安全

2016-09-22 15:55:39

互聯(lián)網(wǎng)架構(gòu)容量設(shè)計(jì)

2019-05-13 10:30:34

互聯(lián)網(wǎng)架構(gòu)容量

2016-09-22 14:22:53

互聯(lián)網(wǎng)

2022-08-22 15:29:16

數(shù)據(jù)中心容災(zāi)備份

2019-02-22 09:12:33

微服務(wù)架構(gòu)服務(wù)化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)