高性能微服务架构设计模式@霞落满天
高性能微服務架構設計模式
主講:霞落滿天
現在企業開發都是微服務架構,但是有很多問題,比如分布式定義,分布式的微服務怎么拆分,什么時候拆分,怎么做到高性能,中臺怎么設計,讀寫分離模式難道僅僅是MySQL做主從就夠了么?分庫分表怎么使用,緩存和數據庫之間怎么保持一致性,領域模型中的CQRS模式又應該怎么結合自己公司的業務呢?面試過程老是被問題一些系統架構相關的問題,怎么面對新問題可以在面試中短短的時間征服面試官?針對這些問題我錄制了一期學習視頻。有任何學習問題可以給我留言
視頻地址:https://edu.csdn.net/course/detail/27256/
?
課程大綱
開篇 高性能系統架構的分布式理論基礎
模型 可無限擴展的AKF立方
問題 億級QPS的電商網站遇到的問題
模式 CQRS模式進行架構設計
模式 事件溯源模式進行架構設計
結尾 新問題
課程收益
高性能:億級QPS的電商網站怎么做到高性能?是不是用了分庫分表就萬事大吉了?如果還不行是不是擴容加機器就可以了?Kafka為什么可以做到那么高性能?怎么實現可以系統接近無限擴容等等。
開發效率:產品提出一個需求,往往改一發而動全身。怎么樣既要做到高性能也要做到易維護易擴展?
技術選型:異步解耦,微服務拆分,領域驅動模型設計這些理論怎么用。
面試:突擊押寶,短時間幫你把面試常見知識點提綱挈領。
聽懂:只有精心設計的課程才能讓人聽懂。
分布式系統的定義和特征
緣起:首先只有先學習優秀的分布式架構自己才可以做出優秀分布式架構,第二不管多么炫的技術架構,后面的一些分布式思想和理論都是很多年前的,最少也是15年前的。
現狀:關于分布式系統的定義其實現階段也并沒有得到普及,一些分布式的經典著作有定義,但是不統一。大家都在說分布式系統,但是很多人包括一些架構師并沒有理解分布式,做系統架構并不是分布式的,如果訪問量很小不會顯現出問題,如果訪問量很大就會暴露很大問題,這時候可能會用一些不太好的方案來解決問題,比如亂加機器,甚至有時候加機器也解決不了問題。
定義:分布式系統是其組件分布在聯網的計算機上,組件之間通過傳遞消息進行通信和協調的系統。
特征:組件的并發性,缺乏全局時鐘,組件故障的獨立性。
關鍵技術:名字服務,間接通信,復制技術,分布式事務。
正交性設計:
定義:兩條直線相交成直角,就是正交的。正交也就是兩條直線互不依賴。如果一個系統的變化不影響另一個系統這些系統就是正交的。
直接應用正交性原則,構建的系統的質量可以得到很大提高,可以讓你的系統易于設計、開發、測試及擴展上線。
高內聚:每個服務是功能獨立單一的。系統與系統之間,服務與服務之間是獨立互相獨立,隔離的。
正交的好處:提高開發效率,降低風險。
?
舉例Kafka為什么是分布式的
Kafka 是最流行的消息中間件,有別于RabbitMQ, RabbitMQ不是真正意義上的分布式系統,因為他沒有做到分布式,他只是做了鏡像。阿里巴巴開源的RocketMQ也是分布式的系統。
Kafka的消息通過Toplic(主題)進行分類,這就好比數據庫的表,或者文件系統里的文件夾。 Toplic可以被分為若干個Partition(分區),一個分區就是一個提交日志。消息以追加的方式寫入分區。
分區可以并發讀寫,提高性能。數據在多節點之間復制提高可用性。
?
間接通信:對于分布式系統,間接的概念也越來越多地應用于通信范型。間接通信被定義為在分布式系統中實體通過中介者進行通信,沒有發送者和接受者之間耦合,中介者的確切特性隨方法的不同而不同。
空間解耦:發送者不知道也無需知道接收者,接收者也同樣無需知道發送者,因為空間解耦使得系統開發者有很大的自由去處理改變:參與者可以被替換,更新,復制甚至遷移。
時間解耦:發送者和接收者可以有獨立的生命周期,也就是說發送者和接收者不需要同時存在才可以通信,發送者可以隨時進入離開。
tips:所有計算機問題,都可以通過引入一個新的間接層次來解決,那些已經有過多間接層次的問題除外。(1965年劍橋Titan項目)
?
分布式系統在電商微服務中臺的表現
電商業務中臺微服務拆分為商品中心(商品詳情+商品列表),購物車中心,訂單中心,用戶中心。
微服務鏡像部署在不同的服務器上。
好處:高內聚,低耦合,易維護,易擴展。
問題:分布式事務,調用鏈復雜,一致性問題等…
?
標準CQRS模式
實現:標準CQRS由命令模型和查詢模型組成,這是按照領域模型來設計的,命令模型實現新增,更新,刪除操作,查詢模型訂閱命令端發布的事件并更新查詢視圖,最終視圖是最新的,有時候需要添加新視圖來支持不同的查詢類型。
查詢模型使用的數據庫不限于MySQL也可以是ES,Redis,MongoDB等。
事件溯源模式簡介
Event Sourcing Pattern代表事件溯源模式也有稱為事件源模式。使用僅追加存儲來記錄描述在域中對數據執行的操作的完整系列事件,而不是僅存儲當前狀態,以便可以使用該存儲來實現域對象。
通過避免同步數據模型和業務域的需求,該模式可以簡化復雜域中的任務。提高性能,可伸縮性和響應能力;提供交易數據的一致性;并保持完整的審計追蹤和歷史記錄,以支持采取補償措施。
下面是課程的一些精彩截圖:
?
總結
以上是生活随笔為你收集整理的高性能微服务架构设计模式@霞落满天的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “空山三十载”下一句是什么
- 下一篇: spring springboot sp