0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探討篇(四):分布式數(shù)據(jù)訪問解決方案

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-07-12 15:19 ? 次閱讀

背景

如果數(shù)據(jù)在同一個服務(wù)的同一個數(shù)據(jù)庫,通過SQL即可查詢相對比較簡單,但當數(shù)據(jù)被分布到不同服務(wù)不同的數(shù)據(jù)庫中時,訪問組合數(shù)據(jù)的操作就變的比較困難。針對這個問題,本文描述了服務(wù)讀取不同服務(wù)的數(shù)據(jù)庫的幾種方法:服務(wù)間通信模式、數(shù)據(jù)緩存模式、數(shù)據(jù)復(fù)制模式、數(shù)據(jù)共享模式

本文的觀點源自我在日常學(xué)習(xí)與實踐過程中的思考,尚處于不斷探索和驗證的階段。希望能“拋磚引玉”,激發(fā)更多的討論與交流。讓我們共同進步,在探討與實證中尋求真知。

一、服務(wù)通信模式

如果一個服務(wù)需要讀取它無法直接訪問的數(shù)據(jù)庫,只需要使用遠程調(diào)用比如RPC協(xié)議訪問另外一個服務(wù)即可,這也是很多團隊采用的一種方式,如下圖:

wKgaomaQ2ReAItREAAG9hVSUrGw504.png

這看起來很簡單,但技術(shù)充滿挑戰(zhàn)問題

?首先是數(shù)據(jù)網(wǎng)絡(luò)延遲導(dǎo)致服務(wù)A性能下降。

?服務(wù)之間的耦合,為了滿足服務(wù)A的訪問量,B服務(wù)必須隨著A服務(wù)的流量規(guī)模變化而變化。

服務(wù)通信模式優(yōu)缺點
優(yōu)點 1、沒有數(shù)據(jù)量問題
缺點 1、網(wǎng)絡(luò)延遲導(dǎo)致性能問題,很常見的TP99跳點,抖動現(xiàn)象 2、可伸縮性和吞吐量問題 3、可用性問題


二、數(shù)據(jù)緩存模式

在上面服務(wù)通信的基礎(chǔ)上加上緩存,這是很多團隊使用的第二種方式。數(shù)據(jù)保存在每個服務(wù)的內(nèi)存中并持續(xù)同步,因此服務(wù)擁有完全相同的數(shù)據(jù)。緩存又分為本地緩存+分布式緩存的組合關(guān)系。

1.單機本地緩存,每個服務(wù)都包含自己的數(shù)據(jù)。這種模式對應(yīng)服務(wù)之間無法共享,比如服務(wù)啟動加載數(shù)據(jù)到本地緩存。

2.分布式緩存:數(shù)據(jù)服務(wù)之間共享。但這種模式不是有效的復(fù)制緩存模式,因為它不能解決服務(wù)間通信模式下存在的容錯性問題,獲取數(shù)據(jù)從服務(wù)調(diào)用變成了緩存服務(wù)。其次由于緩存數(shù)據(jù)是中心化及共享的,打破數(shù)據(jù)所有權(quán),并且可能導(dǎo)致緩存和數(shù)據(jù)庫數(shù)據(jù)不一致。

wKgZomaQ2RiAPDpKAAHZNG-HlPE470.png

以下是每種實現(xiàn)方式優(yōu)缺點如下:

實現(xiàn)方式一:本地緩存/分布式緩存+RPC遠程調(diào)用

實現(xiàn)方式一:緩存前置(本地緩存/分布式緩存+RPC遠程調(diào)用),它的核心思想是利用緩存來減少對遠程服務(wù)的調(diào)用次數(shù),從而提高系統(tǒng)的性能和響應(yīng)速度
優(yōu)點 1、減少延遲:通過從本地或分布式緩存中讀取數(shù)據(jù),可以顯著減少對遠程服務(wù)的調(diào)用次數(shù),從而降低響應(yīng)時間和提高用戶體驗 2、減輕遠程服務(wù)壓力:緩存可以吸收大量讀請求,減少遠程服務(wù)的負載,特別是在高流量場景下。
缺點 1、數(shù)據(jù)一致性問題:緩存中的數(shù)據(jù)可能會過時,如果遠程服務(wù)的數(shù)據(jù)發(fā)生變化,緩存中的數(shù)據(jù)需要及時更新,否則可能會導(dǎo)致數(shù)據(jù)不一致。 2、復(fù)雜性增加:緩存策略的引入增加了系統(tǒng)的復(fù)雜性,需要考慮緩存更新、失效策略、數(shù)據(jù)一致性保證等問題。 3、資源消耗:緩存需要占用額外的存儲空間,如果數(shù)據(jù)量很大,緩存可能會消耗大量內(nèi)存或磁盤空間。

