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

我來教你如何給注冊(cè)中心錦上添花?

開發(fā) 開發(fā)工具
配置本不是注冊(cè)中心必備的功能,配置一般由配置中心管理,但配置中心似乎又和注冊(cè)中心脫不了干系,Nacos就是一個(gè)集注冊(cè)中心和配置中心于一體的組件。

hello,大家好,我是小樓。

在上一篇文章《??如何組裝一個(gè)注冊(cè)中心??》中,我們看到了如何利用一些現(xiàn)有的技術(shù)方案來組裝出一個(gè)生產(chǎn)可用的注冊(cè)中心最小集。

有的同學(xué)看完表示學(xué)到了,也有同學(xué)直呼不過癮,能不能手寫一個(gè)注冊(cè)中心?能不能繼續(xù)展開說說?

由于精力有限,手寫一個(gè)注冊(cè)中心暫時(shí)還不行,展開說說倒是可以滿足。

于是本期打算以注冊(cè)中心的周邊能力展開說說,這些能力屬于錦上添花,沒有它們注冊(cè)中心可以正常運(yùn)行,有了它們也不一定變得更強(qiáng),但一定會(huì)更加花里胡哨。

那可能有讀者會(huì)問,花里胡哨的有什么用呢?我覺得主要是了解一些新的、奇怪的知識(shí),說不定哪天能用上呢,是吧?

控制臺(tái)

如果想讓注冊(cè)中心變得花里胡哨,首先肯定是開發(fā)一個(gè)控制臺(tái),控制臺(tái)的基本功能就是展示服務(wù)的消費(fèi)者與提供者,展示的用處有查找服務(wù),排查問題等等,下圖是Nacos的控制臺(tái):

圖片

除了基本的展示功能,我們還可以在控制臺(tái)上搞些別的事情,比如下面這些。

服務(wù)配置

配置本不是注冊(cè)中心必備的功能,配置一般由配置中心管理,但配置中心似乎又和注冊(cè)中心脫不了干系,Nacos就是一個(gè)集注冊(cè)中心和配置中心于一體的組件。

注冊(cè)中心也可以做一點(diǎn)和服務(wù)相關(guān)配置的事情,比如服務(wù)的超時(shí)時(shí)間、熔斷降級(jí)等等元數(shù)據(jù),不過要注意的是注冊(cè)中心本身只能保存、修改,至于這些配置真正起作用的還是得和RPC框架配合。

可能你會(huì)問,為什么注冊(cè)中心要去做配置中心的事兒呢?這不是職責(zé)不清?

可以這么理解,服務(wù)發(fā)現(xiàn)基本是個(gè)服務(wù)都要接入,但配置中心可不一定要接,如果只想做點(diǎn)簡(jiǎn)單的服務(wù)相關(guān)的動(dòng)態(tài)配置,引入一個(gè)配置中心是有點(diǎn)重。

如果是公司生產(chǎn)級(jí)的服務(wù)配置,最好再附帶上一個(gè)灰度的能力,如果一次下發(fā)配置到全部機(jī)器,可能會(huì)出現(xiàn)故障,所以需要一種灰度下發(fā)的機(jī)制,分批下發(fā),控制風(fēng)險(xiǎn)。

事件追蹤

說到問題排查,光展示提供者、消費(fèi)者可能還不夠,有時(shí)候啟動(dòng)一個(gè)提供者,消費(fèi)者就是沒感知到,或者很久之后才感知到,這時(shí)有點(diǎn)摸不著頭腦,如果我們拿出這個(gè)事件的時(shí)間線,哪個(gè)環(huán)節(jié)出問題便一目了然。

在Nacos的企業(yè)版中就支持了類似的推送軌跡功能,當(dāng)然這么好的功能,肯定是收費(fèi)項(xiàng)。

拓?fù)潢P(guān)系

可能我們忽略了注冊(cè)中心的繪制服務(wù)之間的拓?fù)潢P(guān)系的能力,開源注冊(cè)中心基本沒提到這個(gè),一般來說拓?fù)潢P(guān)系是鏈路追蹤的活。

