偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

服務發(fā)現(xiàn)如何做到持續(xù)維護服務地址在動態(tài)運維中的時效性?

云計算 分布式
隨著分布式系統(tǒng)的復雜性增加,服務發(fā)現(xiàn)成為了一個關(guān)鍵問題,促使人們探索新的解決方案。ZooKeeper,一個分布式鍵值存儲框架,曾是解決服務注冊和發(fā)現(xiàn)問題的熱門工具。

遠程服務的多樣性帶來了對“服務發(fā)現(xiàn)”概念的雙重理解。首先,我們有“百科全書式”的服務發(fā)現(xiàn),代表技術(shù)是UDDI。這種方法提供了從宏觀到微觀的信息層次,包括提供服務的企業(yè)背景(如企業(yè)實體、聯(lián)系方式、分類目錄)到具體的服務程序接口細節(jié)(例如方法名稱、參數(shù)、返回值、技術(shù)規(guī)范)。它覆蓋了服務發(fā)現(xiàn)過程中的廣泛信息需求。

另一端,我們看到了類似于DNS的“門牌號碼式”服務發(fā)現(xiàn)。這種方式專注于將服務提供者的全限定名轉(zhuǎn)換為實際的主機IP地址,其關(guān)注點更加狹窄。這種服務發(fā)現(xiàn)不深入到服務的具體提供商或其提供的方法細節(jié),而是假設服務消費者已經(jīng)掌握這些信息。在這里,服務的定位信息被簡化為“全限定名+端口號”的形式。

但隨著微服務的逐漸流行,服務的非正常宕機重啟和正常的上下線操作變得更加頻繁,僅靠著 DNS 服務器和負載均衡器等基礎設施,就顯得逐漸有些疲于應對,無法跟上服務變動的步伐了。

隨著分布式系統(tǒng)的復雜性增加,服務發(fā)現(xiàn)成為了一個關(guān)鍵問題,促使人們探索新的解決方案。ZooKeeper,一個分布式鍵值存儲框架,曾是解決服務注冊和發(fā)現(xiàn)問題的熱門工具。它在微服務的早期階段,特別是在遠程服務發(fā)現(xiàn)領(lǐng)域,占據(jù)了主導地位。然而,由于ZooKeeper是一個底層的分布式工具,它要求開發(fā)者投入大量的工作來滿足服務發(fā)現(xiàn)的具體需求。

2014年,經(jīng)過Netflix內(nèi)部長時間的實踐考驗,Eureka這一專為服務發(fā)現(xiàn)設計的工具宣布開源。Eureka的開源不僅標志著其成熟和可靠,而且由于其后被Spring Cloud納入,成為了Java開發(fā)者在遠程服務發(fā)現(xiàn)方面的首選解決方案,大大減少了服務注冊的工作量。

到了2018年,隨著Spring Cloud Eureka進入維護模式,Consul和Nacos這兩個新興的服務發(fā)現(xiàn)框架迅速崛起,接過了Eureka的接力棒。這些現(xiàn)代服務發(fā)現(xiàn)框架的發(fā)展已經(jīng)非常成熟,它們不僅支持通過DNS或HTTP進行地址轉(zhuǎn)換,還提供了包括服務健康檢查、集中配置管理、鍵值存儲、跨數(shù)據(jù)中心數(shù)據(jù)同步等多種高級功能,標志著應用級服務發(fā)現(xiàn)的一個高峰。

進入云原生時代,基礎設施的靈活性被極大增強,人們開始重新關(guān)注使用基礎設施本身來實現(xiàn)服務發(fā)現(xiàn)的透明化方式。目前,探索在基礎設施和網(wǎng)絡協(xié)議層面,如何實現(xiàn)對應用幾乎無感知且便捷的服務發(fā)現(xiàn),成為了研究的主要方向。

服務發(fā)現(xiàn)要解決注冊、維護和發(fā)現(xiàn)三大功能問題

服務發(fā)現(xiàn)流程中包含三個關(guān)鍵環(huán)節(jié):服務注冊、服務維護、和服務發(fā)現(xiàn),每個環(huán)節(jié)對于維護系統(tǒng)的高效運轉(zhuǎn)都至關(guān)重要。

服務注冊

服務注冊是服務發(fā)現(xiàn)機制的第一步。當服務啟動時,它需要以某種方式(例如,通過API調(diào)用、事件消息發(fā)布、在ZooKeeper或Etcd中記錄位置、或?qū)⑿畔⒋嫒霐?shù)據(jù)庫等)將其坐標信息注冊到服務注冊中心。這一過程既可以由應用程序自身通過特定的注解或配置完成(如Spring Cloud的@EnableDiscoveryClient注解),也可以由容器管理框架(例如Kubernetes)自動處理。

服務維護

服務維護確保服務列表的準確性和更新性。盡管許多服務發(fā)現(xiàn)框架提供了服務下線的機制,但并非所有服務都能保證優(yōu)雅地下線,可能因為故障或網(wǎng)絡問題突然中斷。因此,服務發(fā)現(xiàn)框架需要通過各種手段(如HTTP、TCP協(xié)議、長連接、心跳檢測、探針或進程狀態(tài)監(jiān)測等)自動監(jiān)控服務的健康狀況,并將不健康的服務自動下線,以避免向消費者提供無法訪問的服務地址。

服務發(fā)現(xiàn)

