精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

微服務(wù)化很難?一文簡(jiǎn)單理解服務(wù)拆分與服務(wù)發(fā)現(xiàn)

開(kāi)發(fā) 架構(gòu) 開(kāi)發(fā)工具
說(shuō)到微服務(wù),服務(wù)拆分是繞不過(guò)去的話題,但是微服務(wù)不是說(shuō)拆就能拆的,有很多的前提條

服務(wù)拆分的前提

服務(wù)拆分的前提,首先要有一個(gè)持續(xù)集成的平臺(tái),使得服務(wù)在拆分的過(guò)程中,保持功能的一致性。

這種一致性不能通過(guò)人的經(jīng)驗(yàn)來(lái),而是需要經(jīng)過(guò)大量的回歸測(cè)試集,并且持續(xù)的拆分,持續(xù)的演進(jìn),持續(xù)的集成,從而保證系統(tǒng)時(shí)刻處于可以驗(yàn)證交付的狀態(tài)。

而非閉門拆分一段時(shí)間,最終誰(shuí)也不知道功能最終究竟有沒(méi)有 Bug,因而需要另外一個(gè)月的時(shí)間專門修改 Bug。

其次在接入層,API 和 UI 要?jiǎng)屿o分離,API 由 API 網(wǎng)關(guān)統(tǒng)一的管理,這樣后端無(wú)論如何拆分,可以保證對(duì)于前端來(lái)講,是統(tǒng)一的入口。

而且可以實(shí)現(xiàn)拆分過(guò)程中的灰度發(fā)布,路由分發(fā),流量切分,從而保證拆分的平滑進(jìn)行。

拆分后的微服務(wù)之間,為了高性能,是不建議每次調(diào)用都進(jìn)行認(rèn)證鑒權(quán)的,而是在 API 網(wǎng)關(guān)上做統(tǒng)一的認(rèn)證鑒權(quán),一旦進(jìn)入網(wǎng)關(guān),服務(wù)之間的調(diào)用就是可信的。

其三對(duì)于數(shù)據(jù)庫(kù),需要進(jìn)行良好的設(shè)計(jì),不應(yīng)該有大量的聯(lián)合查詢,而是將數(shù)據(jù)庫(kù)當(dāng)成一個(gè)簡(jiǎn)單的 key-value 查詢。

復(fù)雜的聯(lián)合查詢通過(guò)應(yīng)用層,或者通過(guò) Elasticsearch 進(jìn)行。如果數(shù)據(jù)庫(kù)表之間的耦合非常嚴(yán)重,那么服務(wù)拆分是拆不出來(lái)的。

其四要做應(yīng)用的無(wú)狀態(tài)化,只有無(wú)狀態(tài)的應(yīng)用,才能橫向擴(kuò)展,這樣拆分才有意義。

服務(wù)拆分的時(shí)機(jī)

滿足了服務(wù)拆分的前提之后,那先拆哪個(gè)模塊,后拆哪個(gè)模塊呢?什么情況下,一個(gè)模塊應(yīng)該拆分出來(lái)呢?

微服務(wù)拆分絕非一個(gè)大躍進(jìn)運(yùn)動(dòng),由高層發(fā)起,把一個(gè)應(yīng)用拆分的七零八落的,最終大大增加運(yùn)維成本,但是并不會(huì)帶來(lái)收益。

微服務(wù)拆分的過(guò)程,應(yīng)該是一個(gè)由痛點(diǎn)驅(qū)動(dòng)的,是業(yè)務(wù)真正遇到了快速迭代和高并發(fā)的問(wèn)題。

如果不拆分,將對(duì)于業(yè)務(wù)的發(fā)展帶來(lái)影響,只有這個(gè)時(shí)候,微服務(wù)的拆分是有確定收益的,增加的運(yùn)維成本才是值得的。

微服務(wù)解決的問(wèn)題之一:快速迭代

互聯(lián)網(wǎng)產(chǎn)品的特點(diǎn)就是迭代速度快,一般一年半就能決出勝負(fù),***一統(tǒng)天下,第二被***收購(gòu),其他死翹翹。

所以快速上線,快速迭代,就是生命線,而且一旦成功就是百億身家,所以無(wú)論付出多大運(yùn)維成本,使用微服務(wù)架構(gòu)都是值得的。

這也就是為什么大部分使用微服務(wù)架構(gòu)的都是互聯(lián)網(wǎng)企業(yè),因?yàn)閷?duì)于這些企業(yè)來(lái)講收益明顯。

而對(duì)于很多傳統(tǒng)的應(yīng)用,半年更新一次,企業(yè)運(yùn)營(yíng)相對(duì)平穩(wěn),IT 系統(tǒng)的好壞對(duì)于業(yè)務(wù)沒(méi)有關(guān)鍵性影響,在他們眼中,微服務(wù)化改造帶來(lái)的效果,還不如開(kāi)發(fā)多加幾次班。

微服務(wù)拆分時(shí)機(jī)一:提交代碼頻繁出現(xiàn)大量沖突

微服務(wù)對(duì)于快速迭代的效果,首先是開(kāi)發(fā)獨(dú)立,如果是一單體應(yīng)用,幾百人開(kāi)發(fā)一個(gè)模塊,如果使用 Git 做代碼管理,則經(jīng)常會(huì)遇到的事情就是代碼提交沖突。

同樣一個(gè)模塊,你也改,他也改,幾百人根本沒(méi)辦法溝通。所以當(dāng)你想提交一個(gè)代碼的時(shí)候,發(fā)現(xiàn)和別人提交的沖突了,于是因?yàn)槟闶呛筇峤坏娜耍阌胸?zé)任去 Merge 代碼。

