通過讀寫分離提升性能
更新時間 2024-04-23 09:30:09
最近更新時間: 2024-04-23 09:30:09
分享文章
本頁介紹了如何設置讀寫分離來提升性能。
節點角色說明
不論是副本集實例還是集群版實例,底層都是使用多副本的方式存儲數據。多個副本組成一個副本集,正常來說包含 1 個 primary 節點,1 個 hidden 節點,1個或者多個 secondary 節點。
Primary 節點承擔數據寫入請求,secondary 和 hidden 節點通過 oplog 日志更新數據。
默認情況下,用戶的讀寫請求都會發送到 primary 節點處理,此時整體性能受限于 primary 節點的資源。
用戶可以通過下面的方法調整配置參數,將讀請求發送給 secondary 節點。通過讀寫分離,可以很大程度上提升系統的性能。
使用只讀節點提升讀性能
文檔數據庫服務支持用戶添加只讀節點來提升讀能力。只讀節點實時同步最新數據并提供讀訪問,另外由于只讀節點不會被選舉,因此及時發生主從切換,只讀節點也不會成為 primary 節點。
用戶可以在控制臺上添加只讀節點,添加成功后,按照控制臺給出的 URL 連接進行訪問。
通過設置 readPreference 去讀指定節點
文檔數據庫服務在開通時,默認就是 1 個primary,1 個 secondary 和 1 個 hidden 節點的架構。用戶可以在連接上文檔數據庫服務實例之后,通過指定 readPreference 來配置讀策略。目前 readPreference 支持的策略有:
- primary:默認規則,所有讀請求發到primary 節點。
- primaryPreferred:優先讀 primary 節點,如果 primary 節點不可達,則請求 secondary 節點。
- secondary:所有讀請求發送到 secondary 節點。
- secondaryPreferred:優先讀 secondary 節點,如果 secondary 不可達,則請求 primary 節點。
- nearest:客戶端探測每個節點的網絡記錄,并將讀請求均勻發送到最近的可達節點上。默認情況下,如果 2 個節點于客戶端的網絡距離差距不超過 15ms, 則認為是“一樣近”。