一. 架構演變歷史
1. 集中式開發
最初的大型計算機使用打孔卡,並且大多數計算都在批處理過程中進行。
2. CS架構
客戶端/服務器體系結構將大多數邏輯放在服務器端,並將某些處理放在客戶端上。
3. BS三層架構
Web瀏覽器成為客戶端軟件,而Web和應用程序服務器托管所有處理和邏輯。
4. 面向服務SOA
SOA是微服務的前身,主要是為了擺脫單體應用的問題,它充分利用現有的基礎設施;依賴消息中間件(MSMQ、RabbitMQ)和SOAP作為主要的通訊協議;快速響應業務的變化。
5. 微服務
微服務使用各個自服務控制模塊的思想代替SOA中的總線,從而實現了更加松耦合和更加靈活的系統。
二. 什么是微服務
1. 微服務介紹
(1). 簡介
微服務架構(Microservice Architecture)是一種架構概念,它的主要作用是將功能分解到離散的各個服務當中,從而降低系統的耦合性,並提供更加靈活的服務支持。
概念:把一個大型的單個應用程序和服務拆分為數個甚至數十個的支持微服務,它可擴展單個組件而不是整個的應用程序堆棧,從而滿足服務等級協議。
定義:圍繞業務領域組件來創建應用,這些應用可獨立地進行開發、管理和迭代。在分散的組件中使用雲架構和平台式部署、管理和服務功能,使產品交付變得更加簡單。
本質:用一些功能比較明確、業務比較精練的服務去解決更大、更實際的問題。
(2). 與SOA對比
(3). 優勢
關鍵點:復雜度可控,獨立按需擴展,技術選型靈活,容錯性高,可用性高。
A. 方便擴容和保證服務的可伸縮性。
B. 降低耦合,有利於團隊寫作和版本的快速更新。
C. 服務測試和升級容易。
D. 項目技術可以保持多樣性。
(4). 面臨的問題
關鍵點:多服務運維難度,系統部署依賴,服務間通信成本,數據一致性,系統集成測試,重復工作,性能監控等。
A. 增加了運維的復雜度和維護微服務集群的復雜度。
B. 從單體遷移到微服務工作量大,有困難。
C. 提高了技術開發的門檻。
2. 微服務技術體系
(1). Api資源服務:Asp.Net Core WebApi 【3.x版本】
(2). 服務的注冊與發現:【Consul 1.6.1.1】
(3). 配置中心:【Winton.Extensions.Configuration.Consul 3.1.0】
(4). 熔斷和降級:客戶端 【Polly 7.2.1】 web端 【Microsoft.Extensions.Http.Polly 3.1.5】
(5). 網關:【Ocelot 16.0.1】
Ocelot集成Consul:【Ocelot.Provider.Consul 16.0.1】
Ocelot緩存機制:【Ocelot.Cache.CacheManager 16.0.1】
Ocelot熔斷機制:【Ocelot.Provider.Polly 16.0.1】
(6). 認證授權服務器: 【IdentityServer4 4.0.2】
Core WebApi集成校驗:【IdentityServer4.AccessTokenValidation 3.0.1】
擴展HttpClient發送請求:【IdentityModel 4.3.1】
IDS4授權碼或隱式等模式的校驗: 【Microsoft.AspNetCore.Authentication.OpenIdConnect 3.1.5】
(7). JWT:【JWT 7.2.1】
(8). 負載均衡:Nginx
PS:以上程序集版本均為截止目前(20200713)最新版本,后續如果有大版本變更,寫法發生變化或者引進了新特性,該系列文章均會更新。
部分升級寫法:
A. Ocelot 從15.x版本升級到16.x版本:根節點由ReRoutes 改為 Routes即可。
B. JWT 從5.x版本升級到7.x版本:解密方法發生了變化,詳見具體章節。
C. IdentityServer4 從3.x版本升級到4.x版本:必須配置apiscopes,ApiResource中要加上 { Scopes = { "xxxx" } }, configureservice要加上 .AddInMemoryApiScopes(Config1.GetApiScopes())
3. 最終架構圖
三. 目錄
階段一:微服務系列
第一節:微服務准備(Webapi復習、PostMan的使用、項目啟動方式、業務代碼准備)
第四節:Polly基於控制台和Web端用法(熔斷、降級、重試、超時處理等)
第五節:基於Ocelot網關簡介、路由功能、集成Consul使用
第七節:基於Ocelot網關層的微服務校驗(手寫jwt校驗中間件和利用IdentityModel.Tokens.Jwt校驗)
第八節:理解認證和授權、Oauth2.0及四種授權模式、OpenId Connect
第九節:IdentityServer4簡介及客戶端模式和用戶密碼模式的應用
第十節:IdentityServer4隱式模式介紹和代碼實操演練
第十一節:IdentityServer4授權碼模式介紹和代碼實操演練
第十二節:Ocelot集成IDS4認證授權-微服務主體架構完成
第十三節:Nginx的簡介、三種輪詢配置方式、以及解決微服務架構負載均衡問題
第十四節:分布式事務簡介、理論分析、及強一致性(2PC、3PC)剖析
第十四節:分布式事務之弱一致性(TCC)、最終一致性(本地消息表、最大努力通知)剖析
第十六節:CAP框架異常處理、實現分布式事務(最終一致性) 及 其它用法
階段二:IdentityServer4系列
第一節:理解認證和授權、Oauth2.0及四種授權模式、OpenId Connect
第二節:IdentityServer4簡介及客戶端模式和用戶密碼模式的應用
第三節:IdentityServer4隱式模式介紹和代碼實操演練
第四節:IdentityServer4授權碼模式介紹和代碼實操演練
第五節:IdentityServer4的Pkce機制、令牌刷新機制、混合授權模式
第六節:IdentityServer4設備流授權模式和掃碼登錄(應用於IOT)
階段三:Nginx系列
第一節:Nginx的簡介、三種輪詢配置方式、以及解決微服務架構負載均衡問題(舊)
第二節:Nginx簡介和Win、Linux、Docker下不同的安裝方式詳解
第三節:Nginx基本配置使用詳解(動態代理、動靜分離、防盜鏈、多域名站點、下載限速等等)
!
- 作 者 : Yaopengfei(姚鵬飛)
- 博客地址 : http://www.cnblogs.com/yaopengfei/
- 聲 明1 : 如有錯誤,歡迎討論,請勿謾罵^_^。
- 聲 明2 : 原創博客請在轉載時保留原文鏈接或在文章開頭加上本人博客地址,否則保留追究法律責任的權利。