好不容易 Merge 成功了,等再次提交的時(shí)候,發(fā)現(xiàn)又沖突了,你是不是很惱火。隨著團(tuán)隊(duì)規(guī)模越大,沖突概率越大。

所以應(yīng)該拆分成不同的模塊,每十個(gè)人左右維護(hù)一個(gè)模塊,也即一個(gè)工程,首先代碼沖突的概率小多了,而且有了沖突,一個(gè)小組一吼,基本上問(wèn)題就解決了。

每個(gè)模塊對(duì)外提供接口,其他依賴模塊可以不用關(guān)注具體的實(shí)現(xiàn)細(xì)節(jié),只需要保證接口正確就可以。

微服務(wù)拆分時(shí)機(jī)二:小功能要積累到大版本才能上線,上線開(kāi)總監(jiān)級(jí)別大會(huì)

微服務(wù)對(duì)于快速迭代的效果,首先是上線獨(dú)立。如果沒(méi)有拆分微服務(wù),每次上線都是一件很痛苦的事情。

當(dāng)你修改了一個(gè)邊角的小功能,但是你不敢馬上上線,因?yàn)槟阋蕾嚨钠渌K才開(kāi)發(fā)了一半,你要等他,等他好了,也不敢馬上上線,因?yàn)榱硪粋€(gè)被依賴的模塊也開(kāi)發(fā)了一半。

當(dāng)所有的模塊都耦合在一起,互相依賴,誰(shuí)也沒(méi)辦法獨(dú)立上線,而是需要總監(jiān)協(xié)調(diào)各個(gè)團(tuán)隊(duì),大家開(kāi)大會(huì),約定一個(gè)時(shí)間點(diǎn),無(wú)論大小功能,死活都要這天上線。

這種模式導(dǎo)致上線的時(shí)候,單次上線的需求列表非常長(zhǎng),風(fēng)險(xiǎn)比較大,可能小功能的錯(cuò)誤會(huì)導(dǎo)致大功能的上線不正常。

將如此長(zhǎng)的功能,需要一點(diǎn)點(diǎn) Check,且要非常小心,這樣上線時(shí)間長(zhǎng),影響范圍大。因而這種的迭代速度快不了,頂多一個(gè)月一次就不錯(cuò)了。

服務(wù)拆分后,在接口穩(wěn)定的情況下,不同的模塊可以獨(dú)立上線。這樣上線的次數(shù)增多,單次上線的需求列表變小,可以隨時(shí)回滾,風(fēng)險(xiǎn)變小,時(shí)間變短,影響面小,從而迭代速度加快。

對(duì)于接口要升級(jí)部分,保證灰度,先做接口新增,而非原接口變更,當(dāng)注冊(cè)中心中監(jiān)控到的調(diào)用情況,發(fā)現(xiàn)接口已經(jīng)不用了,再刪除。

微服務(wù)解決的問(wèn)題之二:高并發(fā)

互聯(lián)網(wǎng)一個(gè)產(chǎn)品的特點(diǎn)就是在短期內(nèi)要積累大量的用戶,這甚至比營(yíng)收和利潤(rùn)還重要,如果沒(méi)有大量的用戶基數(shù),融資都會(huì)有問(wèn)題。

因而對(duì)于并發(fā)量不大的系統(tǒng),進(jìn)行微服務(wù)化的驅(qū)動(dòng)力差一些,如果只有不多的用戶在線,多線程就能解決問(wèn)題,最多做好無(wú)狀態(tài)化,前面部署個(gè)負(fù)載均衡,單體應(yīng)用部署多份。

微服務(wù)拆分時(shí)機(jī)三:橫向擴(kuò)展流程復(fù)雜,主要業(yè)務(wù)和次要業(yè)務(wù)耦合

單體應(yīng)用無(wú)狀態(tài)化之后,雖然通過(guò)部署多份,可以承載一定的并發(fā)量,但是資源非常浪費(fèi)。

因?yàn)橛械臉I(yè)務(wù)是需要擴(kuò)容的,例如下單和支付,有的業(yè)務(wù)是不需要擴(kuò)容的,例如注冊(cè)。如果一起擴(kuò)容,消耗的資源可能是拆分后的幾倍,成本可能多出幾個(gè)億。

而且由于配置復(fù)雜,在同一個(gè)工程里面,往往在配置文件中是這樣組織的:這一塊是這個(gè)模塊的,下一塊是另一個(gè)模塊的。

這樣擴(kuò)容的時(shí)候,一些邊角的業(yè)務(wù),也是需要對(duì)配置進(jìn)行詳細(xì)審核,否則不敢貿(mào)然擴(kuò)容。

微服務(wù)拆分時(shí)機(jī)四:熔斷降級(jí)全靠 if-else

在高并發(fā)場(chǎng)景下,我們希望一個(gè)請(qǐng)求如果不成功,不要占用資源,應(yīng)該盡快失敗,盡快返回,而且希望當(dāng)一些邊角的業(yè)務(wù)不正常的情況下,主要業(yè)務(wù)流程不受影響。

這就需要熔斷策略,也即當(dāng) A 調(diào)用 B,而 B 總是不正常的時(shí)候,為了讓 B 不要波及到 A,可以對(duì) B 的調(diào)用進(jìn)行熔斷,也即 A 不調(diào)用 B,而是返回暫時(shí)的 fallback 數(shù)據(jù),當(dāng) B 正常的時(shí)候,再放開(kāi)熔斷,進(jìn)行正常的調(diào)用。

