摘要:年月日社區(qū)技術(shù)支持計劃全面啟動,本文是研發(fā)人員在社區(qū)答疑過程中關(guān)于的一些心得和思考。初識基于的消息總線可以很好的與前端兼容,讓消息的傳遞不再是后端的專利。
2016年2月14日「Rancher社區(qū)技術(shù)支持計劃」全面啟動,本文是Rancher研發(fā)人員在社區(qū)答疑過程中關(guān)于Subscribe Rancher Events的一些心得和思考。
引言幾乎每個大型的分布式的集群軟件,都離不開一樣?xùn)|西,就是所謂的message bus(消息總線), 它就如同人體的血管一樣,連通著各個組件,相互協(xié)調(diào),一起工作。 與很多同類軟件不同的是,Rancher使用的基于websocket協(xié)議實現(xiàn)的消息總線, Rancher不會依賴任何MQ,基于websocket的實現(xiàn)十分輕量級, 同時在各種語言庫的支持上,也毫無壓力,畢竟websocket是HTTP的標(biāo)準(zhǔn)規(guī)范之一。
初識Rancher Events基于websocket的消息總線可以很好的與前端兼容,讓消息的傳遞不再是后端的專利。 在Rancher UI上,很容易就能捕獲到rancher events,比如:
這里面監(jiān)聽的事件名稱是resource.change,這個resource.change在前端UI上有很大的用處, 其實我們都知道,很多POST形式的create請求并不是同步返回結(jié)果的,因為調(diào)度引擎需要處理, 這個等待的過程中,當(dāng)然不能前端一直wait,所以做法都是發(fā)起create后直接返回HTTP 202, 轉(zhuǎn)入后臺執(zhí)行后,Rancher的后端會把創(chuàng)建的執(zhí)行過程中間狀態(tài)不斷發(fā)送給消息總線, 那么前端通過監(jiān)聽resource.change就會獲得這些中間狀態(tài),這樣在UI上就可以給用戶一個很好的反饋體驗。
當(dāng)然Rancher Events并不是只有resource.change,比如在Iaas Events集合中就有如下這些:
除了Events的事件定義,當(dāng)然還有如何去subscribe 這些events,這部分內(nèi)容在之前的文章Rancher event機(jī)制及其實踐指南中有所涉獵,便不贅言。
Subscribe Rancher Events的架構(gòu)模式Rancher的體系內(nèi),很多微服務(wù)的組件都是基于Subscribe Rancher Events這種架構(gòu),舉個例子來看, 以rancher-metadata組件為例:
metadata服務(wù)可以提供當(dāng)前host的元數(shù)據(jù)查詢,我們可以很容器的知道env內(nèi)的stack/service/container的情況, 這些數(shù)據(jù)其實由rancher-server也就是cattle引擎生成的,那么生成之后怎么發(fā)送給各個agent呢? 其實就是metadata進(jìn)行了subscribe rancher events,當(dāng)然它只監(jiān)聽了config.update事件, 只要這個事件有通知,metadata服務(wù)便會下載新的元數(shù)據(jù),這樣就達(dá)到了不斷更新元數(shù)據(jù)的目的。
隨著深入的使用Rancher,肯定會有一些伙伴需要對Rancher進(jìn)行擴(kuò)展,那就需要自行研發(fā)了, 畢竟常見的方式就是監(jiān)聽一些事件做一些內(nèi)部處理邏輯,并在DB中存入一些數(shù)據(jù), 同時暴露API服務(wù),架構(gòu)如下:
如果需要做HA,可能需要scale多個這樣的服務(wù),那么架構(gòu)就變成這樣:
這里其實會有一個問題,如果你監(jiān)聽了一些廣播事件,那么實際上每個實例都會收到同樣的事件, 那么你的處理邏輯就要注意了,尤其是在處理向DB中寫數(shù)據(jù)時,一定要考慮到這樣的情況。
比如,可以只有其中一個實例來監(jiān)聽廣播事件,這樣不會導(dǎo)致事件重復(fù)收取:
Event Handler要考慮一定failover機(jī)制,這樣事件收取不會長時間中斷。
Rancher Events有一些非廣播事件,那么就需要在subscribe的時候指定一些特殊參數(shù), 這樣事件就會只發(fā)送給注冊方,不會發(fā)送給每個節(jié)點,比如:
總結(jié)此文算是這段時間做Rancher服務(wù)擴(kuò)展的心得,深度參與一個開源軟件最終肯定會希望去改動它擴(kuò)展它。 這也是客觀需求所致,開源軟件可以拿來即用,但是真正可用實用,必須加以改造,適應(yīng)自身需求。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/26804.html
摘要:本次分享就介紹一下的機(jī)制,由于相關(guān)內(nèi)容文檔極其欠缺,本人也只是通過實踐和代碼閱讀分析其原理,如有謬誤歡迎指正。能夠管理多的同時又拆分出各種服務(wù)組件,機(jī)制是必不可少的。為實現(xiàn)機(jī)制,通常我們會采用等中間件來實現(xiàn)。 我們的Rancher官方技術(shù)社區(qū)已經(jīng)創(chuàng)立些許時日了,相信通過我們的線下meetup和線上布道工作,很多朋友對Rancher的使用已經(jīng)掌握得很純熟了。一些高級用戶開始真正把自己的業(yè)...
摘要:官方于月日發(fā)布了其容器部署與管理平臺的最新版本,。架構(gòu)總覽在版本的整體架構(gòu)圖如下圖所示上,引擎向下深入演化成了基礎(chǔ)設(shè)施引擎,這一點上在時代也早有體現(xiàn)。基礎(chǔ)設(shè)施引擎初次安裝版本,會發(fā)現(xiàn)多了如下圖所示的明顯標(biāo)識,默認(rèn)的引擎需要安裝等服務(wù)。 Rancher Labs官方于12月1日發(fā)布了其容器部署與管理平臺Rancher的最新版本,Rancher v1.2。Rancher v1.2可以說是一...
摘要:官方于月日發(fā)布了其容器部署與管理平臺的最新版本,。架構(gòu)總覽在版本的整體架構(gòu)圖如下圖所示上,引擎向下深入演化成了基礎(chǔ)設(shè)施引擎,這一點上在時代也早有體現(xiàn)。基礎(chǔ)設(shè)施引擎初次安裝版本,會發(fā)現(xiàn)多了如下圖所示的明顯標(biāo)識,默認(rèn)的引擎需要安裝等服務(wù)。 Rancher Labs官方于12月1日發(fā)布了其容器部署與管理平臺Rancher的最新版本,Rancher v1.2。Rancher v1.2可以說是一...
摘要:組件會給每個分配一個,則替代了的來實現(xiàn)服務(wù)發(fā)現(xiàn),在的容器內(nèi)部依然可以訪問服務(wù)來獲取元數(shù)據(jù)信息。的需要在中實現(xiàn)一個,目前只有,而則維護(hù)了自己的版本在其中提供了。 在Rancher 1.0版本開始,Rancher逐步增加了Kubernetes、Swarm、Mesos等多編排引擎的支持,很多朋友就此產(chǎn)生了疑惑,諸如Cattle引擎和這幾個之間到底什么關(guān)系?每種引擎是如何支持的?自家的業(yè)務(wù)環(huán)境...
摘要:組件會給每個分配一個,則替代了的來實現(xiàn)服務(wù)發(fā)現(xiàn),在的容器內(nèi)部依然可以訪問服務(wù)來獲取元數(shù)據(jù)信息。的需要在中實現(xiàn)一個,目前只有,而則維護(hù)了自己的版本在其中提供了。 在Rancher 1.0版本開始,Rancher逐步增加了Kubernetes、Swarm、Mesos等多編排引擎的支持,很多朋友就此產(chǎn)生了疑惑,諸如Cattle引擎和這幾個之間到底什么關(guān)系?每種引擎是如何支持的?自家的業(yè)務(wù)環(huán)境...
閱讀 2636·2021-11-18 10:07
閱讀 1089·2021-08-03 14:04
閱讀 731·2019-08-30 13:08
閱讀 2586·2019-08-29 15:33
閱讀 1099·2019-08-29 14:07
閱讀 2997·2019-08-29 14:04
閱讀 1447·2019-08-29 11:19
閱讀 1152·2019-08-29 10:59