本文原始碼:GitHub·點這里 || GitEE·點這里
一、基礎概念

1、單服務
所有業務服務和應用組件部署在一臺服務上,節省成本,這是單服務結構,適用于并發低,業務單一的場景,
2、集群模式
業務量逐漸增大,并發高,把一臺服務進行水平擴展,做一個服務群,請求壓力分散到不同的服務上處理,每臺服務稱為集群的一個節點,到這就是集群服務,
3、分布式架構
分布式結構就是按照業務功能,拆分成獨立的子服務,獨立的庫表,可以獨立運行,且服務之間通信和互動,帶來的好處降低業務間的耦合度,方便開發維護,水平擴展,復用性高等等,
4、技術體系
服務基礎架構:Dubbo框架,SpringCloud框架;
容器化運維:Docker、Kubernetes;
資料存盤:關系型MySQL,NoSQL資料庫,OLAP引擎;
常用組件:Zookeeper協調,MQ異步,Redis快取;
二、分布式框架
1、Dubbo框架
垂直應用越來越多,應用之間互動不可避免,將核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的回應多變的市場需求,此時,用于提高業務復用及整合的分布式服務框架(RPC)是關鍵,Dubbo框架的核心能力:面向介面的遠程方法呼叫,智能容錯和負載均衡,以及服務自動注冊和發現,
2、SpringCloud框架
分布式架構下最成熟的框架,SpringCloud是一系列框架的有序集合,它利用SpringBoot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、訊息總線、負載均衡、斷路器、資料監控等,都可以用SpringBoot的開發風格做到一鍵啟動和部署,

https://github.com/cicadasmile/spring-cloud-base
核心組件
注冊中心:具備服務發現、服務記錄、查詢、動態管理的機制,常用的注冊中心,Zookeeper、Eureka、Consul、Nacos等,
熔斷降級:限制流量突然高并發沖垮系統,使這類報文以比較均勻的速度流動發送,達到保護系統相對穩定的目的,常用演算法令牌桶、漏斗;常用組件Nginx、CDN、Hystrix、Sentinel,通過不同節點控制流量,
服務網關:在整個架構體系上也是一個服務,作為請求的唯一入口,與外觀模式十分類似,在網關層處理所有的非業務功能,為客戶端提供定制的API,常用組件Zuul、Tyk、Kong,

https://github.com/cicadasmile/husky-spring-cloud
3、業務型組件
訊息中間件:RocktMQ、Kafka、RabbitMQ等;
快取中間件:Redis、Eache等;
分布式事務:Seata、Hmily、TCC-transaction等;
三、架構細節
1、全域ID策略
業務場景產生的資料,都需要一個唯一ID作為核心標識,用來流程化管理,比如常見的:UUID、雪花演算法、自增主鍵、ID容器等,
2、介面冪等性
冪等操作的特點是其任意多次執行所產生的影響均與一次執行的影響相同,就是說,一次和多次請求某一個資源會產生同樣的作用影響,在介面、重試、補償的場景下尤其要保證操作的冪等性,
3、快取處理
業務系統中,查詢時最容易出現性能問題的模塊,查詢面對的資料量大,篩選條件復雜,所以在系統架構中引入快取層,則是非常必要的,用來快取熱點資料、歸檔資料、首頁查詢等,達到快速回應的目的,
4、異步處理流程
異步是一種設計理念,異步操作不等于多執行緒,MQ中間件,或者訊息廣播,這些是可以實作異步處理的方式,異步處理不用阻塞當前執行緒來等待處理完成,而是允許后續操作,直至其它執行緒將處理完成,并回呼通知此執行緒,
5、高并發與資源鎖
高并發業務核心還是流量控制,控制流量下沉速度,或者控制承接流量的容器大小,多余的直接溢位,這是相對復雜的流程,一方面可以通過流量整形的方式解決請求量,另一方面可以通過加鎖解決并發訪問資源的問題,
6、分布式事務
不同的服務不同資料庫的多個細節操作組成,這些無感知的細節操作分布在不同服務上,甚至屬于不同的地區和應用,事務的參與者、支持事務的服務器、資源服務器以及事務管理器分別位于不同的分布式系統的不同節點,如何保證這些操作全部成功或者全部失敗,即保證不同資料庫間的資料一致性,這就是分布式事務需要解決的核心問題,

https://github.com/cicadasmile/data-manage-parent
四、資料源組件
1、關系型資料庫
采用了關系模型來組織資料的資料庫,其以行和列的形式存盤資料,例如MySQL、Oracle,在分布式系統下,為了保證核心流程的穩定性,在關鍵業務上基本都采用關系型資料庫,當業務完成后,如果資料量大,會把資料同步到其他查詢性能高組件中,
2、NoSQL資料庫
NoSQL意即"不僅僅是SQL",對不同于傳統的關系型資料庫的資料庫管理系統的統稱,NoSQL用于超大規模資料的存盤,這些型別的資料存盤不需要固定的模式,無需多余操作就可以橫向擴展,例如MongoDB、Cassandra等,
3、資料管理策略
讀寫庫分離、查詢資料分庫分表、分布式下業務分庫、基于用戶流量分庫,

https://github.com/cicadasmile/data-manage-parent
五、服務監控
1、生產故障
在分布式的復雜架構下,應用服務、軟體服務、硬體服務,任何層面出問題都可能導致請求不能完整執行,引發一系列效應,做好全鏈路的監控,快速定位問題是非常關鍵的,
2、應用層監控
應用層為開發的業務邏輯服務,也是最容易突發問題的一個層面,通常從請求流量、服務鏈路熔斷、系統例外日志幾個方面做監控指標,觀察系統是否穩定,
3、軟體層監控
這里通常指,資料庫層面,例如Druid的監控分析;常用中間件,例如RocketMQ的控制臺;Redis快取:提供命令獲取相關監控資料等,
4、硬體層監控
硬體層面,關注的三大核心內容:CPU、記憶體、網路,底層硬體資源爆發的故障,來自上層的應用服務或者中間件服務觸發的可能性偏高,成熟的監控框架,例如zabbix,grafana等,
六、源代碼地址
GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile
推薦閱讀:編程體系整理
| 序號 | 專案名稱 | GitHub地址 | GitEE地址 | 推薦指數 |
|---|---|---|---|---|
| 01 | Java描述設計模式,演算法,資料結構 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
| 02 | Java基礎、并發、面向物件、Web開發 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆ |
| 03 | SpringCloud微服務基礎組件案例詳解 | GitHub·點這里 | GitEE·點這里 | ☆☆☆ |
| 04 | SpringCloud微服務架構實戰綜合案例 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
| 05 | SpringBoot框架基礎應用入門到進階 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆ |
| 06 | SpringBoot框架整合開發常用中間件 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
| 07 | 資料管理、分布式、架構設計基礎案例 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
| 08 | 大資料系列、存盤、組件、計算等框架 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/174398.html
標籤:其他
下一篇:學習第53天
