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

聊聊分布式系統(tǒng)中的服務(wù)發(fā)現(xiàn)!

系統(tǒng)
在分布式系統(tǒng)中,為了方便多個(gè)服務(wù)需要在網(wǎng)絡(luò)上相互交互,我們需要一種機(jī)制使得這些服務(wù)能夠有效地相互查找和通信,因此,本文我們將探討一種常見(jiàn)的方案:服務(wù)發(fā)現(xiàn)。

在分布式系統(tǒng)中,為了方便多個(gè)服務(wù)需要在網(wǎng)絡(luò)上相互交互,我們需要一種機(jī)制使得這些服務(wù)能夠有效地相互查找和通信,因此,本文我們將探討一種常見(jiàn)的方案:服務(wù)發(fā)現(xiàn)。

一、什么是服務(wù)發(fā)現(xiàn)?

服務(wù)發(fā)現(xiàn)是一種允許在分布式系統(tǒng)中自動(dòng)檢測(cè)和追蹤網(wǎng)絡(luò)中的各個(gè)服務(wù)實(shí)例,它主要解決的問(wèn)題是服務(wù)的動(dòng)態(tài)注冊(cè)、查找和負(fù)載均衡。

二、服務(wù)發(fā)現(xiàn)的類(lèi)型

通常來(lái)說(shuō)服務(wù)發(fā)現(xiàn)有兩種主要類(lèi)型:客戶端發(fā)現(xiàn)和服務(wù)器端發(fā)現(xiàn)。

1.客戶端發(fā)現(xiàn)

在客戶端發(fā)現(xiàn)中,服務(wù)使用者負(fù)責(zé)查詢服務(wù)注冊(cè)表以查找可用的服務(wù)實(shí)例,然后在這些實(shí)例之間對(duì)請(qǐng)求進(jìn)行負(fù)載均衡。

優(yōu)勢(shì):易于實(shí)施和理解。減少中央負(fù)載均衡器上的負(fù)載。

缺點(diǎn):

  • 使用者需要實(shí)現(xiàn)發(fā)現(xiàn)邏輯。
  • 注冊(cè)表協(xié)議中的更改需要客戶端中的更改。

比如,Netflix Eureka就是一個(gè)客戶端服務(wù)發(fā)現(xiàn)的注冊(cè)中心。

2.服務(wù)器端發(fā)現(xiàn)

在服務(wù)器端發(fā)現(xiàn)中,服務(wù)使用者向中介(負(fù)載均衡器或 API 網(wǎng)關(guān))發(fā)出請(qǐng)求,然后中介查詢服務(wù)注冊(cè)表并將請(qǐng)求路由到相應(yīng)的服務(wù)實(shí)例。

優(yōu)勢(shì):

  • 集中發(fā)現(xiàn)邏輯,降低使用者的復(fù)雜性。
  • 更易于管理和更新發(fā)現(xiàn)協(xié)議。

缺點(diǎn)

  • 引入了一個(gè)額外的網(wǎng)絡(luò)躍點(diǎn)。
  • 負(fù)載均衡器可能成為單點(diǎn)故障。

比如,AWS Elastic Load Balancer(ELB)與 AWS服務(wù)注冊(cè)表集成,以實(shí)現(xiàn)服務(wù)器端發(fā)現(xiàn)。

三、服務(wù)發(fā)現(xiàn)如何工作?

1.三個(gè)組件

服務(wù)發(fā)現(xiàn)包含三個(gè)重要的組件:服務(wù)提供者、服務(wù)使用者和服務(wù)注冊(cè)表,它們之間的關(guān)系如下圖:

  • 服務(wù)提供者(Service Provider):服務(wù)提供者在進(jìn)入系統(tǒng)時(shí)向服務(wù)注冊(cè)中心注冊(cè),并在離開(kāi)系統(tǒng)時(shí)取消注冊(cè)。
  • 服務(wù)使用者(Service Consumer):服務(wù)使用者從服務(wù)注冊(cè)表中獲取提供者的信息,然后連接到服務(wù)提供者。
  • 服務(wù)注冊(cè)表(Service Registry):服務(wù)注冊(cè)表是保存服務(wù)提供者的相關(guān)信息,當(dāng)服務(wù)提供者有變更時(shí),注冊(cè)表也能感知,以便客戶端可以通過(guò)從服務(wù)注冊(cè)表獲取最新數(shù)據(jù)。

