5.5容器化與彈性計(jì)算


服務(wù)的類(lèi)型區(qū)分
我們經(jīng)常說(shuō)那些是有狀態(tài)的服務(wù),那些是無(wú)狀態(tài)的服務(wù)。
從一個(gè)服務(wù)系統(tǒng)來(lái)說(shuō),通常我們認(rèn)為我們的業(yè)務(wù)服務(wù)是有狀態(tài)的,我們的前端的UI服務(wù)是無(wú)狀態(tài)的。
有狀態(tài)(Stateful)
有狀態(tài)服務(wù)意味著系統(tǒng)或?qū)ο笤谔幚碚?qǐng)求時(shí)會(huì)存儲(chǔ)有關(guān)先前交互的信息。這種信息被稱(chēng)為“狀態(tài)”,并且可以影響之后的交互。在執(zhí)行過(guò)程中,有狀態(tài)服務(wù)會(huì)記錄、維護(hù)和使用先前的會(huì)話(huà)信息。
有狀態(tài)服務(wù)的典型例子是購(gòu)物網(wǎng)站的購(gòu)物車(chē)功能。當(dāng)用戶(hù)將物品添加到購(gòu)物車(chē)時(shí),該信息將被存儲(chǔ),用戶(hù)可以在后續(xù)會(huì)話(huà)中繼續(xù)瀏覽其他產(chǎn)品,而購(gòu)物車(chē)中的內(nèi)容仍然存在。
無(wú)狀態(tài)(Stateless)
相比之下,無(wú)狀態(tài)服務(wù)不存儲(chǔ)關(guān)于過(guò)去交互的任何信息。每個(gè)請(qǐng)求都是獨(dú)立的,不依賴(lài)于之前的請(qǐng)求。因?yàn)闊o(wú)狀態(tài)服務(wù)不需要記憶過(guò)去的交互,所以通常更容易擴(kuò)展和管理。
HTTP協(xié)議就是一個(gè)典型的無(wú)狀態(tài)協(xié)議的例子。每一個(gè)HTTP請(qǐng)求都是獨(dú)立的,服務(wù)器不會(huì)保存之前請(qǐng)求的任何信息。
容器化技術(shù)

今天的容器化技術(shù)幾乎成了系統(tǒng)服務(wù)部署的標(biāo)配了,無(wú)論是單純的使用容器化部署還是今天比較流行的云原生都在大量的采用容器化技術(shù)。
容器化技術(shù):是一種輕量級(jí)的、可移植的解決方案,用于封裝應(yīng)用程序及其所有依賴(lài)項(xiàng)和運(yùn)行時(shí)環(huán)境,確保應(yīng)用程序在從開(kāi)發(fā)環(huán)境遷移到測(cè)試或生產(chǎn)環(huán)境時(shí)的一致性和隔離性。
我們今天之所以大量的采用容器化技術(shù),主要還是得力于容器化技術(shù)在隔離性、可移植性、一致性的技術(shù)優(yōu)勢(shì),通過(guò)容器化可以非常輕松的實(shí)現(xiàn)服務(wù)的部署、移植等操作。
容器化管理

Kubernetes(k8s)是最流行的容器化編排技術(shù)了。k8s提供了豐富的容器化管理的手段與標(biāo)準(zhǔn),也提供了豐富的生態(tài)支持有大量的可用的組件使用,形成了一個(gè)非常完備的容器化管理體系。
彈性計(jì)算

彈性計(jì)算可快速擴(kuò)展或縮減計(jì)算機(jī)處理、內(nèi)存和存儲(chǔ)資源以滿(mǎn)足不斷變化的需求,而無(wú)需擔(dān)憂(yōu)用量高峰的容量計(jì)劃和工程設(shè)計(jì)。彈性計(jì)算通常由系統(tǒng)監(jiān)控工具控制,無(wú)需中斷操作即可使分配的資源量與實(shí)際所需資源量相匹配。通過(guò)云靈活性,公司可避免就未用容量或閑置資源付費(fèi),且不必?fù)?dān)心投入資金購(gòu)買(mǎi)或維護(hù)額外的資源和設(shè)備。
系統(tǒng)演示
演示一個(gè)基于k8s與Prometheus的彈性計(jì)算的實(shí)例

https://github.com/codingapi/cranky-code/tree/main/demo5.5
實(shí)現(xiàn)彈性計(jì)算的核心是什么?
雖說(shuō)本章內(nèi)容中介紹了非常多的技術(shù),容器化、容器化編排、服務(wù)監(jiān)控、自動(dòng)伸縮HPA等等技術(shù),但是這些都不是實(shí)現(xiàn)彈性計(jì)算的核心,這些技術(shù)都是實(shí)現(xiàn)彈性計(jì)算的必備條件或者說(shuō)是實(shí)現(xiàn)過(guò)程而已。
想要實(shí)現(xiàn)彈性計(jì)算的關(guān)鍵是要實(shí)現(xiàn)服務(wù)無(wú)狀態(tài)化。
通過(guò)領(lǐng)域驅(qū)動(dòng)的學(xué)習(xí),其實(shí)提供了一種實(shí)現(xiàn)無(wú)狀態(tài)化服務(wù)的方式,即事件驅(qū)動(dòng)形的服務(wù)能力。

基于流處理的事件驅(qū)動(dòng)分布式Stateless架構(gòu)

通過(guò)依賴(lài)分布式服務(wù)來(lái)降解服務(wù),通過(guò)事件驅(qū)動(dòng)串聯(lián)分布式服務(wù)Stateless業(yè)務(wù)服務(wù)。