雲原生伺服器
1. 現在大家都在說的雲原生到底是什麼
雲原生是一個組合詞,可以拆分為「雲」和「原生」兩個詞,「雲」我們都知道,即在線網路,傳統的應用原本都跑在本地伺服器上,很有可能需要停機更新,且無法動態擴展,「雲」表示應用程序運行在分布式的雲環境中,可以頻繁變更,持續交付。
「原生」表示應用程序在設計前期就考慮到了雲平台的彈性和分布式特性,也就是為雲設計的。
可以簡單理解為:雲原生=微服務+DevOps+持續交付+容器化
| 微服務 |
即軟體架構,使用微服務架構可以將一個大型的應用程序按照功能模塊拆分成多個獨立自治的微服務,每個微服務僅僅實現一種功能,具有很明確的邊界。
帶來的好處有哪些?
1)服務的獨立部署
每個服務都是獨立的項目,可以獨立部署,不依賴於其他服務,耦合性低。
2)服務的快速啟動
拆分之後服務啟動的速度要比拆分之前快很多,因為依賴的庫少了,代碼量也少了。
3)更加適合敏捷開發。
敏捷開發以用戶的需求進化為核心,採用迭代、循序漸進的方法進行。服務拆分可以快速發布新版本,修改哪個服務只需要發布對應的服務即可,不用整體重新發布。
4)職責專一,由專門的團隊負責專門的服務。
業務發展迅速時,研發人員也會越來越多,每個團隊可以負責對應的業務線,服務的拆分有利於團隊之間的分工。
5)服務可以動態按需擴容
當某個服務的訪問量較大時,我們只需要將這個服務擴容即可。
6)代碼的復用
每個服務都提供REST API,所有的基礎服務都必須抽出來,很多的底層實現都可以以介面方式提供。
| 容器化 |
是雲原生的核心技術,它是一種相對於虛擬機來說更加輕量的虛擬化技術。能為我們提供一種可移植、可重用的方式來打包、分發和運行程序。
容器的基本思想就是將需要執行的所有軟體打包到一個可執行程序包。例如,將一個Java虛擬機、Tomcat伺服器以及應用程序本身打包進一個容器鏡像。用戶可以在基礎設施環境中使用這個容器鏡像啟動容器並運行應用程序。
而Docker是目前應用最為廣泛的容器引擎,容器化為微服務提供實施保障,起到應用隔離作用,K8S是容器編排系統,用於容器管理,容器間的負載均衡,Docker和K8s都採用Go編寫,(K8s全稱Kubernetes,由首字母K,結尾字母s以及中間的8個字母組成,所以簡稱為K8s)。
| DevOps |
是軟體開發人員和IT運維人員之間的合作過程,是一種工作環境、文化和實踐的集合,目標是高效地自動執行軟體交付和基礎架構更改流程。開發和運維人員通過持續不斷的溝通和協作,可以以一種標准化和自動化的方式快速、頻繁且可靠地交付應用。
| 持續交付 |
就是不誤時開發,不停機更新,是一種軟體開發方法,它利用自動化來加快新代碼的發布。在持續交付流程中,開發人員對應用所做的更改可通過自動化被推送至代碼存儲庫或容器鏡像倉庫。