精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

多層依賴:如何避免落入數據服務接口的陷阱?

開發 前端
我們先看看熟悉的傳統單體架構設計思路,重點關注一下它有什么缺點,這有助于你理解為什么會出現 CQRS 這種模式。這里我們繼續沿用前面課程里用戶中心的案例,請看下圖。圖里面展示了單體服務狀態下的用戶中心,這時候高頻和低頻的讀寫服務放在了一起。

前面,我們討論了不同類型系統(如讀多寫少、強一致、寫多讀少和讀寫密集)的優化方法。但在很多復雜的業務系統中,讀寫邏輯往往相互交織、互相制約,這讓優化工作變得更具挑戰。遇到這樣的情況,不妨嘗試一種更為高級的拆分模式——CQRS。你或許已經聽說過 CQRS,卻因為它看似復雜而猶豫不決。不過,今天的課程會通過一些實例來展示 CQRS 與傳統單體服務架構的不同之處。學完后,你會深入理解 CQRS 的設計思路,找到避免數據服務接口陷阱的方法,并理解一些“反直覺”的設計選擇,比如在微服務架構中為何會把 5 個項目拆分成 200 個。

傳統單體架構缺點

我們先看看熟悉的傳統單體架構設計思路,重點關注一下它有什么缺點,這有助于你理解為什么會出現 CQRS 這種模式。這里我們繼續沿用前面課程里用戶中心的案例,請看下圖。圖里面展示了單體服務狀態下的用戶中心,這時候高頻和低頻的讀寫服務放在了一起。

圖片圖片

在我們的印象中,用戶中心讀并發流量大。但實際上用戶中心里,不是所有功能都是讀多寫少類型的,你可以參考后面表格列出的例子。

圖片圖片

可以看到,除了讀多寫少的服務功能外,還有很多其它類型的功能(事實上這取決于調用方的場景)。

圖片圖片

這張圖展示了傳統單體架構的優化方式,我們可以清晰地看到在讀寫操作優化上的差異。首先,關于高并發場景下的寫優化,通常需要使用隊列作為緩沖,以保證數據一致性。對于一些特殊的業務場景,為了確保分布式事務的一致性,寫操作的服務器數量不能過多,因為參與事務協調的機器越多,響應速度就越慢。至于讀優化,主要是通過增加服務器的部署來分擔請求壓力,常見做法是對高頻訪問的數據進行多副本緩存。由于讀操作占用大量內存,并且需要更多的數據層連接,且請求壓力較大,因此我們的部署還必須支持服務和數據層的動態擴展。

通過這些分析,我們發現,在單體架構中,同時優化讀寫操作時,很難在成本和性能之間找到理想的平衡。此外,單體架構的數據庫層也存在一些問題。正如圖中所示,讀寫操作都依賴同一個數據庫,這意味著數據層的性能上限也受到集群性能的限制。而且,由于數據庫和代碼層緊密耦合,一旦業務流量增長,我們就需要擴容或更換數據層,而這個過程會變得非常復雜。

圖片圖片

既然單體服務讀寫混合部署這么復雜,有沒有更簡單的解決方案呢?這時 CQRS 就能派上用場了。

CQRS 的讀寫拆分策略

CQRS,全稱是命令查詢責任分離(Command Query Responsibility Segregation),它是一種將應用程序中的命令(Commands)和查詢(Queries)職責分開的方式。如果你對 CQRS 的詳細理論感興趣,可以課后自行深入學習。今天我們主要聚焦于讀寫拆分的部分。CQRS 最吸引我的地方就是它將讀和寫拆分成不同的項目,這種方式可以說非常符合“微服務”的理念。接下來,我們繼續通過用戶中心的案例來對比和分析。

圖片圖片

