來源:北大青鳥總部 2023年07月13日 11:44
云原生計算基金會CNCF(CloudNative ComputingFoundation)于2020年11月25日正式宣布,ETCD項目畢業了。在介紹今天的主角ETCD之前,我們先來了解下CNCF是什么?只有知道畢業學校多強大?才能感受到它的優秀畢業生多強大啊?正如我們介紹某某某從XXX大學畢業之前,我們都會介紹XXX大學。如果是玩云原生的,對CNCF必然是很了解的,正如生在中國,對于一流大學(如清華大學、北京大學)有了解;但非圈內人對此是不了解的,因此我們先來看看CNCF哈~
CNCF云原生計算基金會是一個開源軟件基金會,致力于使得云原生具備普遍性、可持續性,利用開源技術棧使得應用程序按微服務模式部署,將每個微服務打包在自己的容器當中,動態編排管理容器,使得開發人員更快更好的生產服務。
在CNCF大學中提供6個學院、3個行政管理機構,分別是應用定義與開發、編排管理、運行環境、配置管理、監控分析、無服務、平臺管理、合作伙伴、成員構成。
在「應用定義與開發」學院中主要學習容器平臺上應用開發相關知識,聚集了與應用相關的架構和工具,具體包含數據庫服務、消息隊列服務、應用定義、鏡像構建、持續集成和部署等專業;在「編排管理」學院中主要學習容器平臺上的編排管理相關知識,聚集了與容器編排管理通用架構和工具,具體提供容器編排與調度、協作與服務發現、RPC遠程調用、服務代理、API網關與Servicemesh服務網格等專業;在「運行管理」學院中主要學習容器平臺上運行環境相關的知識,提供云原生存儲、云原生網絡、容器運行環境三個專業;在「配置管理」學院中提供容器平臺配置管理相關知識,提供自動化與配置、鏡像私庫、安全與合規等專業;在「監控分析」學院主要提供容器平臺監控相關知識,包含監控、日志追逐、鏈路追蹤等專業;在「無服務」學院,主要聚焦于serviceless、servicemesh等微服務解決方案的探索;在「合作伙伴」、「成員構成」、「平臺管理」主要是做推薦廠商、會員的管理,比如K8S安裝工具提供商、白金黃金白銀會員等。
每個學院都有自己的優秀畢業生,比如在編排管理專業的Kubernetes、運行環境管理專業的Containerd、監控分析專業的prometheus,如今配置管理專業的ETCD也作為優秀畢業生畢業了。ETCD項目自2013年誕生于CoreOS,在2018年以孵化項目加入云原生計算基金會,2020年以優秀畢業生畢業,它具備什么能力,又是如何一步步成長起來,最終成為優秀畢業生呢?我們一起來看看吧!
ETCD的架構圖也非常簡單,總體可分為四個部分,HTTPServer以API形式對外提供服務,負責處理來自用戶的API請求、與其它ETCD節點輪詢心跳保障業務高可用;Store負責處理ETCD支持的功能,比如數據索引、節點狀態變更、監控、事件處理等等;Raft提供分布式一致性協議維持集群內各個節點的數據狀態一致性,主節點master負責處理所有來自客戶端的寫操作,當ETCD集群開始初始化時,每個節點都是Follower角色,通過選舉Leader角色來成為主節點處理業務,并有Candidate角色隨時候選,三個角色一起協同工作,保障ETCD集群的高可用;WAL預寫式日志(WriteAheadLog)將所有數據的狀態信息、索引信息都先在內存存儲起來,并最終通過磁盤持久化存儲,保障ETCD既快又準。當用戶請求發起之后,先由httpserver轉發給store進行具體事務處理,涉及節點改動時交給raft模塊進行狀態變更、日志處理,同步給到其它etcd節點,最后進行數據提交與同步。
介紹完了原理,我們來看看ETCD的應用場景有哪些?典型的應用場景有鍵值對存儲、服務注冊與發現、消息發布與訂閱、分布式通知與協調、分布式鎖等。要不怎么是優秀畢業生呢?ETCD使用的最多的場景便是服務注冊與發現,在Kubernetes也是如此,我們就來重點看看這個場景吧。
在服務注冊與發現中,有三個角色,服務注冊中心serviceregistry、服務生產者producer、服務消費者consumer三個角色。producer在啟動的時候向registry注冊自己的服務名、主機、端口,consumer需要調用對應的服務時直接向registry進行請求,獲取對應的實例地址即可。基于ETCD的服務注冊與發現,主要是將各個服務在啟動時注冊到ETCD上(Key-Value鍵值對模式存儲起來),再通過RAFT算法保障每個生產者、消費者的健康狀態監控。
ETCD支持的安裝模式也有多種,它支持單機安裝、二進制安裝、源碼安裝方式,支持集群部署(通過靜態指定部署、ETCD動態啟動、DNS公共發現啟動)。多種多樣的安裝模式極好的匹配了各種業務使用場景。
目前ETCD已經被許多公司、許多技術組件應用,諸如亞馬遜、Google、阿里、百度、頭條等互聯網巨頭紛紛投入生產環境進行使用,諸如Kubernetes、CoreDNS等技術組件也紛紛將其作為底層能力。名副其實,它已經憑借自己的優秀能力成為了CNCF的優秀畢業生了~