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

微服務(wù)注冊最全詳解(圖文全面總結(jié))

開發(fā) 架構(gòu)
不論使用那種工具,服務(wù)注冊一定是要確保高可用的,否則重則的是所有的服務(wù)都沒法調(diào)用,輕則新的服務(wù)不能上線,所以一般都會考慮本地有緩存服務(wù)地址等方案。

微服務(wù)注冊是微服務(wù)的核心組件,常見的有:ZooKeeper,Consul,Nacos,Eureka...等等,下面我就重點來詳解微服務(wù)注冊@mikechen

微服務(wù)注冊

服務(wù)注冊指的是將自身服務(wù)信息注冊到注冊中心,服務(wù)信息包括:服務(wù)所在主機IP、服務(wù)的端口號Port、暴露服務(wù)協(xié)議等信息。

如下圖所示:

圖片圖片

Service B 把自己注冊到注冊中心,這就叫 服務(wù)注冊。

服務(wù)注冊作用

服務(wù)注冊就是維護一個登記簿,它管理系統(tǒng)內(nèi)所有的服務(wù)地址。

當(dāng)新的服務(wù)啟動后,它會向登記簿交待自己的地址信息,服務(wù)的依賴方直接向登記簿要服務(wù)地址就行了。

同時服務(wù)注冊還要負責(zé)一件事情,服務(wù)狀態(tài)的維護,假如一個服務(wù)突然down掉,它應(yīng)該能夠感知,并把down掉的服務(wù)摘掉,然后主動或被動的把這個信息告知服務(wù)消費方。

服務(wù)注冊實現(xiàn)

服務(wù)注冊有兩種形式:客戶端注冊和代理注冊。

1.客戶端注冊

客戶端注冊是服務(wù)自己要負責(zé)注冊與注銷的工作,當(dāng)服務(wù)啟動后注冊線程向注冊中心注冊,當(dāng)服務(wù)下線時注銷自己。

圖片圖片

這種方式的缺點是注冊注銷邏輯與服務(wù)的業(yè)務(wù)邏輯耦合在一起,如果服務(wù)使用不同語言開發(fā),那需要適配多套服務(wù)注冊邏輯。

2.代理注冊(第三方注冊)

代理注冊也叫第三方注冊,指的是一個單獨的代理服務(wù)負責(zé)注冊與注銷。

當(dāng)服務(wù)提供者啟動后以某種方式通知代理服務(wù),然后代理服務(wù)負責(zé)向注冊中心發(fā)起注冊工作。

圖片圖片

第三方注冊的優(yōu)點非常明顯,就是服務(wù)跟服務(wù)注冊表是分離的,不需要為每種編程語言和架構(gòu)完成服務(wù)注冊邏輯,替代的,服務(wù)實例是通過一個集中化管理的服務(wù)進行管理的。

這種方式的缺點是多引用了一個代理服務(wù),并且代理服務(wù)需要配置管理一個高可用的系統(tǒng)。

微服務(wù)注冊框架

當(dāng)下用于服務(wù)注冊的工具非常多ZooKeeper,Consul,Etcd, 還有Netflix家的Eureka等等。

1.ZooKeeper

這里服務(wù)注冊的實現(xiàn)會運用Zookeeper的watch機制來實現(xiàn)。

比如:客戶端注冊監(jiān)聽他關(guān)心的目錄節(jié)點,當(dāng)目錄節(jié)點發(fā)生變化(數(shù)據(jù)改變、被刪除、子目錄節(jié)點增加刪除)時,Zookeeper會通知客戶端。

client端會對某個znode建立一個watcher事件,當(dāng)該znode發(fā)生變化時,zk會主動通知watch這個znode的client,然后client根據(jù)znode的變化來做出業(yè)務(wù)上的改變等。

如下圖所示:

圖片圖片

2.Consul

Consul 是 HashiCorp 公司推出的開源工具,用于實現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置。