在示意圖中可以看到,我們將用戶中心的業務根據高并發寫入和高并發讀取兩個類別,分拆成了獨立的項目部署。這種拆分讓讀寫優化更加靈活,投入成本也更為精準。拆分后,我們可以根據流量調整服務器和基礎服務的規模,顯著降低運維成本、減少服務壓力。此外,讀寫拆分有助于提升數據庫性能,擴大我們在數據層的選擇,比如可以使用 ElasticSearch、ClickHouse、NoSQL 等特殊的數據服務。如果細心觀察,你會發現許多流行的分布式數據服務中也存在類似的讀寫分離實現。

總結來說,CQRS 允許我們將讀寫操作分別優化和部署,最大化利用讀寫優化的混合優勢,同時為系統提供靈活的擴展能力。在此基礎上,我們還可以將常見的讀寫操作封裝成標準模塊,提升優化效率,讓業務在復用這些模塊時能直接具備動態擴展能力。

不過,讀寫分離也有一定代價,因此除非在核心業務中,一般不建議大規模應用。這些優化技巧對運維有較高要求,通常需要運維來配合修改配置和服務調整。比如在數據同步方面,我們一般使用隊列(如 binlog 數據同步隊列或業務變更廣播)來實現。這類同步通常不需編寫額外代碼,而是依賴基礎服務,但如果沒有自動化工具,每次擴展都需要手動調整配置,既繁瑣又易出錯。

此外,一些業務場景可能需要讀強一致性,拆分后的架構可能難以滿足。這里建議引入一個類似 Raft 的讀強一致性 Proxy,來確保業務輕松獲得最新數據。

數據服務接口導致的多層依賴

高并發的業務常常很復雜,而 CQRS 比較適合拆分和優化數據接口,但對于復雜的業務接口我們還要做更多處理。想要理解這一點,先要審視一下我們的編程習慣。很多人認為,把業務接口寫成數據接口這個方式是衡量服務是否靈活的標準,甚至催生出 RESTful 這種 API 設計思路,我們看一個例子。

圖片圖片

觀察上面的網址,可以發現 RESTful 是圍繞數據實體來設計的數據服務。這么做雖然方便快速迭代,但很容易讓上層業務依賴底層的數據結構,而且接口的隔離性很差,修改的時候影響范圍很大。

不僅如此,圍繞數據實體去設計接口還會帶來更多的問題。下圖是一個常見的在線商城服務,可以看到每個具體業務應用(藍色方塊)都是通過拼合多個 Service 服務實現的。

圖片圖片

這種結構日常運轉沒什么問題,但一旦流量增大,對 QPS 要求更高的時候,這個結構就會有大量的網絡損耗,接口的請求耗時鏈路分析如下圖。

圖片圖片

我們目前接口的總返回時間是 420ms,而這個接口依賴了兩個 Service 服務,而這兩個 Service 又各自依賴了其他服務。顯然,這種依賴關系消耗了大量的時間。在這種情況下,使用緩存來減少底層服務接口的調用次數可以提高接口性能,但這種方法也有局限性。它主要適用于優化那些不需要強一致性的讀取服務,而且可能會導致緩存不一致等維護問題。

再想想我們在寫項目時,為何通常會自覺地為每個功能多封裝一層 Service,并且將 Model 層設計成多層目錄?其實,原因很簡單,因為多層依賴的情況非常常見,而實體之間的關系又往往比較復雜,一層 Model 很難涵蓋所有的邏輯和關系。所以,我們通常會不自覺地通過這種方式來進行優化,確保代碼結構更加清晰、靈活,也更易于維護。

圖片圖片

如果是大型系統,業務實體關系更多、更復雜,那么反映在代碼上就會有更多的層級。當我們的系統復雜到一定程度,就會出現多層項目依賴問題,呈現出下圖所示的“搭樂高”狀態。

圖片圖片

可以說,這種用數據實體思路設計接口的方法確實存在一些缺點,也暴露了貧血模型的問題。為了避免這種“搭積木”式的依賴關系,在項目初期,我們通常盡量將依賴邏輯直接在 Model 層實現。不過,如何在 Model 層內部進行分層,功能如何拆分,并沒有統一的參考標準,因此團隊之間的實現往往各不相同,很難形成一致規范,這也導致了后續的優化和維護成本居高不下。

