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

存在多個(gè)不同注冊(cè)中心的時(shí)候,如何平滑的統(tǒng)一注冊(cè)中心?

開發(fā) 開發(fā)工具
只要是Spring Cloud構(gòu)建的業(yè)務(wù)服務(wù),那么就只需要逐步的更換注冊(cè)中心的依賴,就能輕松的把原本處于不同注冊(cè)中心下的服務(wù),轉(zhuǎn)移到同一注冊(cè)中心下的服務(wù)了。

[[401960]]

本文轉(zhuǎn)載自微信公眾號(hào)「程序猿DD」,作者翟永超。轉(zhuǎn)載本文請(qǐng)聯(lián)系程序猿DD公眾號(hào)。

這幾天在不同的微信群和社區(qū)里連續(xù)碰到了一類問題:

比如spring4all的帖子:http://bbs.spring4all.com/thread/21

又比如昨天在秦總的群里也進(jìn)行了類似的討論。

雖然描述不同,但核心都圍繞著一個(gè)問題:多個(gè)不同注冊(cè)中心下的服務(wù)治理問題!下面就針對(duì)這個(gè)問題,展開說說我的思考、實(shí)踐與建議吧。

為什么會(huì)有這樣的場(chǎng)景?

先來說說背景問題,有的群友在看到這類問題的時(shí)候,第一反應(yīng)就是怎么用多個(gè)注冊(cè)中心,是不是蛋疼了瞎搞的?

顯然有點(diǎn)腦子的人都不會(huì)這樣做!那么為什么會(huì)存在這樣的場(chǎng)景呢,通常都是這樣演變而來的:

  1. 缺少統(tǒng)一的基礎(chǔ)技術(shù)平臺(tái)管理,幾乎所有做大的企業(yè)都會(huì)碰到這樣的問題。為了業(yè)務(wù)野蠻發(fā)展的時(shí)期,技術(shù)團(tuán)隊(duì)是很少有精力去做這些治理的,通過系統(tǒng)邊界劃分好之后,因?yàn)橄到y(tǒng)與系統(tǒng)間的交互通過協(xié)議定義規(guī)范就好,每個(gè)系統(tǒng)內(nèi)部的技術(shù)棧根據(jù)團(tuán)隊(duì)特性選擇自己最擅長(zhǎng)的就行,并不需要去統(tǒng)一就能又好又快的去完成各個(gè)系統(tǒng)的建設(shè)。所以,不同的系統(tǒng)選擇不同的注冊(cè)中心來治理自己的服務(wù),并沒有什么不妥。
  2. 隨著業(yè)務(wù)的發(fā)展,業(yè)務(wù)需要調(diào)整,架構(gòu)需要進(jìn)化,復(fù)雜的系統(tǒng)關(guān)系(以往我們自己開發(fā)的系統(tǒng),并購進(jìn)來的系統(tǒng),外部采購的系統(tǒng))需要被重建。不論是以微服務(wù)的方式,還是中臺(tái)的方式去重新劃分系統(tǒng)邊界,勢(shì)必要對(duì)現(xiàn)有服務(wù)做重新規(guī)劃與治理。
  3. 由于系統(tǒng)復(fù)雜,我們沒法一步就位,只能一點(diǎn)點(diǎn)的往改造目標(biāo)去轉(zhuǎn)變。勢(shì)必會(huì)存在一個(gè)新老共存,逐步轉(zhuǎn)化的演進(jìn)過程。為了能夠平滑的過渡改造的過程,我們第一個(gè)想到的就是先把服務(wù)治理統(tǒng)一起來,讓所有內(nèi)部服務(wù)都可以簡(jiǎn)單和便捷的發(fā)現(xiàn)彼此并能夠互相調(diào)用。同時(shí),多種多樣的注冊(cè)中心造成的運(yùn)維復(fù)雜度也能通過統(tǒng)一服務(wù)治理體系得以解決。

于是,這就有了文首大家討論的這種場(chǎng)景。所以,這是一個(gè)架構(gòu)演進(jìn)的過程產(chǎn)物,并不是因?yàn)樵O(shè)計(jì)不好,才出來的怪胎架構(gòu)。

兩種統(tǒng)一服務(wù)治理的思路

方案一:在業(yè)務(wù)服務(wù)端,實(shí)現(xiàn)多注冊(cè)中心的注冊(cè)與發(fā)現(xiàn)

這種方式就是文首,大家所提問題的方案,實(shí)現(xiàn)這種方案涉及幾點(diǎn)核心問題的解決:

  1. 服務(wù)注冊(cè)的擴(kuò)展:我們知道Spring Cloud的注冊(cè)機(jī)制是對(duì)單注冊(cè)中心的,同時(shí)配套的發(fā)現(xiàn)也一樣。我們并不能通過多配置一套服務(wù)發(fā)現(xiàn)接口的實(shí)現(xiàn)來實(shí)現(xiàn)多注冊(cè)中心的實(shí)現(xiàn)。所以,你需要以一套主注冊(cè)中心為Spring Cloud自身的Bean實(shí)現(xiàn),外圍需要另外去學(xué)多套(根據(jù)注冊(cè)中心數(shù)量)注冊(cè)客戶端的實(shí)現(xiàn)。
  2. 服務(wù)發(fā)現(xiàn)的擴(kuò)展:對(duì)于非主注冊(cè)中心的注冊(cè)操作實(shí)現(xiàn)了一套,那么發(fā)現(xiàn)機(jī)制也要實(shí)現(xiàn)一套。同時(shí),因?yàn)檫@里的服務(wù)發(fā)現(xiàn),并不與Spring Cloud的服務(wù)發(fā)現(xiàn)機(jī)制綁定,所以這些服務(wù)并不會(huì)進(jìn)入到Spring Cloud配置的注冊(cè)中心下的ServiceList和對(duì)應(yīng)的ServerList里。所以在服務(wù)發(fā)現(xiàn)模塊,需要自己把這些外部注冊(cè)中心獲取的服務(wù)和實(shí)例加入到主注冊(cè)中心下的ServiceList和ServerList里。

