客戶端發(fā)現(xiàn):
使用客戶端發(fā)現(xiàn)模式時讲婚,客戶端決定相應服務實例的網(wǎng)絡位置总处,并且對請求實現(xiàn)負載均衡∠凉椋客戶端查詢服務注冊表夭坪,后者是一個可用服務實例的數(shù)據(jù)庫;然后使用負載均衡算法從中選擇一個實例过椎,并發(fā)出請求台舱。
客戶端從服務注冊服務中查詢,其中是所有可用服務實例的庫【和铮客戶端使用負載均衡算法從多個服務實例中選擇出一個柜去,然后發(fā)出請求。
服務端發(fā)現(xiàn):
客戶端通過負載均衡器向某個服務提出請求拆宛,負載均衡器查詢服務注冊表嗓奢,并將請求轉(zhuǎn)發(fā)到可用的服務實例。如同客戶端發(fā)現(xiàn)浑厚,服務實例在服務注冊表中注冊或注銷股耽。
Spring Cloud實現(xiàn)服務治理
由于Spring Cloud為服務治理做了一層抽象接口,所以在Spring Cloud應用中可以支持多種不同的服務治理框架钳幅,比如:Netflix Eureka物蝙、Consul、Zookeeper敢艰。
Spring Cloud Consul項目是針對Consul的服務治理實現(xiàn)诬乞。Consul是一個分布式高可用的系統(tǒng),它包含多個組件钠导,但是作為一個整體震嫉,在微服務架構中為我們的基礎設施提供服務發(fā)現(xiàn)和服務配置的工具。它包含了下面幾個特性: 服務發(fā)現(xiàn)牡属、 健康檢查票堵、 Key/Value存儲、 多數(shù)據(jù)中心逮栅。由于Consul自身提供了服務端悴势,所以我們不需要像之前實現(xiàn)Eureka的時候創(chuàng)建服務注冊中心,直接通過下載consul的服務端程序就可以使用措伐。
Feature | Consul | zookeeper | etcd | euerka |
---|---|---|---|---|
服務健康檢查 | 服務狀態(tài)特纤,內(nèi)存,硬盤等 | (弱)長連接废士,keepalive | 連接心跳 | 可配支持 |
多數(shù)據(jù)中心 | 支持 | — | — | — |
kv存儲服務 | 支持 | 支持 | 支持 | — |
一致性 | raft | paxos | raft | — |
cap | ca | cp | cp | ap |
使用接口(多語言能力) | 支持http和dns | 客戶端 | http/grpc | http(sidecar) |
watch支持 | 全量/支持long polling | 支持 | 支持 long polling | 支持 long polling/大部分增量 |
自身監(jiān)控 | metrics | — | metrics | metrics |
安全 | acl /https | acl | https支持(弱) | — |
spring cloud集成 | 已支持 | 已支持 | 已支持 | 已支持 |