日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
數(shù)據(jù)庫讀寫分離的通信方式簡介 (數(shù)據(jù)庫讀寫分離怎么通信)

數(shù)據(jù)庫讀寫分離是為了提高數(shù)據(jù)庫服務器的處理能力和穩(wěn)定性而做的一種優(yōu)化方案。按照讀寫負載不同,將數(shù)據(jù)庫分割成讀庫和寫庫,實現(xiàn)讀寫分離,減輕單一數(shù)據(jù)庫服務器的負荷,提升數(shù)據(jù)庫系統(tǒng)的整體性能和穩(wěn)定性。本文將介紹數(shù)據(jù)庫讀寫分離的通信方式。

1. 主從復制方式

主從復制是數(shù)據(jù)庫讀寫分離的一種常見實現(xiàn)方式。它通過一個主數(shù)據(jù)庫將訪問前來的寫請求轉發(fā)到一個或多個從副本,之后再進行讀操作。寫請求僅在主數(shù)據(jù)庫上執(zhí)行,而讀請求則在從副本上執(zhí)行。主從復制方式的特點如下:

優(yōu)點:

1. 通過主從復制,從服務被允許快速的復制主服務上的數(shù)據(jù),獲得部分信息的讀服務,數(shù)據(jù)時間的延遲較低,常??梢赃_到毫秒級別。

2. 寫入操作在主服務上進行,主服務負責保證數(shù)據(jù)的一致性,以及一定的寫入性能。

缺點:

1. 主從復制依賴于主從之間的數(shù)據(jù)同步,因此寫入在主切換時可能會出現(xiàn)數(shù)據(jù)丟失或不一致的情況。

2. 從數(shù)據(jù)庫只能用于讀操作,不能進行寫操作,因此需要在主副本之間進行一些數(shù)據(jù)同步措施。

2. 分區(qū)方式

分區(qū)方式是另一種數(shù)據(jù)庫讀寫分離的實現(xiàn)方式,它將數(shù)據(jù)按照某種規(guī)則分成多個分區(qū),寫操作只在一個分區(qū)中進行,讀操作可以在所有分區(qū)中執(zhí)行。每個分區(qū)擁有一個主節(jié)點,該主節(jié)點負責接收寫操作并將寫操作應用到存儲區(qū)域。每個分區(qū)還擁有多個從節(jié)點,它們負責處理讀請求。分區(qū)方式的特點如下:

優(yōu)點:

1. 分區(qū)方式能夠支持多個有獨立識別性的節(jié)點,使得整個數(shù)據(jù)庫系統(tǒng)能夠在水平方向上擴容。

2. 下游應用自行根據(jù)需求選擇讀取哪個分區(qū),可以提高查詢效率。

缺點:

1. 分區(qū)方式的實現(xiàn)較為復雜,需要對數(shù)據(jù)庫進行大規(guī)模的重構和改造。

2. 分區(qū)方式中,每個節(jié)點對性能的影響非常大,對節(jié)點的和數(shù)據(jù)的分配要求非常嚴格。

3. 反向代理方式

反向代理方式是通過在代理層增加一個反向代理服務器,實現(xiàn)數(shù)據(jù)庫讀寫分離。反向代理服務器攔截所有的數(shù)據(jù)庫請求,并根據(jù)負載情況將讀請求轉發(fā)至一個或多個從服務器,寫請求則由反向代理服務器轉發(fā)至主服務器。反向代理方式的特點如下:

優(yōu)點:

1. 反向代理方式的實現(xiàn)相對較簡單,只需要在服務端增加一個反向代理服務器即可。

2. 反向代理服務器能夠根據(jù)負載情況動態(tài)的調整從服務器的數(shù)量,對性能的優(yōu)化更加靈活。

缺點:

1. 反向代理方式依賴于反向代理服務器的正常工作,如果反向代理出現(xiàn)問題,則整個數(shù)據(jù)庫服務都將無法運轉。

2. 反向代理服務器處理請求的開銷非常大,如果請求量過大,則可能影響整體性能。

在實際的數(shù)據(jù)庫系統(tǒng)中,因為應用的業(yè)務邏輯以及讀寫的負載均衡都存在較大的波動,因此需要根據(jù)具體情況選擇最適合的讀寫分離方案。上述幾種方式各有優(yōu)缺點,我們可以根據(jù)具體場景進行選擇和調整。最重要的是要保持數(shù)據(jù)庫的穩(wěn)定性和高效性,以維護應用的正常運行。