實現(xiàn)方式二:通過RPC服務(wù)通訊同步推送數(shù)據(jù)+本地緩存

實現(xiàn)方式二:通過RPC服務(wù)通訊同步推送數(shù)據(jù)+本地緩存
優(yōu)點 1)實時性:服務(wù)B在數(shù)據(jù)發(fā)生變化時立即推送,服務(wù)A可以實時獲取最新數(shù)據(jù)。 2)資源利用率高:只有在數(shù)據(jù)發(fā)生變化時才會進行通信,減少了無謂的資源消耗。 3)減少輪詢壓力:避免了定時任務(wù)輪詢對服務(wù)器的壓力。
缺點 1)復(fù)雜性:需要在服務(wù)B中實現(xiàn)推送邏輯,增加了系統(tǒng)的復(fù)雜性。 2)維護成本:推送機制需要額外的維護,包括失敗重試、消息順序保證等

實現(xiàn)方式三:通過定時任務(wù)worker,服務(wù)A通過RPC調(diào)用服務(wù)B拉數(shù)據(jù)

實現(xiàn)方式三:通過定時任務(wù)worker,服務(wù)A通過RPC調(diào)用服務(wù)B拉數(shù)據(jù)
優(yōu)點 1)無需變更現(xiàn)有服務(wù):不需要修改服務(wù)B的代碼,只需在服務(wù)A中添加定時任務(wù)。
缺點 1)性能開銷:頻繁的定時任務(wù)可能會對服務(wù)A和服務(wù)B的性能產(chǎn)生一定影響。 2)延遲性:數(shù)據(jù)更新可能存在延遲,特別是如果定時任務(wù)的頻率不高。 3)資源占用:即使沒有數(shù)據(jù)更新,定時任務(wù)也會占用系統(tǒng)資源。 4)靈活性差:如果數(shù)據(jù)更新頻率變化較大,固定周期的定時任務(wù)可能不夠靈活

實現(xiàn)方式四:通過異步MQ獲取數(shù)據(jù)

實現(xiàn)方式四:通過異步MQ獲取數(shù)據(jù)
優(yōu)點 1)異步、削峰、解耦:服務(wù)B在數(shù)據(jù)發(fā)生變化時只需發(fā)送消息,不需要等待服務(wù)A的處理結(jié)果。 2)容錯性:MQ通常提供消息持久化機制,即使服務(wù)A暫時不可用,消息也不會丟失。
缺點 1)復(fù)雜性:引入MQ增加了系統(tǒng)的復(fù)雜性,需要考慮消息的順序性、消息丟失、重復(fù)消費等問題。 2)延遲:雖然MQ可以提供實時消息傳遞,但在高并發(fā)或者網(wǎng)絡(luò)問題的情況下,仍然可能存在延遲。

緩存模式優(yōu)缺點:

緩存模式優(yōu)缺點
優(yōu)點 1、提高了數(shù)據(jù)訪問性能 2、沒有可伸縮性和吞吐量問題 3、良好容錯性
缺點 1、大數(shù)據(jù)量不友好(比如200M),可行性降低 2、高頻更新不友好,無法保持完全同步,對于相對靜態(tài)數(shù)據(jù),比較合適 3、緩存數(shù)據(jù)和服務(wù)啟動的服務(wù)依賴關(guān)系。常見機器擴容N臺機器,N臺同時通過RPC訪問服務(wù)B,導(dǎo)致服務(wù)B流量暴漲,并且寫分布式緩存流量暴漲(N臺*每臺緩存大?。?4、適合一致性較弱的場景,緩存一致性問題,可能導(dǎo)致數(shù)據(jù)陳舊

三、數(shù)據(jù)復(fù)制模式

在數(shù)據(jù)復(fù)制模式中,表之間會進行數(shù)據(jù)復(fù)制,也就是在數(shù)據(jù)庫A冗余數(shù)據(jù)庫B數(shù)據(jù)。這樣可以確保服務(wù)A直接訪問數(shù)據(jù)庫A獲取到數(shù)據(jù)庫B的數(shù)據(jù)??梢酝ㄟ^很多種實現(xiàn)方式:

wKgaomaQ2RmAeyD2AAG668ZontM837.png

但這同樣存在如下問題:如何管理數(shù)據(jù)所有權(quán)?到處都有這種數(shù)據(jù),數(shù)據(jù)一致性問題

實現(xiàn)方式四:binlog同步,需要注意binlog數(shù)據(jù)量
優(yōu)點 1)實時性:Binlog可以捕獲數(shù)據(jù)庫的實時變化,使得數(shù)據(jù)同步具有較低的延遲。
缺點 1)性能影響:雖然Binlog的開銷相對較小,但在高并發(fā)寫入的場景下,Binlog的生成和處理仍然會對數(shù)據(jù)庫性能產(chǎn)生一定影響。 2)依賴數(shù)據(jù)庫:這種同步方式依賴于MySQL的Binlog功能

