微服務雲應用開發技術前瞻

微服務體系結構簡介

  • API Gateway(Api 網關)編程

    • 爲體系(或子系統)提供統一的訪問入口跨域

    • 在統一訪問的基礎上,可以實現緩存

      • 訪問的認證與受權(策略控制)安全

      • 動態路由服務器

      • 服務遷移架構

      • 負載均衡負載均衡

      • 限流、降級等反向代理框架

      • 測試規劃運維

        • 壓力測試異步

        • 金絲雀測試(灰度測試)

服務註冊中心(Service Register Server)

  • 全部微服務都會註冊在中心

  • 註冊中心提供功能(服務器端)

    • 服務註冊

    • 服務下線

    • 服務續約

    • 剔除失效服務

  • 客戶端

    • 服務獲取

    • 服務調用

    • 容錯

大體可歸爲三類:

  • 應用內:直接集成到應用中,依賴於應用自身完成服務的註冊與發現,最典型的是Netflix提供的Eureka
  • 應用外:把應用當成黑盒,經過應用外的某種機制將服務註冊到註冊中心,最小化對應用的侵入性,好比Airbnb的SmartStack,HashiCorp的Consul
  • DNS:將服務註冊爲DNS的SRV記錄,嚴格來講,是一種特殊的應用外註冊方式,SkyDNS是其中的表明

配置管理中心(Configuration Server)

  • 分佈式配置管理中心

    • 每一個服務都有可能包含不一樣類型的配置

      • 開發環境、測試環境和生產環境
  • 提供的經常使用功能

    • 提供統1、集中配置管理

      • 配置一致性
    • 不一樣環境提供不一樣配置

      • 開發、測試和生產
    • 運行期間的動態配置更新

    • 配置版本管理(回滾)

受權與認證服務(策略控制)

  • 一般是身份認證與安全控制

  • 服務提供的功能

    • 安全、簡單和開放

    • 服務無狀態

    • 能跨語言、跨服務(甚至跨域)調用傳遞

    • 具備足夠性能

    • OAuth2/JWT

      • JWT: JSON Web Token
  • 斷路器與容錯機制

    • 分佈式系統中不可避免失敗,因此須要創建一種有效的防護機制來避免和隔離失敗

    • 斷路器或容錯機制須要面對:

      • 隔離:線程隔離,信號量隔離。避免個別服務故障擴大。

      • 熔斷:當失敗率達某閾值時,觸發快速失敗

      • 降級:超時降級、熔斷降級,可使用回調返回保底數據

      • 緩存:請求緩存、請求合併

      • 實時監控與報警

  • 分佈式服務追蹤與日誌整合

    • 根據服務的劃分,帶來就是一個業務會由多個服務協做完成,造成調用鏈。

    • 咱們須要追蹤和監控這些鏈路,最終掌握服務的工做質量

      • 每一個調用的實時數據收集

      • 數據存儲

      • 數據分析與展現

消息總線與消息驅動

  • EDA:事件驅動架構,自己就是一個應用普遍的設計與開發思想。消息發佈者只關注消息的發佈,而消費者只關注本身感興趣的消息。

  • EDA 帶來的好處:

    • 低耦合

    • 持久性

    • 高可擴展性

    • 高靈活性

運行環境平臺管理

  • 使用 Docker 做爲每一個微服務的運行容器

  • 引入 Docker 管理平臺

    • OpenShift Origin (RadHat)

      • 基於 Docker + Kubernetes
    • Kubernetes(CNCF)

其餘內容

  • 數據存儲

    • MySQL

    • Splunk

    • ELK

    • Redis

  • 消息忠線

    • RabbitMQ/Kafka
  • DevOps

    • Jenkins --- 持續集成

    • Git --- 源代碼管理

    • Ansible --- 運維

雲應用開發框架

  • Spring Cloud 全家桶

    • 基礎:Spring Framework + Spring Boot
  • Dubbo (阿里巴巴)

    • Spring Framework + zk
  • Vert.X (Eclipse 基金會)

    • 異步消息總線(自成系統)

 Spring Cloud 全家桶

  • Spring 家族

    • Spring Framework -- 基礎

    • Spring Boot -- 應用整合

      • 簡化配置

      • 大量應用整合

    • Spring Data 數據存取

    • Spring Cloud 雲應用整合

    • Spring Security -- 安全

Spring Cloud 全家桶

  • 提供完整微服務開發框架

  • API 網關

    • Spring Cloud Netflix Zuul

    • Spring Cloud Gateway

  • 服務註冊中心

    • Spring Cloud Netflix Eureka

    • Spring Cloud Consul

    • Spring Cloud ZooKeeper

  • 配置管理中心

    • Spring Cloud Config
  • 受權與認證服務

    • Spring Cloud Security
  • 斷路器與容錯處理

    • Spring Cloud Netflix Hystrix
  • 分佈式服務追蹤與日誌整合

    • Spring Cloud Sleuth

    • Spring Cloud Zipkin

  • 消息總線與消息驅動

    • Spring Cloud Stream

    • Spring Cloud Bus

  • 其餘

    • 客戶端負載均衡:Spring Cloud Ribbon

    • REST 聲明式編程:Spring Cloud Feign

相關文章
相關標籤/搜索