為了解決多層依賴的問題,我們可以考慮充血模型作為一種替代方案。接下來,我們結合接口實現的實例來直觀對比一下這種方法,從而幫助你更好地理解充血模型的優點和應用場景。

圖片圖片

可以看到,和貧血模型直接寫增刪改查不同,充血模型通過拼合多個實體的功能直接提供業務服務。同時,為了更好地拆分復雜的依賴實體關系,充血模型按業務領域劃分了 Model 層,每個領域會包含更多的子領域,這會導致模型內實現有更多的分層。但是因為模型內的實體實現都是業務操作,這樣項目之間接口只有業務依賴關系,而不是數據依賴。業務依賴關系的接口之間只有流程和事務的拼接,訪問頻率也不會那么高,可以很好地緩解系統壓力。

微服務的平層設計

不過,即使我們使用了充血模型,仍然會有一些公共數據存在多層依賴的情況。為此,微服務做出了新嘗試,直接去掉所有服務的層級,設計成大平層的架構。如果你曾經翻過一些微服務資料,可能會疑惑微服務的設計為什么和我們的習慣差異這么大?比如幾個小接口就能封裝成一個項目,再比如服務之間的依賴不是樹形而是星狀。

圖片圖片

圖片圖片

這是因為,在微服務里一個 Service 就是一個獨立部署的項目,同層 Service 服務之間沒有上下層級關系,可以相互調用(雖然不推薦)。這和我們以往的橫切習慣有很大不同,屬于縱切拆分。橫切是按照依賴關系把服務劃分為內網服務、外網服務,縱切可以理解成按業務服務切分,具體效果如圖。

圖片圖片

結合之前的知識,不難發現,橫切服務適用于項目的初期驗證階段,具有較高的復用性,但同時也帶來了復雜的依賴關系,性能優化較為困難。而縱切服務則更適合復雜業務場景,沒有多層依賴的負擔,性能更優。但由于依賴關系需在充血模型內部實現,因此還要解決數據共享的問題,數據同步的難度較高,且業務邏輯的梳理也較為復雜。

盡管縱切結構并不常見,但近年來微服務和領域驅動設計(DDD)都選擇了這種方法。

責任編輯:武曉燕 來源: 二進制跳動
相關推薦

2023-05-17 10:53:43

AICIO

2021-04-22 11:22:12

云計算數據遷移混合云

2021-03-01 15:52:14

開源開源軟件陷阱

2017-10-20 10:19:49

Kotlin語言陷阱

2018-06-11 15:26:47

云計算企業云陷阱

2019-02-11 10:00:23

云網絡云平臺微服務

2013-01-06 10:15:02

大數據分析數據分析師大數據

2016-09-08 23:47:17

大數據大數據服務

2016-10-10 23:01:48

安全認證云供應商安全評估

2024-11-01 10:37:31

2021-02-28 13:19:42

大數據IT數據管理

2021-05-21 14:19:45

數據服務API技術

2022-09-19 09:19:24

云存儲TCO云服務

2022-08-26 05:12:29

IT運營工具蔓延

2022-12-05 11:57:10

2014-07-11 10:23:54

2012-04-28 10:00:42

2019-10-29 14:15:25

云存檔數據服務技術

2012-02-14 10:18:11

WCF數據服務

2022-06-09 10:33:46

欺騙工具網絡攻擊
點贊
收藏

51CTO技術棧公眾號

