微服務體系結構簡介
- API Gateway(Api 網關)
- 為體系(或子系統)提供統一的通路入口
- 在統一通路的基礎上,能夠實作
- 通路的認證與授權(政策控制)
- 動态路由
- 服務遷移
- 負載均衡
- 限流、降級等反向代理
- 測試規劃
- 壓力測試
- 金絲雀測試(灰階測試)
服務注冊中心(Service Register Server)
- 所有微服務都會注冊在中心
- 注冊中心提供功能(伺服器端)
- 服務注冊
- 服務下線
- 服務續約
- 剔除失效服務
- 用戶端
- 服務擷取
- 服務調用
- 容錯
大緻可歸為三類:
- 應用内:直接內建到應用中,依賴于應用自身完成服務的注冊與發現,最典型的是Netflix提供的Eureka
- 應用外:把應用當成黑盒,通過應用外的某種機制将服務注冊到注冊中心,最小化對應用的侵入性,比如Airbnb的SmartStack,HashiCorp的Consul
- DNS:将服務注冊為DNS的SRV記錄,嚴格來說,是一種特殊的應用外注冊方式,SkyDNS是其中的代表
配置管理中心(Configuration Server)
- 分布式配置管理中心
- 每個服務都有可能包含不同類型的配置
- 開發環境、測試環境和生産環境
- 每個服務都有可能包含不同類型的配置
- 提供的常用功能
- 提供統一、集中配置管理
- 配置一緻性
- 不同環境提供不同配置
- 開發、測試和生産
- 運作期間的動态配置更新
- 配置版本管理(復原)
- 提供統一、集中配置管理
授權與認證服務(政策控制)
- 通常是身份認證與安全控制
- 服務提供的功能
- 安全、簡單和開放
- 服務無狀态
- 能跨語言、跨服務(甚至跨域)調用傳遞
- 具有足夠性能
- OAuth2/JWT
- JWT: JSON Web Token
- 斷路器與容錯機制
- 分布式系統中不可避免失敗,是以需要建立一種有效的防禦機制來避免和隔離失敗
- 斷路器或容錯機制需要面對:
- 隔離:線程隔離,信号量隔離。避免個别服務故障擴大。
- 熔斷:當失敗率達某門檻值時,觸發快速失敗
- 降級:逾時降級、熔斷降級,可以使用回調傳回保底資料
- 緩存:請求緩存、請求合并
- 實時監控與報警
- 分布式服務追蹤與日志整合
- 根據服務的劃分,帶來就是一個業務會由多個服務協作完成,形成調用鍊。
- 我們需要追蹤和監控這些鍊路,最終掌握服務的工作品質
- 每個調用的實時資料收集
- 資料存儲
- 資料分析與展示
消息總線與消息驅動
- EDA:事件驅動架構,本身就是一個應用廣泛的設計與開發思想。消息釋出者隻關注消息的釋出,而消費者隻關注自己感興趣的消息。
- EDA 帶來的好處:
- 低耦合
- 持久性
- 高可擴充性
- 高靈活性
運作環境平台管理
- 使用 Docker 作為每個微服務的運作容器
- 引入 Docker 管理平台
- OpenShift Origin (RadHat)
- 基于 Docker + Kubernetes
- Kubernetes(CNCF)
- OpenShift Origin (RadHat)
其他内容
- 資料存儲
- 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
轉載于:https://www.cnblogs.com/RealWorld/p/9007060.html