spring mongodb 復制集配置(實現讀寫分離)


注:mongodb當前版本是3.4.3
 
spring連接mongodb復制集的字符串格式:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
  • mongodb:// 前綴,代表這是一個Connection String
  • username:password@ 如果啟用了用戶認證,需要指定用戶密碼
  • hostX:portX 復制集成員的ip:port信息,多個成員以逗號分割
  • /database 認證時,用戶帳號所屬的數據庫
  • ?options 指定額外的連接選項
 我們這里暫時沒有啟用用戶認證;在options里添加 readPreference=secondaryPreferred可以實現讀寫分離,讀請求優先到Secondary節點。
 
mongodb數據庫配置:
 
spring配置mongo數據源:
 
 
 實體類,通過注解 @Document(collection = "user")指定collection名稱:
 
 
執行插入數據的測試用例:
 
控制台顯示成功連接復制集,192.168.168.129:27017為Primary,192.168.168.130:27017和192.168.168.131:27017為Secondary:

 
執行insert操作時,連接的是主復制集:
 
從數據庫查看主復制集信息:
 
同時可以看見一下兩個從復制集已自動完成數據備份:
 
 
執行讀數據的測試用例:
 
執行讀操作時,連接的是從復制集:
 
 
模擬主復制集宕機:
 
通過rs.status()可以看到從復制集192.168.168.130:27017變成了主復制集:
 
再次執行插入數據的測試用例,這時候就可以看到執行插入操作時,連接的是新的主復制集192.168.168.130
 
數據庫數據變化:
 
 
讀寫分離詳細說明:
mongodb復制集對讀寫分離的支持是通過Read Preferences特性進行支持的,這個特性非常復雜和靈活。
應用程序驅動通過read reference來設定如何對復制集進行讀寫操作,默認客戶端驅動所有的讀操作都是直接訪問primary節點的,從而保證了數據的嚴格一致性。
支持五種 read preference模式:
1.primary:主節點,默認模式,讀操作只在主節點,如果主節點不可用,報錯或者拋出異常。
2.primaryPreferred:首選主節點,大多情況下讀操作在主節點,如果主節點不可用,如故障轉移,讀操作在從節點。
3.secondary:從節點,讀操作只在從節點,如果從節點不可用,報錯或者拋出異常。
4.secondaryPreferred:首選從節點,大多情況下讀操作在從節點,特殊情況(如單主節點架構)讀操作在主節點。
5.nearest:最鄰近節點,讀操作在最鄰近的成員,可能是主節點或者從節點,關於最鄰近的成員請參考。
注意:2.2版本之前的mongodb對Read Preference支持還不完全。
 
參看地址:http://www.mongoing.com/archives/2642
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM