The definition on Wikipedia says:
A Stateful application
saves data about each client session and uses that data the next time the client makes a request.
任何應用程式的資料終點站
就是資料庫,因此資料庫
本身就是一個Stateful Application
。
參考Example: Deploying WordPress and MySQL with Persistent Volumes,在K8s中,Stateful application最簡單的部署方式就是給它配置一個Volume
儲存空間。
好處就是Pod掛掉後,Volume中的資料都還在,mongodB再透過create YAML檔又滿血復活了。
Docker中,也是有類似的做法。
透過Spring boot這類型的微服務,一個理想的交易應該被拆分成數個資料量小
、讀寫快
、獨立完成
的小交易。
正所謂『天下武功,唯快不破!』如何去設計數個小交易,一個個疊加成一個完整的大交易,這才是最大的挑戰。
此外,基於Kubernetes本身的核心設計:『Pod服務掛了,重建一個新的是最便宜做法。』
因應Kubernetes此一特性,Stateless的設計方式也能減小服務重啟後的資料遺失量。
K8s Tip:不要把所有client端取得的資料都存入資料庫,只存必要的
。
哈哈,這篇明明是要介紹Stateful Application的,結論卻是:
『在K8s中,Stateless Appliction才是王道。』
果然很符合雙子座的我
,表裡不一的調調。