日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

微服务的好处与弊端_《微服务架构设计模式》-学习总结07

發(fā)布時(shí)間:2024/9/27 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微服务的好处与弊端_《微服务架构设计模式》-学习总结07 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本篇主要總結(jié)第七章:在微服務(wù)架構(gòu)中實(shí)現(xiàn)查詢

  • 在微服務(wù)架構(gòu)中查詢數(shù)據(jù)的挑戰(zhàn)
  • 何時(shí)以及如何使用API組合模式實(shí)現(xiàn)查詢
  • 何時(shí)以及如何使用CQRS模式實(shí)現(xiàn)查詢

微服務(wù)架構(gòu)中,查詢通常需要檢索分散在多個(gè)服務(wù)所擁有的數(shù)據(jù)庫(kù)中的數(shù)據(jù),跨服務(wù)數(shù)據(jù)查詢的兩種模式:

  • API組合模式
    • 簡(jiǎn)單,應(yīng)盡可能使用
  • CQRS:命令查詢職責(zé)隔離模式
    • 強(qiáng)大但復(fù)雜
    • 維護(hù)一個(gè)或多個(gè)視圖數(shù)據(jù)庫(kù)

API組合模式

API組合模式:由API組合器和兩個(gè)或多個(gè)服務(wù)提供方組成,API組合器通過(guò)查詢每個(gè)服務(wù)的API并組合結(jié)果,實(shí)現(xiàn)從多個(gè)服務(wù)檢索數(shù)據(jù)的查詢。

  • API組合器:調(diào)用數(shù)據(jù)提供方API并組合查詢結(jié)果
  • 數(shù)據(jù)提供方服務(wù)

API組合模式需要解決的兩個(gè)設(shè)計(jì)問(wèn)題:

  • 由誰(shuí)來(lái)?yè)?dān)任API組合器的角色
    • 客戶端
    • API Gateway
    • API組合器獨(dú)立為服務(wù)
  • 如何編寫有效的聚合邏輯
    • 盡可能并行查詢,使用響應(yīng)式編程模型

API組合模式的好處和弊端

  • 好處
    • 簡(jiǎn)單
  • 弊端
    • 增加了額外的開(kāi)銷
      • 將一個(gè)查詢變成了N個(gè)查詢
    • 帶來(lái)可用性降低的風(fēng)險(xiǎn)
      • 依賴于每個(gè)服務(wù)提供方都可用,總體可用性是各服務(wù)提供方可用性的乘積。
      • 需要專門的策略來(lái)提高可用性
        • 緩存數(shù)據(jù)
        • 返回不完整數(shù)據(jù)
    • 缺乏事務(wù)數(shù)據(jù)一致性
      • 查詢操作可能返回不一致的數(shù)據(jù)

CQRS模式(命令查詢職責(zé)隔離)

CQRS模式:使用事件來(lái)維護(hù)從多個(gè)服務(wù)復(fù)制數(shù)據(jù)的只讀視圖,借此實(shí)現(xiàn)對(duì)來(lái)自多個(gè)服務(wù)的數(shù)據(jù)的查詢。它將持久化數(shù)據(jù)模型和使用數(shù)據(jù)的模塊分為命令端和查詢端,他們擁有各自的獨(dú)立數(shù)據(jù)庫(kù)。

  • 命令端
    • 增、刪和改操作CUD
    • 不需要join,僅基于主鍵的查詢操作
    • 發(fā)布領(lǐng)域事件
  • 查詢端
    • 查詢操作R
    • 數(shù)據(jù)庫(kù)視圖
    • 訂閱并處理領(lǐng)域事件并更新數(shù)據(jù)庫(kù)

CQRS模式的好處和弊端

  • 好處
    • 在微服務(wù)架構(gòu)中高效地實(shí)現(xiàn)查詢
    • 高效地實(shí)現(xiàn)多種不同的查詢類型
    • 在基于事件溯源技術(shù)的應(yīng)用程序中實(shí)現(xiàn)查詢
    • 更進(jìn)一步地實(shí)現(xiàn)問(wèn)題隔離
  • 弊端
    • 更加復(fù)雜的架構(gòu)
    • 處理數(shù)據(jù)復(fù)制導(dǎo)致的延遲
      • 在命令端發(fā)布事件和在查詢端處理事件并更新視圖之間存在延遲。
        • 命令端和查詢端API提供數(shù)據(jù)的版本信息,使其能夠判斷查詢端是否過(guò)時(shí),查詢API調(diào)用端可以輪詢查詢直到獲得最新版本的數(shù)據(jù)。

設(shè)計(jì)CQRS視圖

CQRS視圖模型包括視圖數(shù)據(jù)庫(kù)和三個(gè)子模塊:

  • 查詢API
  • 事件處理程序
  • 數(shù)據(jù)訪問(wèn)模塊
  • 視圖數(shù)據(jù)庫(kù)

設(shè)計(jì)CQRS視圖需要考慮:

  • 選擇視圖數(shù)據(jù)庫(kù)
  • 設(shè)計(jì)數(shù)據(jù)庫(kù)訪問(wèn)模塊
    • 并發(fā)處理:樂(lè)觀鎖
    • 冪等事件處理程序
  • 添加和更新CQRS視圖
  • 使用歸檔事件構(gòu)建CQRS視圖
    • 增量式構(gòu)建CQRS視圖
      • 快照+后續(xù)事件

學(xué)習(xí)總結(jié)

本章主要講跨服務(wù)查詢的問(wèn)題。主要是兩個(gè)解決方案:

第一,使用一個(gè)API查詢組合器,分別調(diào)用各個(gè)服務(wù)提供的API查詢數(shù)據(jù),再將結(jié)果組合起來(lái)。第二,使用CQRS,設(shè)計(jì)單獨(dú)的命令端和查詢端,命令端通過(guò)事件通知查詢端更新數(shù)據(jù)視圖,需要跨服查詢時(shí)直接查數(shù)據(jù)視圖。

在項(xiàng)目的初期或者在比較簡(jiǎn)單查詢的情況下,可以多使用API查詢組合器。在項(xiàng)目后期或者對(duì)于一些較復(fù)雜的查詢,需要使用CQRS。

總結(jié)

以上是生活随笔為你收集整理的微服务的好处与弊端_《微服务架构设计模式》-学习总结07的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。