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