有時(shí)候?yàn)榱吮WC核心業(yè)務(wù)流程,邊角的業(yè)務(wù)流程,如評(píng)論,庫(kù)存數(shù)目等,人工設(shè)置為降級(jí)的狀態(tài),也即默認(rèn)不調(diào)用,將所有的資源用于大促的下單和支付流程。

如果核心業(yè)務(wù)流程和邊角業(yè)務(wù)流程在同一個(gè)進(jìn)程中,就需要使用大量的 if-else 語(yǔ)句,根據(jù)下發(fā)的配置來(lái)判斷是否熔斷或者降級(jí),這會(huì)使得配置異常復(fù)雜,難以維護(hù)。

如果核心業(yè)務(wù)和邊角業(yè)務(wù)分成兩個(gè)進(jìn)程,就可以使用標(biāo)準(zhǔn)的熔斷降級(jí)策略,配置在某種情況下,放棄對(duì)另一個(gè)進(jìn)程的調(diào)用,可以進(jìn)行統(tǒng)一的維護(hù)。

服務(wù)拆分的方法

好了,當(dāng)你覺(jué)得要將一個(gè)程序的某個(gè)部分拆分出來(lái)的時(shí)候,有什么方法可以保障平滑嗎?

首先要做的,就是原有工程代碼的標(biāo)準(zhǔn)化,我們常稱為“任何人接手任何一個(gè)模塊都能看到熟悉的面孔”。

例如打開(kāi)一個(gè) Java 工程,應(yīng)該有以下的 package:

  • API 接口包:所有的接口定義都在這里,對(duì)于內(nèi)部的調(diào)用,也要實(shí)現(xiàn)接口,這樣一旦要拆分出去,對(duì)于本地的接口調(diào)用,就可以變?yōu)檫h(yuǎn)程的接口調(diào)用。
  • 訪問(wèn)外部服務(wù)包:如果這個(gè)進(jìn)程要訪問(wèn)其他進(jìn)程,對(duì)于外部訪問(wèn)的封裝都在這里,對(duì)于單元測(cè)試來(lái)講,對(duì)于這部分的 Mock,可以使得不用依賴第三方,就能進(jìn)行功能測(cè)試。對(duì)于服務(wù)拆分,調(diào)用其他的服務(wù),也是在這里。
  • 數(shù)據(jù)庫(kù) DTO:如果要訪問(wèn)數(shù)據(jù)庫(kù),在這里定義原子的數(shù)據(jù)結(jié)構(gòu)。
  • 訪問(wèn)數(shù)據(jù)庫(kù)包:訪問(wèn)數(shù)據(jù)庫(kù)的邏輯全部在這個(gè)包里面。
  • 服務(wù)與商務(wù)邏輯:這里實(shí)現(xiàn)主要的商業(yè)邏輯,拆分也是從這里拆分出來(lái)。
  • 外部服務(wù):對(duì)外提供服務(wù)的邏輯在這里,對(duì)于接口的提供方,要實(shí)現(xiàn)在這里。

另外是測(cè)試文件夾,每個(gè)類都應(yīng)該有單元測(cè)試,要審核單元測(cè)試覆蓋率,模塊內(nèi)部應(yīng)該通過(guò) Mock 的方法實(shí)現(xiàn)集成測(cè)試。

接下來(lái)是配置文件夾,配置 profile,配置分為幾類:

  • 內(nèi)部配置項(xiàng)。(啟動(dòng)后不變,改變需要重啟)
  • 集中配置項(xiàng)。(配置中心,可動(dòng)態(tài)下發(fā))
  • 外部配置項(xiàng)。(外部依賴,和環(huán)境相關(guān))

當(dāng)一個(gè)工程的結(jié)構(gòu)非常標(biāo)準(zhǔn)化之后,接下來(lái)在原有服務(wù)中,先獨(dú)立功能模塊 ,規(guī)范輸入輸出,形成服務(wù)內(nèi)部的分離。

在分離出新的進(jìn)程之前,先分離出新的 jar,只要能夠分離出新的 jar,基本也就實(shí)現(xiàn)了松耦合。

接下來(lái),應(yīng)該新建工程,新啟動(dòng)一個(gè)進(jìn)程,盡早的注冊(cè)到注冊(cè)中心,開(kāi)始提供服務(wù),這個(gè)時(shí)候,新的工程中的代碼邏輯可以先沒(méi)有,只是轉(zhuǎn)調(diào)用原來(lái)的進(jìn)程接口。

為什么要越早獨(dú)立越好呢?哪怕還沒(méi)實(shí)現(xiàn)邏輯先獨(dú)立呢?因?yàn)榉?wù)拆分的過(guò)程是漸進(jìn)的。

伴隨著新功能的開(kāi)發(fā),新需求的引入,這個(gè)時(shí)候,對(duì)于原來(lái)的接口,也會(huì)有新的需求進(jìn)行修改。

如果你想把業(yè)務(wù)邏輯獨(dú)立出來(lái),獨(dú)立了一半,新需求來(lái)了,改舊的,改新的都不合適。

新的還沒(méi)獨(dú)立提供服務(wù),舊的如果改了,會(huì)造成從舊工程遷移到新工程,邊遷移邊改變,合并更加困難。

如果盡早獨(dú)立,所有的新需求都進(jìn)入新的工程,所有調(diào)用方更新的時(shí)候,都改為調(diào)用新的進(jìn)程,對(duì)于老進(jìn)程的調(diào)用會(huì)越來(lái)越少,最終新進(jìn)程將老進(jìn)程全部代理。

接下來(lái)就可以將老工程中的邏輯逐漸遷移到新工程,由于代碼遷移不能保證邏輯的完全正確,因而需要持續(xù)集成,灰度發(fā)布,微服務(wù)框架能夠在新老接口之間切換。