這種方案改善了上面服務(wù)通信的性能,容錯性,可伸縮性問題。某些場景可用,比如聚合,報表或者其他不適合高性能需求,高容錯性的時候

數(shù)據(jù)復(fù)制模式優(yōu)缺點
優(yōu)點 1、良好的數(shù)據(jù)訪問性能 2、沒有可伸縮性和吞吐量問題 3、沒有容錯性問題 4、沒有服務(wù)直接依賴
缺點 1、數(shù)據(jù)一致性問題 2、數(shù)據(jù)歸屬權(quán)問題 3、需要數(shù)據(jù)同步

四、數(shù)據(jù)共享模式

如果上面的3種方式都不行,那可以用兜底方式,用創(chuàng)建數(shù)據(jù)領(lǐng)域,把數(shù)據(jù)組合到共享的數(shù)據(jù)庫,讓服務(wù)A和服務(wù)B都能訪問。

wKgZomaQ2RqANnYWAADaFU5fLZ4143.png

服務(wù)之間完全解耦,解決了可用性依賴,響應(yīng)性,吞吐量和可伸縮性問題

數(shù)據(jù)庫共享模式優(yōu)缺點
優(yōu)點 1、良好的數(shù)據(jù)訪問性能 2、沒有可伸縮性和吞吐量問題 3、良好容錯性 4、無服務(wù)依賴 5、數(shù)據(jù)保持一致
缺點 1、數(shù)據(jù)所有權(quán)治理 2、數(shù)據(jù)訪問安全

總結(jié)

1.通過本文的探討,大家可以更全面地了解分布式數(shù)據(jù)訪問的挑戰(zhàn)和可能的解決方案

2.每種模式都有其優(yōu)勢和不足以及應(yīng)用場景,本文旨在通過對比分析,為實際應(yīng)用中的選擇提供指導(dǎo)。