相關問題拓展閱讀:

  • 如何在應用層通過spring特性解決數(shù)據(jù)庫讀寫分離

如何在應用層通過spring特性解決數(shù)據(jù)庫讀寫分離

兩種方案

方案1:當只有讀操作的時候,直接操作讀庫(從庫);

當在寫事務(即寫主庫)中讀時,也是讀主庫(即參與到主庫操作),這樣的優(yōu)勢是可以防止寫完后可能讀不到剛才寫的數(shù)據(jù);

此方案其實是使用事務傳播行為為:SUPPORTS解決的。

方案2:當只有讀操作的時候,直接操作讀庫(從庫);

當在寫事務(即寫主庫)中讀時,強制走從庫,即先暫停寫事務,開啟讀(讀從庫),然后恢復寫事務。

此方案其實是使用事務傳播行為為:NOT_SUPPORTS解決的。

核心組件

cn.javass.common.datasource.ReadWriteDataSource:讀寫分離的動態(tài)數(shù)據(jù)源,類似于AbstractRoutingDataSource,具體參考javadoc;

cn.javass.common.datasource.ReadWriteDataSourceDecision:讀寫庫選擇的決策者,具體參考javadoc;

cn.javass.common.datasource.ReadWriteDataSourceProcessor:此類實現(xiàn)了兩個職責(為了減少類的數(shù)量將兩個功能合并到一起了):讀/寫動態(tài)數(shù)據(jù)庫選擇處理器、通過AOP切面實現(xiàn)讀/寫選擇,具體參考javadoc。

具體配置

1、數(shù)據(jù)源配置

1.1、寫庫配置

Java代碼

1.2、讀庫配置

Java代碼

1.3、讀寫動態(tài)庫配置

通過writeDataSource指定寫庫,通過readDataSourceMap指定從庫列表,從庫列表默認通過順序輪詢來使用讀庫,具體參考javadoc;

Java代碼

2、XML事務屬性配置

所以讀方法必須是read-only(必須,以此來判斷是否是讀方法)。

Java代碼

3、事務管理器

事務管理器管理的是readWriteDataSource

Java代碼

4、讀/寫動態(tài)數(shù)據(jù)庫選擇處理器

根據(jù)之前的txAdvice配置的事務屬性決定是讀/寫,具體參考javadoc;

forceChoiceReadWhenWrite:用于確定在如果目前是寫(即開啟了事務),下一步如果是讀,是直接參與到寫庫進行讀,還是強制從讀庫讀,具體參考javadoc;

Java代碼

5、事務切面和讀/寫庫選擇切面

Java代碼

1、事務切面一般橫切業(yè)務邏輯層;

2、此處我們使用readWriteDataSourceTransactionProcessor的通過AOP切面實現(xiàn)讀/寫庫選擇功能,order=Integer.MIN_VALUE(即更高的優(yōu)先級),從而保證在操作事務之前已經(jīng)決定了使用讀/寫庫。

6、測試用例

只要配置好事務屬性(通過read-only=true指定讀方法)即可,其他選擇讀/寫庫的操作都交給readWriteDataSourceTransactionProcessor完成。

可以參考附件的:

cn.javass.readwrite.ReadWriteDestWithForceChoiceReadOnWriteFalse

cn.javass.readwrite.ReadWriteDestWithNoForceChoiceReadOnWriteTrue

可以下載附件的代碼進行測試,具體選擇主/從可以參考日志輸出。

關于數(shù)據(jù)庫讀寫分離怎么通信的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。

成都網(wǎng)站營銷推廣找創(chuàng)新互聯(lián),全國分站站群網(wǎng)站搭建更好做SEO營銷。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎服務商,價格厚道。提供成都服務器托管租用、綿陽服務器租用托管、重慶服務器托管租用、貴陽服務器機房服務器托管租用。


文章名稱:數(shù)據(jù)庫讀寫分離的通信方式簡介 (數(shù)據(jù)庫讀寫分離怎么通信)
當前URL:http://www.5511xx.com/article/dhjihhp.html