雲原生的主要特徵
進一年咱們都在使用雲原生框架
SpringCloud微服務開發項目,敏捷快速
部署在容器中,解決部署環境差別
使用DevOps自動部署,減小運維壓力html
微服務
- 業務功能單一但完整
- 只對外提供必要的服務接口
- 輕量服務編排,靈活調度
- 彈性擴縮
- 便於開發以及快速更新
容器
- 資源使用效率高
- 啓動快,沙箱機制,容器集
- 羣編排調度
- 容器集羣的服務註冊發現
- 鏡像分層和打包
- 鏡像倉庫分發,隊開發人員友好
DevOps
雲原生的發展
傳統
標準
成熟
雲高效
- 容器化
鏡像小、啓動速度快、資源浪費少
更快的故障恢復、應用遷移、彈性擴展、應用版本升級回滾
- 雙活部署
實現應用的快速安裝部署
雲高級
- 應用自描述
基於標準應用建模,可跨雲平臺部署運行,不影響服務等級
- 應用自維護
故障自愈、自主負載均衡等
實現基礎設施無關的應用健壯性
雲原生(Cloud Native)
- 微服務化
各服務獨立升級維護
各服務分別設置策略,控制粒度更精細,有利於把資源分配到特定的任務上,提升效率
- 編排調度
經過對多個微服務靈活編排,組裝成不一樣的應用
雲原生高級
- 雲原生開發平臺
應用開發平臺自動生成微服務架構,代碼自動生成,自動建立微服務編排信息
- 標準化框架、服務、控件
風格統一,便於操做
- 代碼自動化生成
自動對接DevOps系統,完成從應用微服務化、代碼自動生成、到應用上架全程自動化
雲原生高級規劃
- 應用開發基於標準規範的開發平臺
- 使用標準框架、服務、UI控件、基礎服務倉庫
- 應用引擎根據開發人員配置,自動生成所需微服務、微服務鏡像定義文件、建立微服務編排信息
- 開發人員只須要在微服務代碼架構中作業務邏輯實現
- 提交代碼、編排信息到平臺版本倉庫,觸發DevOps平臺完成鏡像建立、CI/CD、鏡像上傳和應用上架
容器
本質是一個與宿主機系統共享內核,但與系統中的其餘進程資源相隔離的執行環境。
Docker容器,是當前承認度高、社區和生態最活躍的開源容器技術。git
優點
- 佔用資源少,鏡像小,啓動快
- 靈活的容器運行調度機制
- 鏡像機制,與運行環境無關,易於遷移複製
- 沙箱機制,僅開放必要的端口提供訪問
- 容許實例簡單、快速的建立、擴展、銷燬
調度策略
- 默認選擇最空閒的節點運行
- 在指定的節點或標籤節點運行
- 親和性(反親和性)全部特定標籤在同一節點運行
- 每一個節點運行單一實例
故障恢復策略
- 設置探測時間間隔
- 設定故障檢測方式:端口檢測(TCP、HTTP)、進程檢測
- 設定容器數量限制,低於限值,則微服務對應容器從新建立
彈性擴縮策略
- 基於資源的彈性擴縮
基於容器內存/CPU佔用大小,若是持續超過指定時長,容器數量增長或減小。
- 基於時間段的彈性擴縮
基於時間段,在高峯/低峯調整容器數量,自動增長或減小
運維
DevOps
Development + Operations 及 開發+操做
核心理念就是消除開發和操做之間的隔閡,提升軟件迭代和交付上線的速度和質量web
技術
- git
統一代碼管理
- Harbor
鏡像倉庫+日誌管理(Docker+k8s)
harbor搭建與使用
- Junit
自動單元測試
- sonar Qube
自動漏洞掃描
- Jenkins
自動化部署
生命週期
源碼管理(git)=》單元測試(Junit)=》漏洞掃描(sonar Qube)=》鏡像倉庫(Harbor)=》自動化部署(Jenkins)=》日誌管理(k8s)架構
學習參考
Docker 進階之路負載均衡