圖片

注冊(cè)中心其實(shí)也大致可以干這個(gè)活,不過注冊(cè)中心是按照服務(wù)的訂閱關(guān)系繪制出來,并不是按照真實(shí)的調(diào)用關(guān)系,但這幾乎也近似調(diào)用關(guān)系了,有了這個(gè),我們就可以去做一些服務(wù)治理相關(guān)的事了,比如循環(huán)依賴、依賴層級(jí)太深等問題都可以看出來。

流量控制

流量控制也不一定非要在注冊(cè)中心上做,比如Dubbo就是在RPC框架上做了很多流量相關(guān)的事情,像集群的選擇、路由、負(fù)載均衡等。

如果RPC框架沒這么強(qiáng)大的能力,或者RPC框架是多語言的實(shí)現(xiàn),能力尚未打平,那么在注冊(cè)中心上實(shí)現(xiàn)也是一個(gè)不錯(cuò)的選擇。

路由偏好

路由偏好簡(jiǎn)單來說,如果提供者有多個(gè)集群,挑選一個(gè)更適合的集群來提供服務(wù),這就叫路由偏好。

舉個(gè)例子,例如消費(fèi)者在杭州,提供者有兩個(gè)集群,一個(gè)在上海,一個(gè)在北京,這兩個(gè)機(jī)房提供的服務(wù)完全對(duì)等,這時(shí)消費(fèi)者更適合調(diào)用本地的集群,這樣時(shí)延更小。

圖片

當(dāng)然我們還可以根據(jù)服務(wù)器的性能、甚至自定義的規(guī)則來做路由偏好。

動(dòng)態(tài)切流

有了上面路由偏好的鋪墊,想必你也能想到一個(gè)場(chǎng)景,萬一有一天上海的提供者不可用了,我們可以通過對(duì)注冊(cè)中心的干預(yù),手動(dòng)把北京的提供者下發(fā)給消費(fèi)者,實(shí)現(xiàn)一個(gè)客戶端無侵入的動(dòng)態(tài)切流。

流量劫持

流量劫持和動(dòng)態(tài)切流的原理一樣,實(shí)現(xiàn)也基本差不多,只不過下發(fā)的數(shù)據(jù)不太一樣,原先的提供者列表,被注冊(cè)中心偷天換日,換成了本地的一個(gè)端口127.0.0.1:8001。

這樣替換有什么作用呢?比如用agent來承接流量,像service mesh都有這種需求,注冊(cè)中心就可以完成流量劫持。

其實(shí)劫持還有其他作用,如果服務(wù)的提供方壓力太大,想降級(jí),但消費(fèi)者和提供者都沒有降級(jí)能力,眼看著服務(wù)快掛了,千鈞一發(fā)之際,你想到了注冊(cè)中心,手動(dòng)下發(fā)一個(gè)不存在的提供者地址,讓消費(fèi)者請(qǐng)求報(bào)錯(cuò),以保護(hù)其他服務(wù)正常運(yùn)行,這些奇奇怪怪的想法說不定都可以在注冊(cè)中心上實(shí)現(xiàn)。

探活

探活算是注冊(cè)中心的一個(gè)小功能,我們看看在這個(gè)小功能上還能玩出什么花樣。

探活擴(kuò)展

最簡(jiǎn)單的探活是端口探活,即注冊(cè)中心向提供者注冊(cè)的端口發(fā)起TCP連接請(qǐng)求,如果能成功建立連接說明服務(wù)正常。但有時(shí)又不是這樣,比如服務(wù)僵死,端口還能連接,但服務(wù)沒法提供了,這時(shí)我們需要語義級(jí)的探活。

根據(jù)提供者提供的服務(wù)和配置發(fā)起一個(gè)請(qǐng)求,如果返回和預(yù)期相符合,則判定為服務(wù)存活。