Consul架構(gòu),如下圖所示:

圖片圖片

圖片上 datacenter 分成上下兩個部分, 但是這兩個部分又不是完全隔離的,他們之間通過 WAN GOSSIP 進行報文交互。

3.Etcd

Etcd是使用Go語言開發(fā)的一個開源的、高可用的分布式key-value存儲系統(tǒng),可以用于配置共享和服務(wù)的注冊和發(fā)現(xiàn)。

Etcd架構(gòu)如下圖所示:

圖片圖片

從 架構(gòu)圖中我們可以看到etcd 主要分為四個部分:

  • HTTP Server

用于處理用戶發(fā)送的 API 請求,以及其它 Etcd節(jié)點的同步與心跳信息請求。

  • Store

用于處理 Etcd支持的各類功能的事務(wù),包括數(shù)據(jù)索引、節(jié)點狀態(tài)變更、監(jiān)控與反饋、事件處理與執(zhí)行等等。

  • Raft

Raft 是強一致性算法的具體實現(xiàn),是 Etcd的核心。

  • WAL

Write Ahead Log,預(yù)寫日志系統(tǒng),是 Etcd的數(shù)據(jù)存儲方式,Etcd就通過 WAL 進行持久化存儲,這個與MySQL持久化存儲機制類似。

Write-Ahead Logging 是數(shù)據(jù)庫中一種高效的日志算法,對于非內(nèi)存數(shù)據(jù)庫而言,磁盤I/O操作是數(shù)據(jù)庫效率的一大瓶頸。

在相同的數(shù)據(jù)量下,采用WAL日志的數(shù)據(jù)庫系統(tǒng)在事務(wù)提交時,磁盤寫操作只有傳統(tǒng)的回滾日志的一半左右,大大提高了數(shù)據(jù)庫磁盤I/O操作的效率,從而提高了數(shù)據(jù)庫的性能。

4.Eureka

Eureka 作為 Spring Cloud 微服務(wù)框架的注冊中心,與之對應(yīng)的是 Dubbo 框架的ZooKeeper。

Eureka基本架構(gòu),如下圖所示:

圖片

上圖簡要描述了Eureka的基本架構(gòu),由3個角色組成:

1.Service Provider: 暴露服務(wù)的服務(wù)提供方。

2)Service Consumer:調(diào)用遠程服務(wù)的服務(wù)消費方。

3)EureKa Server: 服務(wù)注冊中心和服務(wù)發(fā)現(xiàn)中心。

不論使用那種工具,服務(wù)注冊一定是要確保高可用的,否則重則的是所有的服務(wù)都沒法調(diào)用,輕則新的服務(wù)不能上線,所以一般都會考慮本地有緩存服務(wù)地址等方案。


責(zé)任編輯:武曉燕 來源: mikechen的互聯(lián)網(wǎng)架構(gòu)
相關(guān)推薦

2024-09-04 09:43:36

2024-07-26 10:35:00

2024-05-31 13:34:57

2024-08-29 10:23:42

2024-08-12 16:09:31

2024-08-13 15:07:20

2024-11-06 09:54:58

SpringJava開發(fā)

2024-07-12 08:42:58

Redis高性能架構(gòu)

2024-09-26 13:33:12

2024-12-31 00:00:01

驅(qū)動設(shè)計應(yīng)用場景業(yè)務(wù)邏輯

2024-08-07 14:56:00

Nginx反向代理配置

2024-11-06 12:29:02

2025-01-15 08:34:00

分布式事務(wù)服務(wù)

2024-09-14 11:36:02

2024-11-15 12:04:33

K8S容器化應(yīng)用

2025-01-26 11:54:39

分布式存儲系統(tǒng)

2016-01-28 14:41:06

CC++編碼

2021-03-18 18:59:42

蘋果Apple ID賬號

2015-09-18 16:55:45

云計算

2022-10-08 07:31:26

微服務(wù)編排體系
點贊
收藏

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