狠狠色狠狠色综合| 第一会所亚洲原创| 欧美色视频日本版| 色女人综合av| 成 人片 黄 色 大 片| 欧美黄色一级视频| 亚洲欧美在线一区二区| 网站在线你懂的| 欧美xxxhd| 亚洲人精品一区| 欧美在线一二三区| 国产77777| 六月丁香综合在线视频| 97香蕉久久超级碰碰高清版| 亚洲图片第一页| 国产精品xxxav免费视频| 欧美亚洲动漫精品| 日韩在线一级片| а√资源新版在线天堂| www国产精品av| 99热国产免费| 亚洲综合精品国产一区二区三区| 亚洲茄子视频| 欧美巨乳在线观看| 懂色av粉嫩av浪潮av| 另类尿喷潮videofree| 在线成人午夜影院| 国产精品一区二区羞羞答答| 1024在线看片你懂得| 亚洲私人影院在线观看| 日韩不卡av| 四虎影视在线观看2413| 成人性生交大片免费看中文 | 激情小说中文字幕| 久久福利影院| 夜夜躁日日躁狠狠久久88av | www.亚洲黄色| 韩国三级中文字幕hd久久精品| 茄子视频成人在线| 国产无码精品一区二区| 欧美日韩三级| 色综合男人天堂| 亚洲成人生活片| 外国成人激情视频| 日韩中文字幕精品| 福利视频第一页| 四虎成人av| 日韩亚洲欧美成人| 午夜成人亚洲理伦片在线观看| 国产日产一区| 亚洲新中文字幕| 五月婷婷婷婷婷| 久久国产精品成人免费观看的软件| 亚洲人成网站色ww在线| 玖玖爱在线观看| 国产成人一区| 中文字幕精品久久| 91制片厂在线| 欧美激情一级片一区二区| 久久这里只有精品99| 欧美爱爱免费视频| 亚洲欧美一区在线| 九色精品美女在线| 日韩av免费网址| 欧美亚洲一级| 国产精品都在这里| 国产精品伊人久久 | 国产免费亚洲高清| 91精品视频免费在线观看| 久久91精品国产91久久小草| 92看片淫黄大片欧美看国产片| 97人妻精品一区二区三区动漫| 精品在线视频一区| 国产99在线免费| 日韩大片b站免费观看直播| 久久综合色播五月| 亚洲精品高清视频| 午夜伦理在线视频| 日韩欧美亚洲成人| 国内自拍第二页| 国产成人澳门| 在线观看免费高清视频97| 亚洲天堂黄色片| 99精品国产99久久久久久福利| 国产精品96久久久久久| 国产欧美日韩综合精品一区二区三区| 国产高清不卡二三区| 精品国产91亚洲一区二区三区www| 日韩在线免费看| 中文字幕一区二区三区四区不卡| 99久re热视频精品98| 91www在线| 精品视频123区在线观看| 亚洲熟妇一区二区| 国产在线观看91一区二区三区| 久久精品视频99| 日韩久久精品视频| 久久国产尿小便嘘嘘| 国产精品免费观看高清| 国产69精品久久app免费版| 亚洲夂夂婷婷色拍ww47| 一区二区在线播放视频| 超碰成人免费| 久久精品最新地址| 国产精品777777| 国产成人免费xxxxxxxx| 日本一区二区三区四区高清视频| 色噜噜狠狠狠综合欧洲色8| 91极品美女在线| 亚洲色图欧美另类| 成人羞羞视频在线看网址| 欧美激情综合色综合啪啪五月| 亚洲成人av网址| av在线这里只有精品| 最新视频 - x88av| 姬川优奈av一区二区在线电影| 精品国产区一区| 波多野结衣久久久久| 免费亚洲一区| 国内不卡一区二区三区| 中文在线观看免费| 欧美久久一二区| 免费看黄色三级| 国产精品主播| 韩国成人一区| 国产在线xxx| 日韩欧美亚洲国产另类| 女同久久另类69精品国产| 久久精品91| 蜜桃麻豆91| 久草免费在线视频| 亚洲国内高清视频| 精品亚洲永久免费| 粉嫩aⅴ一区二区三区四区| 国产高清精品软男同| 播放一区二区| 一区二区三区四区精品| 国产午夜无码视频在线观看| 91麻豆国产福利在线观看| 亚洲熟妇无码一区二区三区| 一本色道69色精品综合久久| 美女视频久久黄| a天堂中文在线观看| 国产精品国产成人国产三级| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 成人在线视频网| 亚洲精品承认| 欧美精选午夜久久久乱码6080| 日本伦理一区二区三区| 免费观看日韩av| 中国成人在线视频| 国产精品久久久久久久久久久久久久久 | 精品91久久| 国产亚洲综合久久| 一二三四区在线| 欧美成人精品欧美一级| 欧美亚洲自偷自偷| 欧美极品视频一区二区三区| 成人影院网站| 伊人久久综合97精品| 在线观看国产一区二区三区| 国产精品美女一区二区在线观看| 亚洲免费999| 亚洲乱码在线| 国产91aaa| 午夜欧美激情| 亚洲一区二区精品| 一级α片免费看刺激高潮视频| 中文字幕一区二区视频| 国产高清av片| 亚洲毛片一区| 日本一区视频在线| 日日夜夜亚洲精品| 欧美激情网友自拍| 亚洲欧洲国产综合| 欧美在线视频日韩| 26uuu成人网| 99这里只有久久精品视频| 日韩欧美在线播放视频| 成人午夜av| 风间由美一区二区三区| 性xxxxfreexxxxx欧美丶| 一区二区三区无码高清视频| jlzzjlzz亚洲女人18| 午夜激情综合网| 国产精品视频在| 国产91精品一区二区麻豆亚洲| 两根大肉大捧一进一出好爽视频| 俺要去色综合狠狠| 成人在线视频电影| 色老太综合网| 欧美成人精品在线视频| 午夜一区在线观看| 欧美精品一二三四| 国产黄色片免费看| 亚洲人成网站影音先锋播放| 久久久久久久无码| 久久99精品久久久久久久久久久久| 日本阿v视频在线观看| 欧美一二区在线观看| 成人看片视频| 欧美成人aaa| 欧美一级片免费在线| 国产丝袜在线| 有码中文亚洲精品| 亚洲av成人精品毛片| 日韩视频在线一区二区| 国产精品尤物视频| 天天综合网天天综合色| 欧美日韩色视频| 国产午夜精品一区二区三区四区| 超碰人人cao| 久久成人羞羞网站| 国产福利一区视频| a91a精品视频在线观看| 99精品一区二区三区的区别| 精品视频国产| 久久亚洲免费| 久久免费视频66| 亚洲aⅴ日韩av电影在线观看 | 午夜不卡久久精品无码免费| 另类小说视频一区二区| 欧美日韩在线视频一区二区三区| 国产精品v亚洲精品v日韩精品| 亚洲毛片aa| 国产探花一区二区| 黑人中文字幕一区二区三区| 奇米一区二区| 5566av亚洲| 97精品资源在线观看| 国产成人精品在线观看| 性爽视频在线| 97超碰蝌蚪网人人做人人爽| 97超碰资源站在线观看| yellow中文字幕久久| 国产福利电影在线| 亚洲欧美在线看| 神马亚洲视频| 亚洲欧美精品在线| 日韩电影网址| 国产丝袜精品第一页| 日本啊v在线| 日韩精品在线观看视频| 五月婷婷六月丁香综合| 亚洲国产天堂网精品网站| 五月婷婷在线观看视频| 日韩av在线电影网| 亚洲色偷精品一区二区三区| 日韩av在线免费观看| 深夜福利视频网站| 精品视频在线播放色网色视频| 五月天久久久久久| 亚洲人成在线观看| av在线资源网| 日韩性xxxx爱| 综合图区亚洲| 国内伊人久久久久久网站视频 | 欧美激情1区2区3区| 日本a级片在线观看| 国产精品第十页| 日韩免费在线观看av| 亚洲精品乱码| 国产精品天天av精麻传媒| 日韩国产成人精品| 浓精h攵女乱爱av| 精品一区二区三区视频在线观看 | 亚洲中文无码av在线| 欧美群妇大交群中文字幕| 国产精品久久久久久在线| 制服丝袜亚洲网站| 亚洲欧美激情国产综合久久久| 亚洲国产精品va在线看黑人| 久草福利在线视频| 久久精品99久久久香蕉| 欧美xxxx少妇| 青青在线视频一区二区三区| 成人性片免费| 99久re热视频这里只有精品6| 国产精品白浆| 亚洲国产精品视频一区| 综合一区av| 好吊妞无缓冲视频观看| 蜜臀av亚洲一区中文字幕| 国模大尺度视频| 久久日韩精品一区二区五区| 久草福利资源在线| 午夜久久久久久久久| 中文字幕永久在线| 亚洲成人xxx| 毛片在线看片| 青青草成人在线| 天堂av一区| 香蕉久久夜色| 国产日韩一区二区三区在线| 天堂在线中文在线| 久久综合国产精品| 欧美激情精品久久| 在线精品观看国产| 黑人精品一区二区三区| 在线观看亚洲区| 在线视频cao| 97碰碰视频| 久久亚洲国产| 成人精品视频一区二区| 国产91在线观看| 欧美巨胸大乳hitomi| 亚洲国产精品久久艾草纯爱 | 亚洲福利影片在线| 日韩免费网站| 青青精品视频播放| 91精品啪在线观看国产爱臀| 亚洲精品中字| 久久久水蜜桃av免费网站| www.偷拍.com| 国产精品久久久久久久裸模| 四虎成人永久免费视频| 欧美成人一级视频| 国产在线观看91| 国产精品普通话| 蜜乳av综合| 欧美黄色免费影院| 不卡一区二区三区四区| 欧美精品一区二区成人| 欧美精品免费视频| 3p视频在线观看| 国产精品video| 综合色就爱涩涩涩综合婷婷| 国产妇女馒头高清泬20p多| 国产精品一品视频| 中文字幕电影av| 91精品国产日韩91久久久久久| melody高清在线观看| 国产成人亚洲综合| 欧洲专线二区三区| 国产成人久久婷婷精品流白浆| 成人av网址在线| 国产在线视频99| 亚洲第一综合天堂另类专| 美女网站视频在线| 成人毛片网站| 亚洲大胆在线| 大尺度做爰床戏呻吟舒畅| 亚洲综合激情小说| 亚洲精品字幕在线| 久久久久久香蕉网| 超碰精品在线观看| 欧美精品久久久久久久自慰| www.日韩精品| 青青草av在线播放| 日韩国产高清视频在线| 一个人www视频在线免费观看| 久中文字幕一区| 日日骚欧美日韩| 奇米网一区二区| 91精品国产综合久久香蕉麻豆| 国产福利在线播放麻豆| 91嫩草国产在线观看| 欧美日韩午夜| 亚洲少妇18p| 一本色道**综合亚洲精品蜜桃冫| 日韩二区三区| 国产精品天天狠天天看| 国产精品7m凸凹视频分类| 亚洲色图欧美自拍| 午夜一区二区三区视频| 色在线免费视频| 国产欧美韩国高清| 欧美片第1页综合| 国产麻豆天美果冻无码视频 | 97精品国产福利一区二区三区| 嫩草视频免费在线观看| 夜夜精品视频一区二区| 五月激情婷婷综合| 国产精品一区二区三区毛片淫片| 希岛爱理av一区二区三区| 美女又黄又免费的视频| 午夜精品在线视频一区| 国产系列电影在线播放网址| 国产日韩精品综合网站| 欧美午夜一区| 国产免费看av| 91精品免费在线| 麻豆免费在线| 伊人久久大香线蕉精品| 成人国产视频在线观看| 国产99久久久久久免费看| 久久久精品网站| 亚洲+变态+欧美+另类+精品| 狠狠干狠狠操视频| 午夜欧美在线一二页| 尤物视频在线免费观看| 国产一区免费观看| 麻豆精品蜜桃视频网站| 69精品久久久| 最新中文字幕亚洲| 久久夜色电影| 黄色一级片免费播放| 在线观看亚洲一区| 精灵使的剑舞无删减版在线观看| 色女人综合av|