企業(yè)網(wǎng)站開發(fā) metinfo網(wǎng)站搜索引擎優(yōu)化診斷
認(rèn)識k8s之后,他的操作模式對我來說是一種很不錯的體驗(yàn)。他提供了更接近現(xiàn)實(shí)世界的面向?qū)ο蠼涌凇?/p>
什么是k8s?
Kubernetes(K8s)是一種開源容器編排平臺,用于自動化部署、擴(kuò)展和管理容器化應(yīng)用程序。它簡化了容器化應(yīng)用的管理,提供自動化、可擴(kuò)展的部署,并允許高效管理跨多個主機(jī)的容器化應(yīng)用程序。
在Kubernetes中有許多對象。其中,Deployment創(chuàng)建ReplicaSets,ReplicaSets負(fù)責(zé)創(chuàng)建Pod。ReplicaSets它們是一組具有相同配置的Pod的集合。Pod是Kubernetes的最小部署單元,可容納一個或多個容器。ReplicaSets確保指定數(shù)量的Pods運(yùn)行,如果失敗則重新創(chuàng)建,而Deployment則管理和配置ReplicaSets,確保應(yīng)用程序可靠地運(yùn)行。
我要如何操作他?
在使用中,我需要關(guān)心Deployment如何創(chuàng)建ReplicaSets嗎?我需要關(guān)心ReplicaSets如何創(chuàng)建Pod嗎?實(shí)際上我并不需要,我對此一無所知。我只需要對他們的spec進(jìn)行定義即可。什么意思呢?我只需要告訴系統(tǒng)(控制面)每個對象應(yīng)該是什么(或者定義對象的模板),例如需要幾個pod,升級策略是什么(注意:不是如何升級,而是升級應(yīng)該確保什么?例如確保有3個可用的pod)。控制面會監(jiān)控每個對象的情況,并盡可能的讓他們的實(shí)際情況接近我定義的情況。至于他們是怎么做的我完全不需要理會。
聲明式編程
沒錯,上面的體驗(yàn)正是我想說的:聲明式編程。與過程式編程不同,聲明式編程只用告訴機(jī)器我需要怎樣的東西,而不需要告訴他我要怎么做。例如SQL,我只聲明了我要怎樣的數(shù)據(jù),卻不用告訴機(jī)器如何查找,不需要告訴他走哪個索引或者全表搜索。
如何在實(shí)務(wù)中使用聲明式編程
我們可以做一個事件處理系統(tǒng),前端發(fā)送來請求,記錄到事件里面去。事件處理系統(tǒng)收到事件,則進(jìn)行處理,再反饋給前端。前端的請求是精準(zhǔn)的一個大的需求,而不是多次的分步的請求。事件處理系統(tǒng)更像是一個大的狀態(tài)機(jī),根據(jù)前端發(fā)來的各種請求,改變各種狀態(tài),以達(dá)到需求。
例如,我要實(shí)現(xiàn)當(dāng)用戶的密碼被修改(包括用戶修改和管理員修改),然后發(fā)送短信通知用戶的請求。
首先,前端發(fā)送用戶修改請求,狀態(tài)機(jī)收到信息,修改密碼,更新密碼修改時間。此時系統(tǒng)達(dá)到了第一個狀態(tài)。
很快,系統(tǒng)輪詢發(fā)現(xiàn),密碼修改通知的事件早于密碼最新修改的事件,就觸發(fā)密碼修改通知,然后更新密碼修改通知的事件為當(dāng)前時間(晚于密碼最新修改時間)。
再次,前端發(fā)送管理員修改請求,狀態(tài)機(jī)同樣修改密碼,更新修改密碼時間。隨后,系統(tǒng)輪詢再次發(fā)現(xiàn)密碼修改通知的事件早于密碼最新修改的事件,就觸發(fā)密碼修改通知,然后更新密碼修改通知的事件為當(dāng)前時間(晚于密碼最新修改時間)。
好了,有人可能就會問了。我搞這么復(fù)雜,還要輪詢維護(hù)狀態(tài),為什么不直接修改密碼請求的時候,一并發(fā)送通知呢?我給出的例子實(shí)際上是簡化的,只有兩個修改密碼的方式。如果其他情況,我要100個,1000個修改方式呢?甚至我允許直接改數(shù)據(jù)庫修改呢?是不是就沒辦法及時響應(yīng)了。
當(dāng)然,問題也很明顯了。需要許多CPU算力和內(nèi)存來監(jiān)控?cái)?shù)據(jù)變化,輪詢各種事件。即便什么都沒做,監(jiān)控與輪詢依然存在,這將非常消耗資源。
希望在不久的將來,資源不再成為問題。
技術(shù)前沿拓展
前端開發(fā),你的認(rèn)知不能僅局限于技術(shù)內(nèi),需要發(fā)散思維了解技術(shù)圈的前沿知識。細(xì)心的人會發(fā)現(xiàn),開發(fā)內(nèi)部工具的過程中,大量的頁面、場景、組件等在不斷重復(fù),這種重復(fù)造輪子的工作,浪費(fèi)工程師的大量時間。
介紹一款程序員都應(yīng)該知道的軟件JNPF 快速開發(fā)平臺,很多人都嘗試用過它,它是功能的集大成者,任何信息化系統(tǒng)都可以基于它開發(fā)出來。
這是一個基于 Java Boot/.Net Core 構(gòu)建的簡單、跨平臺快速開發(fā)框架。前后端封裝了上千個常用類,方便擴(kuò)展;集成了代碼生成器,支持前后端業(yè)務(wù)代碼生成,實(shí)現(xiàn)快速開發(fā),提升工作效率;框架集成了表單、報(bào)表、圖表、大屏等各種常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3。如果你有閑暇時間,可以做個知識拓展。
看完本文如果覺得有用,記得點(diǎn)個贊支持,收藏起來說不定哪天就用上啦~