3.如果以上文案有問題或者還有更好的方案,歡迎評論區(qū)留言補充完善,謝謝

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    764

    瀏覽量

    44128
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3799

    瀏覽量

    64388
  • RPC
    RPC
    +關(guān)注

    關(guān)注

    0

    文章

    111

    瀏覽量

    11534
  • 分布式
    +關(guān)注

    關(guān)注

    1

    文章

    899

    瀏覽量

    74502
  • 數(shù)據(jù)訪問
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    6544
收藏 人收藏

    評論

    相關(guān)推薦

    分布式軟件系統(tǒng)

    。更重要的是,NI LabVIEW 8的分布式智能提供的解決方案不僅令這些挑戰(zhàn)迎刃而解,且易于實施。LabVIEW 8的分布式智能具體包括: 可對分布式系統(tǒng)中的所有結(jié)點編程——包括主機
    發(fā)表于 07-22 14:53

    微服務(wù)架構(gòu)下分布式事務(wù)解決方案 —— 阿里GTS

    摘要: 本文將深入和大家探討微服務(wù)架構(gòu)下,分布式事務(wù)的各種解決方案,并重點為大家解讀阿里巴巴提出的分布式事務(wù)解決方案----GTS。該
    發(fā)表于 03-16 11:14

    一行代碼,保障分布式事務(wù)一致性—GTS:微服務(wù)架構(gòu)下分布式事務(wù)解決方案

    務(wù)產(chǎn)生的事務(wù)問題。分布式事務(wù)已經(jīng)成為微服務(wù)落地最大的阻礙,也是最具挑戰(zhàn)性的一個技術(shù)難題。 為此,本文將深入和大家探討微服務(wù)架構(gòu)下,分布式事務(wù)的各種解決方案,并重點為大家解讀阿里巴巴提出
    發(fā)表于 06-05 19:14

    淺談分布式緩存技術(shù)

    存儲成本分布式緩存應(yīng)用場景1,用于緩存網(wǎng)頁的內(nèi)容片段,包括HTML,CSS和圖像等,主要用于社交網(wǎng)站;2,緩存系統(tǒng)作為ORM框架的二級緩存提供外部服務(wù),減輕了數(shù)據(jù)庫的負載壓力,加快了應(yīng)用訪問;3.緩存
    發(fā)表于 11-16 15:45

    Qorvo分布式Wi-Fi網(wǎng)格解決方案

    實現(xiàn)互聯(lián)世界的創(chuàng)新RF解決方案提供商Qorvo宣布,正使用 802.11ax 產(chǎn)品組合擴大分布式 Wi-Fi 解決方案在住宅中的適用范圍。該產(chǎn)品組合可改善 Wi-Fi 覆蓋范圍,幫助實現(xiàn)更小的器件
    發(fā)表于 11-02 07:01

    HarmonyOS教程—基于分布式數(shù)據(jù)接口,實現(xiàn)多種設(shè)備上一致的數(shù)據(jù)訪問體驗

    分布式數(shù)據(jù)庫中。通過結(jié)合帳號、應(yīng)用和數(shù)據(jù)庫三元組,分布式數(shù)據(jù)服務(wù)對屬于不同的應(yīng)用的數(shù)據(jù)進行隔離,保證不同應(yīng)用之間的
    發(fā)表于 09-26 11:40

    如何高效完成HarmonyOS分布式應(yīng)用測試?

    對HarmonyOS分布式應(yīng)用測試解決方案,具體方案介紹如下。二、分布式應(yīng)用測試解決方案DevEco Testing是一款全新的Harmon
    發(fā)表于 12-13 18:07

    HarmonyOS應(yīng)用開發(fā)-DistributedDateDome分布式數(shù)據(jù)訪問體驗

    說明:基于分布式數(shù)據(jù)接口,實現(xiàn)多種設(shè)備上一致的數(shù)據(jù)訪問體驗。效果圖:完整代碼地址:https://gitee.com/jltfcloudcn/jump_to/tree/feature/
    發(fā)表于 07-01 09:58

    結(jié)合PKI與Kerberos的分布式認證與訪問控制

    本文首先闡述了分布式系統(tǒng)存在的重復(fù)認證和信息流動導(dǎo)致的權(quán)限擴散的問題,討論了各自的解決方案。最后提出了分布式系統(tǒng)認證的總體架構(gòu),分析了解決方案的優(yōu)點以及缺點
    發(fā)表于 08-28 08:54 ?4次下載

    淺析Redis 分布式解決方案

    Redis 分布式解決方案是一種基于Redis實現(xiàn)的分布式鎖機制,可以確保在分布式環(huán)境中對共享資源的訪問進行同步控制,避免出現(xiàn)競態(tài)條件和
    的頭像 發(fā)表于 12-04 14:00 ?499次閱讀

    分布式光伏電力監(jiān)控解決方案

    分布式光伏電力監(jiān)控解決方案
    的頭像 發(fā)表于 01-14 08:07 ?587次閱讀
    <b class='flag-5'>分布式</b>光伏電力監(jiān)控<b class='flag-5'>解決方案</b>

    分布式存儲與計算:大數(shù)據(jù)時代的解決方案

    分布式存儲和計算技術(shù)應(yīng)運而生,并迅速成為處理大數(shù)據(jù)的首選方案。本文將深入探討分布式存儲和計算的概念、優(yōu)勢及其在各個領(lǐng)域的應(yīng)用情況。 1.
    的頭像 發(fā)表于 03-07 14:42 ?772次閱讀

    醫(yī)療PACS影像數(shù)據(jù)的極速分布式塊存儲解決方案

    醫(yī)療PACS影像數(shù)據(jù)的極速分布式塊存儲解決方案
    的頭像 發(fā)表于 08-23 10:13 ?327次閱讀
    醫(yī)療PACS影像<b class='flag-5'>數(shù)據(jù)</b>的極速<b class='flag-5'>分布式</b>塊存儲<b class='flag-5'>解決方案</b>

    基于分布式存儲系統(tǒng)醫(yī)療影像數(shù)據(jù)存儲解決方案

    基于分布式存儲系統(tǒng)醫(yī)療影像數(shù)據(jù)存儲解決方案
    的頭像 發(fā)表于 09-14 09:53 ?311次閱讀
    基于<b class='flag-5'>分布式</b>存儲系統(tǒng)醫(yī)療影像<b class='flag-5'>數(shù)據(jù)</b>存儲<b class='flag-5'>解決方案</b>

    分布式光纖測溫解決方案

    分布式光纖測溫解決方案
    的頭像 發(fā)表于 11-12 01:02 ?148次閱讀
    <b class='flag-5'>分布式</b>光纖測溫<b class='flag-5'>解決方案</b>