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