最終當(dāng)新工程穩(wěn)定運(yùn)行,并且在調(diào)用監(jiān)控中,已經(jīng)沒(méi)有對(duì)于老工程的調(diào)用的時(shí)候,就可以將老工程下線了。

服務(wù)拆分的規(guī)范

微服務(wù)拆分之后,工程會(huì)比較的多,如果沒(méi)有一定的規(guī)范,將會(huì)非常混亂,難以維護(hù)。

首先人們經(jīng)常問(wèn)的一個(gè)問(wèn)題是,服務(wù)拆分之后,原來(lái)都在一個(gè)進(jìn)程里面的函數(shù)調(diào)用,現(xiàn)在變成了 A 調(diào)用 B 調(diào)用 C 調(diào)用 D 調(diào)用 E,會(huì)不會(huì)因?yàn)檎{(diào)用鏈路過(guò)長(zhǎng)而使得調(diào)用相應(yīng)變慢呢?

服務(wù)拆分的規(guī)范一:服務(wù)拆分最多三層,兩次調(diào)用

服務(wù)拆分是為了橫向擴(kuò)展,因而應(yīng)該橫向拆分,而非縱向拆成一串。也即應(yīng)該將商品和訂單拆分,而非下單的十個(gè)步驟拆分,然后一個(gè)調(diào)用一個(gè)。

縱向的拆分最多三層:

  • 基礎(chǔ)服務(wù)層:用于屏蔽數(shù)據(jù)庫(kù),緩存層,提供原子的對(duì)象查詢接口。有了這一層,當(dāng)數(shù)據(jù)層做一定改變的時(shí)候,例如分庫(kù)分表,數(shù)據(jù)庫(kù)擴(kuò)容,緩存替換等。對(duì)于上層透明,上層僅僅調(diào)用這一層的接口,不直接訪問(wèn)數(shù)據(jù)庫(kù)和緩存。
  • 組合服務(wù)層:這一層調(diào)用基礎(chǔ)服務(wù)層,完成較為復(fù)雜的業(yè)務(wù)邏輯,實(shí)現(xiàn)分布式事務(wù)也多在這一層。
  • Controller 層:接口層,調(diào)用組合服務(wù)層對(duì)外。

服務(wù)拆分的規(guī)范二:僅僅單向調(diào)用,嚴(yán)禁循環(huán)調(diào)用

微服務(wù)拆分后,服務(wù)之間的依賴關(guān)系復(fù)雜,如果循環(huán)調(diào)用,升級(jí)的時(shí)候就很頭疼,不知道應(yīng)該先升級(jí)哪個(gè),后升級(jí)哪個(gè),難以維護(hù)。

因而層次之間的調(diào)用規(guī)定如下:

  • 基礎(chǔ)服務(wù)層主要做數(shù)據(jù)庫(kù)的操作和一些簡(jiǎn)單的業(yè)務(wù)邏輯,不允許調(diào)用其他任何服務(wù)。
  • 組合服務(wù)層,可以調(diào)用基礎(chǔ)服務(wù)層,完成復(fù)雜的業(yè)務(wù)邏輯,可以調(diào)用組合服務(wù)層,不允許循環(huán)調(diào)用,不允許調(diào)用 Controller 層服務(wù)。
  • Controller 層,可以調(diào)用組合業(yè)務(wù)層服務(wù),不允許被其他服務(wù)調(diào)用。

如果出現(xiàn)循環(huán)調(diào)用,例如 A 調(diào)用 B,B 也調(diào)用 A,則分成 Controller 層和組合服務(wù)層兩層,A 調(diào)用 B 的下層,B 調(diào)用 A 的下層。也可以使用消息隊(duì)列,將同步調(diào)用,改為異步調(diào)用。

服務(wù)拆分的規(guī)范三:將串行調(diào)用改為并行調(diào)用,或者異步化

如果有的組合服務(wù)處理流程的確很長(zhǎng),需要調(diào)用多個(gè)外部服務(wù),應(yīng)該考慮如何通過(guò)消息隊(duì)列,實(shí)現(xiàn)異步化和解耦。

例如下單之后,要刷新緩存,要通知倉(cāng)庫(kù)等,這些都不需要再下單成功的時(shí)候就要做完,而是可以發(fā)一個(gè)消息給消息隊(duì)列,異步通知其他服務(wù)。

而且使用消息隊(duì)列的好處是,你只要發(fā)送一個(gè)消息,無(wú)論下游依賴方有一個(gè),還是有十個(gè),都是一條消息搞定,只不過(guò)多幾個(gè)下游監(jiān)聽(tīng)消息即可。

對(duì)于下單必須同時(shí)做完的,例如扣減庫(kù)存和優(yōu)惠券等,可以進(jìn)行并行調(diào)用,這樣處理時(shí)間會(huì)大大縮短,不是多次調(diào)用的時(shí)間之和,而是最長(zhǎng)的那個(gè)系統(tǒng)調(diào)用時(shí)間。

服務(wù)拆分的規(guī)范四:接口應(yīng)該實(shí)現(xiàn)冪等

微服務(wù)拆分之后,服務(wù)之間的調(diào)用當(dāng)出現(xiàn)錯(cuò)誤的時(shí)候,一定會(huì)重試,但是為了不要下兩次單,支付兩次,需要所有的接口實(shí)現(xiàn)冪等。

冪等一般需要設(shè)計(jì)一個(gè)冪等表來(lái)實(shí)現(xiàn),冪等表中的主鍵或者唯一鍵可以是 transaction id,或者 business id,可以通過(guò)這個(gè) id 的唯一性標(biāo)識(shí)一個(gè)唯一的操作。

也有冪等操作使用狀態(tài)機(jī),當(dāng)一個(gè)調(diào)用到來(lái)的時(shí)候,往往觸發(fā)一個(gè)狀態(tài)的變化,當(dāng)下次調(diào)用到來(lái)的時(shí)候,發(fā)現(xiàn)已經(jīng)不是這個(gè)狀態(tài),就說(shuō)明上次已經(jīng)調(diào)用過(guò)了。

狀態(tài)的變化需要是一個(gè)原子操作,也即并發(fā)調(diào)用的時(shí)候,只有一次可以執(zhí)行。可以使用分布式鎖,或者樂(lè)觀鎖 CAS 操作實(shí)現(xiàn)。

服務(wù)拆分的規(guī)范五:接口數(shù)據(jù)定義嚴(yán)禁內(nèi)嵌,透?jìng)?/strong>

