[雲原生]~雲原生簡介

雲原生的主要特徵

進一年咱們都在使用雲原生框架
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 進階之路負載均衡