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