簡介
功能簡介
consul提供的服務主要包括服務發現、健康檢查、kv存儲、集羣管理、跨數據中心。
服務發現
服務發現本質就是個名字服務。就像共享內存,只要shmkey知道了,所有的進程都能夠訪問這塊內存的值。通過DNS和HTTP接口使用“服務發現”功能。
健康檢查
健康檢查,故名思議就是定期的去檢查機器或者服務的當前狀態。consul提供了一條簡約而不簡單的路子,那就是通過定期運行腳本去檢查。腳本可以是由用戶自定義的任意shell腳本,但是原理都是根據腳本的返回值去判斷機器或服務是否健康,只有腳本返回值爲0時才代表健康。
key/value存儲
爲了服務周到,consul還提供了key/value存儲功能。並且邏輯存儲的方式和mongodb差求不多,是一種層次化的邏輯存儲。例如mongodb的key格式可以爲country.province.city,對應的consul的key格式則爲country/province/city。通過HTTP接口使用“數據庫”功能。
多數據中心
consul不僅能夠在同一個局域網內構成集羣,集羣與集羣之間還能夠跨網段。集羣內或者集羣之間都是通過gossip協議來監控節點健康狀態的,節點與節點之間其他業務都是通過RPC。
web ui
web ui是consul的管理服務,提供一個可視化管理consul功能的界面,訪問方式也是HTTP。
架構簡介
client:客戶端,無狀態, 將 HTTP 和 DNS 接口請求轉發給局域網內的服務端集羣。
server:服務端, 保存配置信息, 高可用集羣, 在局域網內與本地客戶端通訊,通過廣域網與其他數據中心通訊。每個數據中心的 server 數量推薦爲 3 個或是 5 個。