微服務(wù)接口之間傳遞數(shù)據(jù),往往通過(guò)數(shù)據(jù)結(jié)構(gòu),如果數(shù)據(jù)結(jié)構(gòu)透?jìng)鳎瑥牡讓右恢钡缴蠈邮褂猛粋€(gè)數(shù)據(jù)結(jié)構(gòu)。

或者上層的數(shù)據(jù)結(jié)構(gòu)內(nèi)嵌底層的數(shù)據(jù)結(jié)構(gòu),當(dāng)數(shù)據(jù)結(jié)構(gòu)中添加或者刪除一個(gè)字段的時(shí)候,波及的面會(huì)非常大。

因而接口數(shù)據(jù)定義,在每?jī)蓚€(gè)接口之間約定,嚴(yán)禁內(nèi)嵌和透?jìng)鳎幢悴畈欢啵矐?yīng)該重新定義。

這樣接口數(shù)據(jù)定義的改變,影響面僅僅在調(diào)用方和被調(diào)用方,當(dāng)接口需要更新的時(shí)候,比較可控,也容易升級(jí)。

服務(wù)拆分的規(guī)范六:規(guī)范化工程名

微服務(wù)拆分后,工程名非常多,開(kāi)發(fā)人員,開(kāi)發(fā)團(tuán)隊(duì)也非常多,如何讓一個(gè)開(kāi)發(fā)人員看到一個(gè)工程名,或者 jar 的名稱,就大概知道是干什么的,需要一個(gè)規(guī)范化的約定。

例如出現(xiàn) pay 就是支付,出現(xiàn) order 就是下單,出現(xiàn) account 就是用戶。

再如出現(xiàn) compose 就是組合層,controller 就是接口層,basic 就是基礎(chǔ)服務(wù)層。

出現(xiàn) api 就是接口定義,impl 就是實(shí)現(xiàn)。pay-compose-api 就是支付組合層接口定義。account-basic-impl 就是用戶基礎(chǔ)服務(wù)層的實(shí)現(xiàn)。

服務(wù)發(fā)現(xiàn)的選型

微服務(wù)拆分后,服務(wù)之間的調(diào)用需要服務(wù)發(fā)現(xiàn)和注冊(cè)中心進(jìn)行維護(hù)。主流的有如下幾種方法:

Dubbo

***是 Dubbo。Dubbo 是 SOA 架構(gòu)的微服務(wù)框架的標(biāo)準(zhǔn),已經(jīng)被大量使用。

雖然中間中斷維護(hù)過(guò)一段時(shí)間,但是隨著微服務(wù)的興起,重新進(jìn)行了維護(hù),是很多熟悉 Dubbo RPC 開(kāi)發(fā)人員的***。

Spring Cloud

第二種是 Spring Cloud。Spring Cloud 為微服務(wù)而生,在 Dubbo 已經(jīng)沒(méi)有人維護(hù)的情況下,推出了支撐微服務(wù)的成熟框架。

Dubbo VS Spring Cloud 的對(duì)比:Dubbo 更加注重服務(wù)治理,原生功能不夠全面,而 Spring Cloud 注重整個(gè)微服務(wù)生態(tài),工具鏈非常全面。

Spring Cloud 可定制性強(qiáng),通過(guò)各種組件滿足各種微服務(wù)場(chǎng)景,使用 Spring Boot 統(tǒng)一編程模型,能夠快速構(gòu)建應(yīng)用,基于注解,使用方便,但是學(xué)習(xí)門檻比較高。

Dubbo 注冊(cè)到 ZooKeeper 里面的是接口,而 Spring Cloud 注冊(cè)到 Eureka 或者 Consul 里面的是實(shí)例。

在規(guī)模比較小的情況下沒(méi)有分別,但是規(guī)模一旦大了,例如實(shí)例數(shù)目萬(wàn)級(jí)別,接口數(shù)據(jù)就算十萬(wàn)級(jí)別,對(duì)于 ZooKeeper 中的樹(shù)規(guī)模比較大。

而且 ZooKeeper 是強(qiáng)一致性的,當(dāng)一個(gè)節(jié)點(diǎn)掛了的時(shí)候,節(jié)點(diǎn)之間的數(shù)據(jù)同步會(huì)影響線上使用,而 Spring Cloud 就好很多,實(shí)例級(jí)別少一個(gè)量級(jí),另外 Consul 也非強(qiáng)一致的。

Kubernetes

第三是 Kubernetes。Kubernetes 雖然是容器平臺(tái),但是他設(shè)計(jì)出來(lái),就是為了跑微服務(wù)的,因而提供了微服務(wù)運(yùn)行的很多組件。

