在副本集Replica Set中才涉及到ReadPreference的設置,默認情況下,讀寫都是分發都Primary節點執行,但是對于寫少讀多的情況,我們希望進行讀寫分離來分攤壓力,所以希望使用Secondary節點來進行讀取,Primary只承擔寫的責任(實際上寫只能分發到Primary節點,不可修改)。

MongoDB有5種ReadPreference模式:
primary
主節點,默認模式,讀操作只在主節點,如果主節點不可用,報錯或者拋出異常。
primaryPreferred
選主節點,大多情況下讀操作在主節點,如果主節點不可用,如故障轉移,讀操作在從節點。
secondary
從節點,讀操作只在從節點, 如果從節點不可用,報錯或者拋出異常。
secondaryPreferred
選從節點,大多情況下讀操作在從節點,特殊情況(如單主節點架構)讀操作在主節點。
nearest
最鄰近節點,讀操作在最鄰近的成員,可能是主節點或者從節點。
Spring中的設置ReadPreference:
<!-- mongodb配置 --> <mongo:mongo id="mongo" host="${mongo.host}" port="${mongo.port}" write-concern="NORMAL" > <mongo:options connections-per-host="${mongo.connectionsPerHost}" threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}" connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}" auto-connect-retry="${mongo.autoConnectRetry}" socket-keep-alive="${mongo.socketKeepAlive}" socket-timeout="${mongo.socketTimeout}" slave-ok="${mongo.slaveOk}" write-number="1" write-timeout="0" write-fsync="false" /> </mongo:mongo> <!-- mongo的工廠,通過它來取得mongo實例,dbname為mongodb的數據庫名,沒有的話會自動創建 --> <mongo:db-factory id="mongoDbFactory" dbname="uba" mongo-ref="mongo" /> <!-- 讀寫分離級別配置 --> <!-- 選主節點,大多情況下讀操作在主節點,如果主節點不可用,如故障轉移,讀操作在從節點。 --> <bean id="primaryPreferredReadPreference" class="com.mongodb.TaggableReadPreference.PrimaryPreferredReadPreference" /> <!-- 最鄰近節點,讀操作在最鄰近的成員,可能是主節點或者從節點。 --> <bean id="nearestReadPreference" class="com.mongodb.TaggableReadPreference.NearestReadPreference" /> <!-- 從節點,讀操作只在從節點, 如果從節點不可用,報錯或者拋出異常。存在的問題是secondary節點的數據會比primary節點數據舊。 --> <bean id="secondaryReadPreference" class="com.mongodb.TaggableReadPreference.SecondaryReadPreference" /> <!-- 優先從secondary節點進行讀取操作,secondary節點不可用時從主節點讀取數據 --> <bean id="secondaryPreferredReadPreference" class="com.mongodb.TaggableReadPreference.SecondaryPreferredReadPreference" /> <!-- mongodb的主要操作對象,所有對mongodb的增刪改查的操作都是通過它完成 --> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /> <property name="readPreference" ref="primaryPreferredReadPreference" /> </bean>另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享題目:【MongoDB】ReadPreference讀偏好-創新互聯
當前地址:http://www.yijiale78.com/article38/pgcpp.html
成都網站建設公司_創新互聯,為您提供小程序開發、域名注冊、外貿網站建設、微信公眾號、移動網站建設、網站內鏈
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