服務發(fā)現(xiàn)是指消費者查詢并獲得服務實際坐標信息的過程。這通常通過HTTP API請求或DNS查找操作完成,允許消費者通過服務標識(如Eureka的ServiceID、Nacos的服務名或通用的FQDN)找到服務的具體地址。盡管這里著重討論的是核心功能,許多服務發(fā)現(xiàn)框架還提供了一系列附加功能,如負載均衡、流量管理、鍵值存儲、元數(shù)據(jù)管理和業(yè)務分組等,進一步增強了服務發(fā)現(xiàn)的能力和靈活性。

為什么服務發(fā)現(xiàn)對 CAP 如此關(guān)注、如此敏感呢?

在概念模型中,服務中心所處的地位是這樣的:提供者在服務發(fā)現(xiàn)中注冊、續(xù)約和下線自己的真實坐標,消費者根據(jù)某種符號從服務發(fā)現(xiàn)中獲取到真實坐標,它們都可以看作是系統(tǒng)中平等的微服務。我們來看看這個概念模型示意圖:

圖片

服務發(fā)現(xiàn)在系統(tǒng)中的作用不同于其他服務,因為它是所有服務相互通信的基礎。就像配置中心一樣,服務發(fā)現(xiàn)也變得非常關(guān)鍵,因為幾乎所有服務都依賴它。如果服務發(fā)現(xiàn)出問題,整個系統(tǒng)都會受影響。因此,確保服務發(fā)現(xiàn)的穩(wěn)定和可靠是非常重要的,需要在技術(shù)上做好準備,以防任何可能的問題。

所以,在分布式系統(tǒng)中,服務注冊中心一般會以內(nèi)部小集群的方式進行部署,提供三個或者五個節(jié)點(通常最多七個,一般也不會更多了,否則日志復制的開銷太高)來保證高可用性。你可以看看下面給出的這個例子:


圖片


我拿前面提到的最有代表性的 Eureka 和 Consul 來舉個例子。

在分布式系統(tǒng)設計中,對于數(shù)據(jù)一致性和系統(tǒng)可用性的取舍常常是一個核心討論點,歸結(jié)為CAP理論中的兩種選擇:一致性(Consistency)與可用性(Availability),同時還要考慮分區(qū)容錯性(Partition tolerance)。Consul和Eureka這兩個服務發(fā)現(xiàn)工具就很好地體現(xiàn)了不同的設計選擇。

Consul的CP取向

Consul采用Raft協(xié)議,這是一個強調(diào)一致性的協(xié)議。在Consul的設計中,只有當多數(shù)節(jié)點確認寫入操作后,服務的注冊或變更才會被確認。這種方式確保了任何時候從集群外部讀取的服務發(fā)現(xiàn)信息都是一致的,即便這可能會犧牲一些可用性——在極端情況下,如果達不到多數(shù)節(jié)點的確認,服務更新操作可能會被阻塞。Consul通過這種設計,優(yōu)先保證了系統(tǒng)的一致性(Consistency)和分區(qū)容錯性(Partition tolerance),屬于CAP理論中的CP模型。

Eureka的AP取向

與Consul不同,Eureka的設計更傾向于保證系統(tǒng)的可用性(Availability)。它的節(jié)點間通過異步復制來交換服務注冊信息,這意味著服務注冊或變動可以立即在當前節(jié)點上反映出來,而不需要等待這些信息被復制到其他節(jié)點。這種設計雖然提高了系統(tǒng)的響應速度和可用性,使得即使在部分節(jié)點不可用的情況下,服務注冊和發(fā)現(xiàn)仍然可以繼續(xù)工作,但它犧牲了一致性——不同節(jié)點間的信息可能會出現(xiàn)暫時的不一致。Eureka通過這種方式,優(yōu)先保證了系統(tǒng)的可用性(Availability)和分區(qū)容錯性(Partition tolerance),符合CAP理論中的AP模型。

微服務架構(gòu)中的一個重要設計原則是“通過服務來實現(xiàn)獨立自治的組件”(Componentization via Services),微服務強調(diào)通過“服務”(Service)而不是“類庫”(Library)來構(gòu)建組件,這是因為兩者具有很大的差別:類庫是在編譯期靜態(tài)鏈接到程序中的,通過本地調(diào)用來提供功能;而服務是進程外組件,通過遠程調(diào)用來提供功能。

責任編輯:武曉燕 來源: 二進制跳動
相關(guān)推薦

2010-09-29 16:19:05

DHCP服務器

2019-08-08 10:18:15

運維架構(gòu)技術(shù)

2012-12-28 16:30:05

IT運維服務企業(yè)

2018-04-24 09:46:12

阿里交易運維

2023-10-28 16:06:55

2022-03-28 11:27:17

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

2018-09-13 09:39:03

騰訊運維IT

2018-08-16 08:37:03

機房運維硬件

2011-02-21 17:58:40

vsFTPd

2021-07-07 05:46:46

運維監(jiān)控Prometheus

2016-01-08 10:03:07

硅谷通吃互聯(lián)網(wǎng)

2019-07-23 16:29:59

運維

2023-07-12 12:02:06

WOT大數(shù)據(jù)流式數(shù)據(jù)湖

2011-04-13 15:54:32

Oracle數(shù)據(jù)庫維護

2018-05-24 23:26:37

云數(shù)據(jù)中心運維云計算

2016-05-23 15:20:46

游戲服務器遠程管理

2013-05-31 09:34:21

IT運維云時代IT運維審計

2018-08-29 09:23:30

2017-02-27 18:50:42

運維持續(xù)交付

2011-11-09 15:49:52

API
點贊
收藏

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