2.工作原理

  • 服務(wù)注冊(cè):每個(gè)服務(wù)實(shí)例在啟動(dòng)時(shí)會(huì)向一個(gè)服務(wù)注冊(cè)中心(Service Registry)注冊(cè)自己,包括服務(wù)名、實(shí)例ID、IP地址、端口號(hào)等信息。
  • 服務(wù)發(fā)現(xiàn):客戶端需要訪問(wèn)某個(gè)服務(wù)時(shí),會(huì)先查詢服務(wù)注冊(cè)中心以獲取可用的服務(wù)實(shí)例列表,然后選擇一個(gè)實(shí)例進(jìn)行調(diào)用。
  • 健康檢查:服務(wù)注冊(cè)中心定期對(duì)注冊(cè)的服務(wù)實(shí)例進(jìn)行健康檢查,確保只有健康的實(shí)例在列表中,故障實(shí)例會(huì)被移除。
  • 負(fù)載均衡:在客戶端從服務(wù)注冊(cè)中心獲取服務(wù)實(shí)例列表后,通常會(huì)使用某種負(fù)載均衡策略(如輪詢、隨機(jī)、最小連接數(shù)等)來(lái)選擇具體的服務(wù)實(shí)例進(jìn)行請(qǐng)求。

四、服務(wù)發(fā)現(xiàn)的重要性

  • 減少手動(dòng)配置:服務(wù)可以動(dòng)態(tài)發(fā)現(xiàn)并相互連接,無(wú)需手動(dòng)配置和硬編碼網(wǎng)絡(luò)位置。
  • 改進(jìn)的可擴(kuò)展性:隨著新服務(wù)實(shí)例的添加或刪除,服務(wù)發(fā)現(xiàn)可確保其他服務(wù)能夠無(wú)縫適應(yīng)不斷變化的環(huán)境。
  • 增強(qiáng)的容錯(cuò)能力:服務(wù)發(fā)現(xiàn)機(jī)制通常包括運(yùn)行狀況檢查,使系統(tǒng)能夠自動(dòng)將流量從失敗的服務(wù)實(shí)例中重新路由出去。
  • 簡(jiǎn)化管理:擁有中央服務(wù)注冊(cè)表可以更輕松地監(jiān)視、管理和排除整個(gè)系統(tǒng)的故障。

五、常用服務(wù)發(fā)現(xiàn)工具

下面列舉了幾個(gè)分布式環(huán)境下常用的服務(wù)發(fā)現(xiàn)工具。

1.Eureka

Eureka Server采用的是Peer to Peer對(duì)等通信,它是一種去中心化的架構(gòu),每一個(gè) Peer都是對(duì)等的。節(jié)點(diǎn)之間通過(guò)彼此互相注冊(cè)來(lái)提高可用性,每個(gè)節(jié)點(diǎn)需要添加一個(gè)或多個(gè)有效的 serviceUrl指向其他節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)都可被視為其他節(jié)點(diǎn)的副本。,其原理圖如下:

Eureka采用的是 ACP理論中的 AP原則,因此,只要 Eureka集群中有一臺(tái) Eureka還在,就能保證注冊(cè)服務(wù)可用。

2.Consul

Consul 是一個(gè)分布式、高度可用的服務(wù)發(fā)現(xiàn)和配置系統(tǒng),它提供服務(wù)發(fā)現(xiàn)、運(yùn)行狀況檢查、鍵值存儲(chǔ)和多數(shù)據(jù)中心支持,其原理圖如下:

Consul采用的是 ACP理論中的 CP模型,使用 Raft算法來(lái)保證強(qiáng)一致性,支持多數(shù)據(jù)中心,可以避免單數(shù)據(jù)中心的單點(diǎn)故障,而其部署則需要考慮網(wǎng)絡(luò)延遲, 分片等情況等。

3.etcd + kubernetes

etcd 是一個(gè)分布式鍵值存儲(chǔ),可用于服務(wù)發(fā)現(xiàn)和配置管理,其原理圖如下:

etcd 是一種高度一致的分布式鍵值存儲(chǔ),它提供了一種可靠的方法來(lái)存儲(chǔ)分布式系統(tǒng)或機(jī)器集群需要訪問(wèn)的數(shù)據(jù)。它可以在網(wǎng)絡(luò)分區(qū)期間優(yōu)雅地處理領(lǐng)導(dǎo)者選舉,并且可以容忍機(jī)器故障,即使在領(lǐng)導(dǎo)者節(jié)點(diǎn)中也是如此。

Kubernetes 是一個(gè)容器編排平臺(tái),具有內(nèi)置的服務(wù)發(fā)現(xiàn)機(jī)制。它使用標(biāo)簽和注釋來(lái)管理服務(wù)實(shí)例,并通過(guò) DNS提供服務(wù)發(fā)現(xiàn)。

4.Nacos

Nacos是阿里開(kāi)源的,支持基于 DNS和基于 RPC的服務(wù)發(fā)現(xiàn),它即支持 CP模式也支持 AP模式,可以通過(guò)命令的方式切換,其原理圖如下:

五、總結(jié)

本文,我們分析了什么是服務(wù)發(fā)現(xiàn)以及它在分布式系統(tǒng)中是如何工作的?對(duì)于服務(wù)發(fā)現(xiàn)我們需要掌握其核心模型:

  • 服務(wù)提供者(Service Provider):服務(wù)提供者在進(jìn)入系統(tǒng)時(shí)向服務(wù)注冊(cè)中心注冊(cè),并在離開(kāi)系統(tǒng)時(shí)取消注冊(cè)。
  • 服務(wù)使用者(Service Consumer):服務(wù)使用者從服務(wù)注冊(cè)表中獲取提供者的信息,然后連接到服務(wù)提供者。
  • 服務(wù)注冊(cè)表(Service Registry):服務(wù)注冊(cè)表是保存服務(wù)提供者的相關(guān)信息,當(dāng)服務(wù)提供者有變更時(shí),注冊(cè)表也能感知,以便客戶端可以通過(guò)從服務(wù)注冊(cè)表獲取最新數(shù)據(jù)。

最后,我們通過(guò)分析幾個(gè)常見(jiàn)的服務(wù)發(fā)現(xiàn)工具,盡管它們的實(shí)現(xiàn)細(xì)節(jié)略有差異,但是它們的核心模型是一樣的,只要能抓住核心模型,即便出現(xiàn)新的框架或者工具,我們也可以快速上手。

責(zé)任編輯:趙寧寧 來(lái)源: 猿java
相關(guān)推薦

2017-12-20 16:15:30

分布式系統(tǒng)架構(gòu)

2023-02-10 00:04:53

2018-01-23 15:55:23

分布式系統(tǒng)架構(gòu)

2023-05-29 14:07:00

Zuul網(wǎng)關(guān)系統(tǒng)

2022-09-07 08:18:26

分布式灰度方案分支號(hào)

2018-04-03 09:27:42

分布式架構(gòu)系統(tǒng)

2021-02-01 09:35:53

關(guān)系型數(shù)據(jù)庫(kù)模型

2023-11-29 10:26:52

分布式數(shù)據(jù)

2022-04-08 08:27:08

分布式鎖系統(tǒng)

2025-03-06 11:30:15

2022-06-13 10:01:36

Apollo攜程框架

2018-06-11 11:12:09

秒殺限流分布式

2023-05-12 08:23:03

分布式系統(tǒng)網(wǎng)絡(luò)

2018-06-19 09:35:51

分布式系統(tǒng)限流

2023-11-03 14:42:36

異步執(zhí)行開(kāi)發(fā)架構(gòu)

2024-10-18 08:00:00

分布式系統(tǒng)背壓數(shù)據(jù)庫(kù)

2022-06-28 08:16:35

MySQL數(shù)據(jù)容災(zāi)

2023-07-19 08:22:01

分布式系統(tǒng)數(shù)據(jù)

2023-02-11 00:04:17

分布式系統(tǒng)安全

2018-12-14 10:06:22

緩存分布式系統(tǒng)
點(diǎn)贊
收藏

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