很多 Spring Cloud 可以做的事情,Kubernetes 也有相應(yīng)的機(jī)制,而且由于是容器平臺(tái),相對(duì)比較通用,可以支持多語(yǔ)言,對(duì)于業(yè)務(wù)無(wú)侵入。

但是也正因?yàn)槭侨萜髌脚_(tái),對(duì)于微服務(wù)的運(yùn)行生命周期的維護(hù)比較全面,對(duì)于服務(wù)之間的調(diào)用和治理,比較弱,Service 只能滿足最最基本的服務(wù)發(fā)現(xiàn)需求。

因而實(shí)踐中使用的時(shí)候,往往是 Kubernetes 和 Spring Cloud 結(jié)合使用,Kubernetes 負(fù)責(zé)提供微服務(wù)的運(yùn)行環(huán)境;服務(wù)之間的調(diào)用和治理,由 Spring Cloud 搞定。

Service Mesh

第四是 Service Mesh。Service Mesh 一定程度上彌補(bǔ)了 Kubernetes 對(duì)于服務(wù)治理方面的不足,對(duì)業(yè)務(wù)代碼 0 侵入,將服務(wù)治理下沉到平臺(tái)層,是服務(wù)治理的一個(gè)趨勢(shì)。

然而 Service Mesh 需要使用單獨(dú)的進(jìn)程進(jìn)行請(qǐng)求轉(zhuǎn)發(fā),性能還不能讓人滿意,另外社區(qū)比較新,成熟度不足,暫時(shí)沒(méi)有達(dá)到大規(guī)模生產(chǎn)使用的標(biāo)準(zhǔn)。

福利來(lái)啦

結(jié)合自身情況請(qǐng)談?wù)勀鷮?duì)微服務(wù)架構(gòu)的理解。掃描下方二維碼,關(guān)注51CTO技術(shù)棧公眾號(hào)。歡迎在技術(shù)棧微信公眾號(hào)留言探討。小編將選出留言最精彩的 10 名網(wǎng)友,送出《Spring Cloud微服務(wù)架構(gòu)開(kāi)發(fā)實(shí)戰(zhàn)》圖書(shū)一本~活動(dòng)截止時(shí)間 9 月 20 日十二時(shí)整,特別鳴謝機(jī)械工業(yè)出版社為本次活動(dòng)提供的圖書(shū)贊助。等不及送書(shū)的小伙伴,可以點(diǎn)擊閱讀原文直接購(gòu)買。

書(shū)籍簡(jiǎn)介

本書(shū)首先從微服務(wù)架構(gòu)興起的背景講起,探討了為何在分布式系統(tǒng)開(kāi)發(fā)中微服務(wù)架構(gòu)將逐漸取代單體架構(gòu);然后對(duì) Spring Cloud 所提供的微服務(wù)組件及解決方案進(jìn)行了一一講解,從而讓讀者不但可以系統(tǒng)地學(xué)習(xí) Spring Cloud 的相關(guān)知識(shí),而且還可以全掌握微服務(wù)架構(gòu)應(yīng)用的設(shè)計(jì)、開(kāi)發(fā)、部署和運(yùn)維等知識(shí)。

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2022-09-21 16:56:16

設(shè)計(jì)模式微服務(wù)架構(gòu)

2022-03-31 08:15:38

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

2020-10-29 08:55:04

微服務(wù)

2023-11-21 08:37:09

2022-11-09 09:15:31

ProtoBufGo語(yǔ)言

2024-11-06 16:27:12

2023-09-07 23:25:34

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

2019-10-12 08:59:36

軟件DevOps技術(shù)

2025-01-20 00:10:00

Go語(yǔ)言Kratos

2021-06-10 11:12:23

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

2024-06-27 10:50:01

2022-01-16 23:10:40

語(yǔ)言服務(wù)注冊(cè)

2022-06-17 12:05:25

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

2022-08-14 07:04:44

微服務(wù)架構(gòu)設(shè)計(jì)模式

2019-11-07 15:07:30

微服務(wù)模式反模式

2020-05-11 14:35:11

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

2019-05-28 10:30:16

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

2017-06-25 13:33:25

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

2022-03-28 11:27:17

Kubernetes運(yùn)維服務(wù)發(fā)現(xiàn)

2024-07-02 10:58:53

點(diǎn)贊
收藏

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

