您好,登錄后才能下訂單哦!
這篇文章主要介紹“微服務之注冊中心和配置中心Consul怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“微服務之注冊中心和配置中心Consul怎么使用”文章能幫助大家解決問題。
你有沒有思考過這樣一個問題,為什么會有這么多的注冊中心(etcd/ZooKeeper/Consul),選用那個最適合自己,是不是在選用的時候會眼花繚亂?
我在開始做的時候,自己也有很多困惑,將近3年的時候里我都在不停的學習,但是還是有很多不同的框架和產品,后來我明白了其中的原因,他們就像生活中的可樂、果汁、和牛奶一樣,你在使用的時候選取你的編程語言(Java、Go、PHP),程序易接入的就好了。
產生注冊中心五花八門的原因是因為語言很多,都想打造最適合自己的體系生態,我選擇Consul為大家講解,因為它安裝和接入都比較方便。
不用被這些假象所困擾,多學習網絡和系統的底層原理,萬變不離其宗,技術人應該是給出解決方案。
一致性: 所有節點在同一時間具有相同的數據
可用性:保證每個請求不管成功或者失敗都有響應
分區容錯:系統中任意信息的丟失或失敗不會影響系統的繼續運作
Feature | Consul | ZooKeeper | etcd |
---|---|---|---|
服務健康檢查 | 服務狀態、內存、硬盤 | 長鏈接、Keepalive | 鏈接心跳 |
多數據中心 | 支持 | — | — |
K/V存儲服務 | 支持 | 支持 | 支持 |
一致性 | Raft | Paxos | Raft |
CAP定理 | CP | CP | CP |
使用接口(多語言能力) | Http/Dns | 客戶端 | Http/Grpc |
安全 | acl/https | acl | Https支持 |
使用PHP、和Go編寫,使用Consul作為注冊中心和配置中心比較方便,所以我選用的是Consul。
采用Raft算法實現,有服務發現,Key/Value存儲,可以做配置中心使用,有健康檢查,并提供了web管理頁面。
Consul 內部端口說明:
TCP/8300:8300端口用于服務器節點,客戶端通過RPC協議調用服務端節點。
TCP/UDP/8301: 8301端口用于單個數據中心所有節點之間的互相通信,即對LAN池信息的同步,它使得整個數據中心能夠自動的發現服務器地址,分布式監測點的故障,事件廣播。
TCP/UDP/8302: 8302端口用于單個或多個數據中心之間的服務器節點的信息同步(WAL池信息的同步),它針對互聯網的高延遲進行了優化,能夠實現跨數據中心請求。
HTTP/8500: 8500端口基于Http服務,用于Api接口和Ui訪問。
DNS/8600: 8600端口作為DNS服務器,它使得我們可以通過節點查詢節點信息。
解決了分布式中領導選舉和一致性問題
Raft算法是比較出名的共識算法,比如Redis的哨兵、Consul
Consul 集群的特點:
任期機制,Raft是終身任期的,它永遠都是領導者
心跳機制,它決定領導者是否能有效的和跟隨者通信
隨機的選舉超時時間,因為是隨機的所以決定了不會再同一時間進行選舉
先到先得,一屆任期內,先收到誰的投票就會給誰,剩下的請求一律拒絕
過半機制,收到一半的投票才會
Consul 集群的角色:
Followers 追隨者:接受到領導者發送的消息,當心跳超時時,主動推薦自己成為候選人。
Candidate 候選人:發送Rpc消息,讓其它節點投票給自己,當投票超過半數時,成為領導者。
Leader 領導者:向其他節點發送心跳,只要心跳不超時,一直為領導者。
算法的詳情可以點擊官網視頻查看
1.注冊服務是Consul最基礎的服務,點擊查看官網Api
PUT 192.168.88.144:8500/v1/agent/service/register { "Name":"audio", "Id":"audio", "Tags":[ "v2", "primary" ], "Address":"192.168.88.144", "Port":8500, "Check":{ "HTTP":"http://192.168.88.144:8500", "Interval":"10s" } }
{ "id": "web", "name": "web", "port": 80, "check": { "name": "ping check", "args": ["ping", "-c1", "test.stark.com"], "interval": "30s", "status": "passing" } }
2.發現服務
GET http://192.168.88.144:8500/v1/health/service/audio [ { "Node": { "ID": "38779dca-bffd-e399-6597-266aff68132c", "Node": "server01-virtual-machine", "Address": "127.0.0.1", "Datacenter": "dc1", "TaggedAddresses": { "lan": "127.0.0.1", "lan_ipv4": "127.0.0.1", "wan": "127.0.0.1", "wan_ipv4": "127.0.0.1" }, "Meta": { "consul-network-segment": "" }, "CreateIndex": 13, "ModifyIndex": 17 }, "Service": { "ID": "audio", "Service": "audio", "Tags": [ "v2", "primary" ], "Address": "192.168.88.144", "TaggedAddresses": { "lan_ipv4": { "Address": "192.168.88.144", "Port": 8500 }, "wan_ipv4": { "Address": "192.168.88.144", "Port": 8500 } }, "Meta": null, "Port": 8500, // ... } ]
Service API Service 相關的 API 都在 /v1/agent/service 下:
/agent/services:該端點返回在本地代理程序中注冊的所有服務;
/agent/service/{service_id}:返回在本地代理上注冊的單個服務實例的完整服務定義;
/agent/health/service/name/{service_name}/
/agent/health/service/id/{service_id}:通過名稱或id檢索本地代理上的聚合服務狀態;
/agent/service/register:注冊服務;
/agent/service/deregister/{service_id} :注銷服務;
/agent/service/maintenance/{service_id}:該端點將給定的服務置于“維護模式”,在維護模式下,該服務將被標記為不可用,并且不會出現在DNS或API查詢中。
關于“微服務之注冊中心和配置中心Consul怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。