同時(shí),這里需要注意的幾個(gè)點(diǎn):

  • 因?yàn)闃I(yè)務(wù)服務(wù)往每個(gè)注冊(cè)中心里都注冊(cè)了,所以在發(fā)現(xiàn)的時(shí)候,是會(huì)有重疊的,這里要做好去重。
  • 對(duì)于服務(wù)名稱的管理也需要防重,不同系統(tǒng)下有一些諸如用戶中心之類的服務(wù)命名是很容易沖突的,可以用系統(tǒng)編碼做前綴來加工服務(wù)名,以保證融合后不存在重復(fù)的出現(xiàn)。

通過這樣一頓操作,每個(gè)業(yè)務(wù)服務(wù)與所有注冊(cè)中心都建立了聯(lián)系,原本處于不同系統(tǒng)的各種服務(wù)也都能互相發(fā)現(xiàn)并實(shí)現(xiàn)互相調(diào)用了。

方案二:在各個(gè)注冊(cè)中心之間,實(shí)現(xiàn)服務(wù)數(shù)據(jù)的同步

這種方法是新建一個(gè)注冊(cè)中心同步的服務(wù),它的任務(wù)很簡(jiǎn)單,就是把每個(gè)注冊(cè)中心上的服務(wù)信息同步到其他注冊(cè)中心上,同時(shí)監(jiān)聽每個(gè)注冊(cè)中心的變化以保持所有不同注冊(cè)中間都包含了所有系統(tǒng)下的服務(wù)。

在這種情況下,只要是Spring Cloud構(gòu)建的業(yè)務(wù)服務(wù),那么就只需要逐步的更換注冊(cè)中心的依賴,就能輕松的把原本處于不同注冊(cè)中心下的服務(wù),轉(zhuǎn)移到同一注冊(cè)中心下的服務(wù)了。

兩種思路的優(yōu)缺點(diǎn)比較

上面所述兩種方案的大致優(yōu)缺點(diǎn)如下:

  方案一 方案二
優(yōu)點(diǎn) 不需增加部署成本 業(yè)務(wù)服務(wù)侵入性小
缺點(diǎn) 業(yè)務(wù)服務(wù)侵入性大 需要增加部署成本

當(dāng)然,對(duì)于方案二也會(huì)有一些復(fù)雜情況,如果對(duì)注冊(cè)過程有一些特殊定制的,會(huì)需要做一些擴(kuò)展兼容。但比起方案一的改造程度來說,在業(yè)務(wù)應(yīng)用側(cè)的邏輯復(fù)雜度植入是非常小的。

同時(shí),因?yàn)橐y(tǒng)一服務(wù)治理,那么事后最終狀態(tài)往往就是只保留最后想要集中維護(hù)的注冊(cè)中心的。這個(gè)時(shí)候。如果采用第一種方案,那么勢(shì)必還要去重新調(diào)整注冊(cè)與發(fā)現(xiàn)機(jī)制,將要淘汰的注冊(cè)與發(fā)現(xiàn)邏輯去除,又是一件比較復(fù)雜的事情。

所以,綜合比較這兩種方法方法來說。個(gè)人認(rèn)為采用方案二,同步注冊(cè)中心的數(shù)據(jù)來完成統(tǒng)一服務(wù)治理的任務(wù),要比方案一更加穩(wěn)妥,對(duì)于業(yè)務(wù)開發(fā)的影響面最小。雖然會(huì)引入一些部署成本,但這些成本對(duì)于一個(gè)多系統(tǒng)的基礎(chǔ)下,那是微乎其微的。

原文鏈接:https://mp.weixin.qq.com/s/7_K7-vw2Yu7ByjyqGcLGYw

 

責(zé)任編輯:武曉燕 來源: 程序猿DD
相關(guān)推薦

2024-11-08 13:39:49

JavaScript注冊(cè)中心語言

2023-12-21 08:35:30

注冊(cè)中心EurakaEtcd

2022-08-30 22:12:19

Nacos組件服務(wù)注冊(cè)

2022-07-26 08:14:16

注冊(cè)中心ProviderConsumer

2025-01-16 00:20:41

2024-12-27 00:37:46

2024-03-18 08:50:20

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

2022-08-26 01:46:33

注冊(cè)中心NacosDNS

2022-04-27 20:02:22

Dubbo注冊(cè)中心開發(fā)

2021-08-04 11:54:25

Nacos注冊(cè)中心設(shè)計(jì)

2025-03-31 08:35:00

Eureka微服務(wù)架構(gòu)

2024-04-10 12:22:19

DubboNacos微服務(wù)

2024-12-03 10:55:56

微服務(wù)架構(gòu)注冊(cè)中心

2022-02-10 20:09:24

Dubbo源碼Provider

2022-04-05 13:10:15

consul分布式高可用

2023-01-30 22:43:39

DubboZooKeeper

2023-10-30 09:35:01

注冊(cè)中心微服務(wù)

2021-01-07 09:56:26

FormatterSpringFormatterRe

2020-01-10 10:58:34

ZooKeeperEureka注冊(cè)中心

2023-02-26 00:00:00

點(diǎn)贊
收藏

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