国产传媒一区在线| 成人综合一区| 亚洲五码中文字幕| 国产精品区一区| av大全在线观看| 亚洲男人都懂第一日本| 欧美老肥妇做.爰bbww| 国产成人一区二区三区别| 色哟哟中文字幕| 亚洲欧美bt| 色偷偷偷亚洲综合网另类| 久久久精品人妻一区二区三区| 51av在线| 欧美激情一区二区| 成人免费视频网站入口| 国产乱码77777777| 欧美三区美女| 成人精品gif动图一区| …久久精品99久久香蕉国产| 国产毛片毛片毛片毛片毛片毛片| 亚洲www啪成人一区二区| 亚洲女厕所小便bbb| 精品国产综合久久| 国产乱人乱偷精品视频a人人澡| 精品999日本| 日韩一中文字幕| 日韩 中文字幕| 久久亚洲精精品中文字幕| 欧美性xxxxxxxxx| 国产在线视频综合| 午夜免费福利在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 国产精品综合网站| www.国产com| 欧美精品午夜| 久久久精品电影| 波多野在线播放| 日韩极品在线| 精品福利一区二区三区免费视频| 岛国av在线免费| 中文字幕21页在线看| 亚洲午夜精品在线| 69精品丰满人妻无码视频a片| www.av在线| 国产午夜精品久久久久久免费视| 国内一区二区三区在线视频| 国产后入清纯学生妹| 久久成人羞羞网站| 亚洲天堂网在线观看| 成人啪啪18免费游戏链接| 亚洲日本免费电影| 欧美日韩一区二区三区高清| 国产精品第12页| 蜜桃视频在线观看免费视频| 亚洲福利一区二区三区| 17c丨国产丨精品视频| 免费av毛片在线看| 中文字幕一区二区日韩精品绯色| 亚洲不卡一卡2卡三卡4卡5卡精品| 免费av网站观看| 高清不卡在线观看| 国产精品日韩一区二区| 国产91免费看| 成人91在线观看| 国产尤物99| 亚洲欧洲综合在线| 久久久久国产精品人| 欧美日韩精品免费观看| 精品久久久久一区二区三区| 免费精品视频最新在线| 国产精品成人va在线观看| 天天天天天天天干| 久久99深爱久久99精品| 4444kk亚洲人成电影在线| 亚洲精选一区二区三区| 成人av先锋影音| 免费看成人午夜电影| 激情视频在线观看免费| 国产精品久久久久久久久免费桃花 | 中文字幕有码在线观看| 亚洲一区二区在线观看视频| 久久国产精品视频在线观看| 婷婷六月国产精品久久不卡| 欧美日韩国产123区| 日本少妇xxx| 香蕉久久精品| 久久天天躁狠狠躁夜夜躁| 亚洲精品第一国产综合野| 久久草视频在线看| 都市激情在线视频| 亚洲欧美乱综合| 日韩精品视频在线观看视频| 亚洲欧洲高清| 欧美精品在线观看一区二区| www.黄色网| 免费国产自久久久久三四区久久| 日韩在线观看免费网站| 日韩女同强女同hd| 蜜臀av国产精品久久久久| 高清不卡一区二区三区| 黄色网址在线播放| 亚洲黄色小说网站| 日韩福利视频在线| 91国内精品白嫩初高生| 国产一区二区三区高清在线观看| 国产探花在线免费观看| 久久影院亚洲| 成人在线观看网址| av在线之家电影网站| 亚洲国产一区二区视频| 亚洲小视频网站| 日韩系列在线| 欧美猛交免费看| 区一区二在线观看| 成人精品鲁一区一区二区| 亚洲精品电影在线一区| 在线免费av资源| 日韩欧美一区在线| 国产传媒在线看| 国产模特精品视频久久久久| 亚洲专区中文字幕| av在线电影观看| 欧美日韩国产丝袜另类| 亚洲天堂av一区二区| 少妇精品久久久一区二区| 欧美激情日韩图片| 国产精品欧美久久久久天天影视| 久久久久一区二区三区四区| 欧美精品一区二区三区三州| 精品精品视频| 日韩一级黄色av| 天天爱天天做天天爽| 久久亚洲二区三区| 免费无码毛片一区二三区| 试看120秒一区二区三区| 色偷偷偷亚洲综合网另类 | 搞黄视频免费在线观看| 欧美色播在线播放| 五十路六十路七十路熟婆 | 国产精品宾馆在线精品酒店| 99这里只有精品视频| 欧美成人精品不卡视频在线观看| 一区二区视频播放| 国产日产亚洲精品系列| 成人一区二区三| 美女久久久久| 国产精品成人久久久久| 久久av少妇| 色综合久久综合中文综合网| 欧美色图亚洲激情| 久久狠狠婷婷| 欧美美乳视频网站在线观看| 亚洲最大网站| 亚洲欧美日韩天堂| 无码人妻丰满熟妇区bbbbxxxx| 91日韩一区二区三区| 人妻有码中文字幕| 国产精品日韩精品中文字幕| 国产999在线观看| av男人的天堂在线| 欧美精三区欧美精三区| 粉嫩av性色av蜜臀av网站| 国产精品综合视频| 九九热只有这里有精品| 日韩深夜影院| 国产精品午夜视频| av香蕉成人| 精品对白一区国产伦| 久久夜靖品2区| 久久久久成人黄色影片| 午夜久久久精品| 中文一区一区三区免费在线观看| 97人人澡人人爽| 亚洲欧洲日本韩国| 日韩中文字幕在线精品| 精品国产av鲁一鲁一区| 亚洲成av人影院| 亚洲一区二区自偷自拍 | 亚洲成av人**亚洲成av**| 亚洲成人免费电影| 亚欧在线免费观看| 91精品啪在线观看国产18| 91沈先生播放一区二区| 手机av在线| 色吧影院999| 免费成人在线看| 欧美在线观看一二区| www.5588.com毛片| 26uuu精品一区二区三区四区在线| 另类小说第一页| 伊人激情综合| 涩涩涩999| 超碰97久久| 国产精品亚洲网站| 国产美女高潮在线| 色哟哟网站入口亚洲精品| 六月丁香综合网| 欧美午夜理伦三级在线观看| 国产系列精品av| 久久精品视频一区二区| 亚洲精品无码久久久久久久| 六月丁香综合| 欧美黑人在线观看| 久久激情电影| 九九99玖玖| 国产成人视屏| 日本成人免费在线| 欧美videosex性极品hd| 在线色欧美三级视频| 黄色片一区二区三区| 欧美喷潮久久久xxxxx| 91精品国产乱码久久久张津瑜| ㊣最新国产の精品bt伙计久久| 无码人妻精品一区二区三区温州| 国产精品自拍一区| 91最新在线观看| 国产日韩欧美三级| 国产在线视频综合| 性欧美69xoxoxoxo| 日韩精品福利视频| 欧美美女黄色| 成人精品一二区| 视频91a欧美| 国产精品久久久久久久久久免费| 美女av在线免费看| 欧美国产乱视频| 麻豆视频免费在线观看| 在线播放亚洲激情| 国产专区在线播放| 日韩av影片在线观看| 国产香蕉在线观看| 日韩一区二区在线看| 91麻豆视频在线观看| 欧美最猛性xxxxx直播| 日本中文字幕第一页| 亚洲第一搞黄网站| 久久中文字幕无码| 一区二区日韩av| 免费一级片在线观看| 亚洲手机成人高清视频| 欧美午夜激情影院| 欧美激情综合五月色丁香小说| 加勒比一区二区| 91网站在线播放| 成人免费网站黄| 久久久国产午夜精品| av在线网站观看| 久久先锋影音av| 蜜桃精品一区二区| 久久久国产精品不卡| 国产中年熟女高潮大集合| 91蜜桃在线观看| 37p粉嫩大胆色噜噜噜| 久久久精品一品道一区| 中文字幕第4页| 国产欧美精品日韩区二区麻豆天美| 中文字幕免费视频| 欧美极品美女视频| 亚洲熟女毛茸茸| 亚洲视频中文字幕| 久久亚洲AV无码| 亚洲成a人片综合在线| 久久久久久久黄色片| 色香蕉成人二区免费| 97人妻精品视频一区| 欧美色国产精品| 国产熟女一区二区三区四区| 日韩欧美一级二级| 性xxxx搡xxxxx搡欧美| 亚洲精品午夜精品| 久久日韩视频| 欧美精品999| 自由日本语热亚洲人| 国产精品一区二区三区成人| 久久久久毛片免费观看| 国精产品一区二区| 北条麻妃国产九九九精品小说| 国产成年人在线观看| 国内久久视频| 青青在线免费观看视频| 国产真实精品久久二三区| 无码人妻一区二区三区在线| 久久精品这里都是精品| 午夜爽爽爽男女免费观看| 亚洲一区二区三区影院| 中文字幕在线播| 3d成人h动漫网站入口| 人妻无码中文字幕| 中文字幕日韩高清| 电影k8一区二区三区久久| 国产福利视频一区| 日韩视频一区二区三区四区| 牛人盗摄一区二区三区视频| 国产精品久久久久一区二区三区厕所| www.好吊操| 免费在线观看成人| 一级黄色电影片| 久久精品在线免费观看| 九九九在线视频| 欧美亚男人的天堂| 少妇av在线播放| 日韩性生活视频| 中日韩脚交footjobhd| 91精品国产自产在线老师啪| 日韩有码一区| 亚洲成人动漫在线| 久久久777| 亚洲少妇一区二区三区| 中文字幕av一区二区三区| 亚洲激情视频一区| 69久久99精品久久久久婷婷| 欧美高清成人| 国模视频一区二区三区| 99精品视频在线免费播放| 噜噜噜噜噜久久久久久91| 欧美日本精品| 97超碰成人在线| 国产亚洲综合在线| 日韩高清免费av| 91精品久久久久久久99蜜桃| 精品久久av| 欧美亚洲免费电影| 高清一区二区三区| 亚洲天堂第一区| 久热成人在线视频| 亚洲午夜久久久久久久国产| 欧美日韩国产精品一区| 亚洲乱色熟女一区二区三区| 中文字幕国产亚洲2019| 亚洲成人不卡| 免费h精品视频在线播放| 亚洲激情综合| 最新日本中文字幕| 一区二区三区蜜桃| 国产免费黄色大片| 久久手机免费视频| 四虎国产精品永久在线国在线| 亚洲欧洲精品一区二区三区波多野1战4 | 欧美一区免费观看| 欧美日韩一区二区在线视频| 国产人成在线观看| 国产精品aaa| 欧美老女人另类| 91网址在线播放| 国产精品青草综合久久久久99| 国产污视频网站| 亚洲最新av在线网站| 国产精品亚洲一区二区三区在线观看| 精品国产乱码久久久久久郑州公司| 伊人久久亚洲美女图片| 午夜免费福利影院| 精品久久久久久久久久久久久久| 日本精品一区二区在线观看| 国内精品久久久久久中文字幕| 成人黄色av网址| 1024av视频| 久久久精品国产99久久精品芒果 | 欧美精品123区| 国产福利在线播放麻豆| 国产v亚洲v天堂无码| 99国产精品视频免费观看一公开| 特大黑人巨人吊xxxx| 91精品1区2区| 麻豆传媒视频在线观看免费| 91中文精品字幕在线视频| 欧美激情1区| 免费黄色三级网站| 色婷婷亚洲精品| 淫片在线观看| 99re在线播放| 中文一区在线| 欧美丰满美乳xxⅹ高潮www| 欧美人伦禁忌dvd放荡欲情| 日韩欧美一起| 久久久久久精| 久久电影国产免费久久电影| 国产在线观看99| 亚洲人成电影网站色www| 欧美性生活一级| 国产女教师bbwbbwbbw| www国产成人| 亚洲在线免费观看视频| 久久久视频免费观看| 精品国产中文字幕第一页| 波多野结衣网页| 色呦呦日韩精品| 国产激情在线视频| 国内一区在线| 麻豆精品一二三| 日韩欧美视频在线免费观看| 中文字幕综合一区| 美女一区2区| 亚洲图片 自拍偷拍| 欧美日韩国产一区二区三区| 瑟瑟视频在线| 欧美xxxx黑人又粗又长密月 | 欧美日韩亚洲精品内裤| 黄色在线观看网站| 久久综合九色综合网站| 国内精品久久久久影院色|