我們通常將這個(gè)探活留出擴(kuò)展點(diǎn),一般可以擴(kuò)展出HTTP、MySQL、Redis、Thrift等協(xié)議的語義探活,以HTTP為例,服務(wù)提供方配置探活的URI,注冊(cè)中心把提供方的ip、port與URI進(jìn)行拼接、發(fā)起請(qǐng)求,如果響應(yīng)符合預(yù)期(如返回碼為2xx),則這次探活成功,同理,也可擴(kuò)展出其他協(xié)議的語義級(jí)探活。

探活兜底

探活雖好,但有時(shí)候又很危險(xiǎn),如果注冊(cè)中心與提供者的網(wǎng)絡(luò)閃斷,則可能將提供者全部摘除,這是個(gè)非常危險(xiǎn)的操作,為了防止這種情況,探活兜底是很有必要的一種行為,比如同一個(gè)服務(wù)集群不能摘除超過1/3,當(dāng)然這個(gè)比例是個(gè)經(jīng)驗(yàn)值,也最好可以配置化。

生態(tài)建設(shè)

優(yōu)雅發(fā)布

優(yōu)雅發(fā)布包括優(yōu)雅退出和優(yōu)雅上線,優(yōu)雅是指在應(yīng)用退出和上線過程中沒有報(bào)錯(cuò)。

注冊(cè)中心結(jié)合發(fā)布系統(tǒng)來做優(yōu)雅發(fā)布是最好的搭配。發(fā)布系統(tǒng)在停止應(yīng)用前,向注冊(cè)中心發(fā)起禁用請(qǐng)求(停止接流),注銷后再停止應(yīng)用,服務(wù)上線后啟動(dòng)完成后,再將服務(wù)開啟,接受流量。

框架適配

一個(gè)注冊(cè)中心如果想要更多的人來使用,則需要適配各種主流開發(fā)語言如Go/Java/Cpp等,適配一些主流框架如Dubbo/SpringCloud/gRPC等,這樣用戶用起來才更加方便,缺點(diǎn)是維護(hù)成本變高。

DNS 服務(wù)發(fā)現(xiàn)

對(duì)于無法接入服務(wù)發(fā)現(xiàn)SDK的用戶,如果也想享受服務(wù)發(fā)現(xiàn)能力,怎么做呢?

業(yè)界有一種做法是自定義一個(gè)DNS攔截器,將DNS請(qǐng)求攔截,通過域名(對(duì)應(yīng)到服務(wù)名)去注冊(cè)中心找提供者。但這樣做有一個(gè)缺點(diǎn)是DNS只能發(fā)現(xiàn)ip,端口沒法自動(dòng)發(fā)現(xiàn)。

一般這種攔截器可通過中心的DNS服務(wù)器或者本地的DNS agent代理來實(shí)現(xiàn),也可以自定義編程語言的DNS解析插件來實(shí)現(xiàn),像Go/Java都可以自定義DNS解析插件,但這種就屬于入侵比較強(qiáng)了。

責(zé)任編輯:武曉燕 來源: 捉蟲大師
相關(guān)推薦

2022-07-26 08:14:16

注冊(cè)中心ProviderConsumer

2024-05-16 10:59:16

Vue項(xiàng)目前端

2024-03-06 11:14:13

ViteReact微前端

2021-07-04 10:37:56

Windows 11操作系統(tǒng)微軟

2023-07-11 06:32:03

2023-07-12 07:06:23

2023-12-21 08:35:30

注冊(cè)中心EurakaEtcd

2019-01-23 10:11:43

Python爬蟲IP

2021-05-27 11:10:23

注冊(cè)中心業(yè)務(wù)

2011-02-21 17:32:37

Vsftpd

2018-10-11 21:00:18

2022-08-19 08:17:36

JWT服務(wù)器身份信息

2024-12-27 00:37:46

2024-03-18 08:50:20

分布式系統(tǒng)機(jī)制

2022-05-08 13:05:22

職位產(chǎn)品經(jīng)理開源

2022-08-08 09:02:23

CPUID日志

2013-12-16 10:59:52

WiFi上鎖WiFi被盜

2021-11-09 06:55:03

水印圖像開發(fā)

2015-07-29 11:31:35

我來貸

2011-03-04 12:18:24

FileZilla
點(diǎn)贊
收藏

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