本文主要介紹python如何連接MongoDB副本集及讀寫分離配置,mongodb副本集數(shù)據(jù)同步延遲測試。
10余年的海寧網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整海寧建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“海寧網(wǎng)站設(shè)計(jì)”,“海寧網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
一、python連接mongodb副本集
1.連接副本集
在新版的驅(qū)動(dòng)中直接使用MongoClient連接
如下:
from pymongo import MongoClient conn = MongoClient(['192.168.3.11:27017', '192.168.3.12:27017', '192.168.3.13:27017'])
2.讀寫分離配置
from pymongo import ReadPreference db = conn.get_database('hnrtest', read_preference=ReadPreference.SECONDARY_PREFERRED)
副本集ReadPreference有5個(gè)選項(xiàng):
PRIMARY:默認(rèn)選項(xiàng),從primary節(jié)點(diǎn)讀取數(shù)據(jù)
PRIMARY_PREFERRED:優(yōu)先從primary節(jié)點(diǎn)讀取,如果沒有primary節(jié)點(diǎn),則從集群中可用的secondary節(jié)點(diǎn)讀取
SECONDARY:從secondary節(jié)點(diǎn)讀取數(shù)據(jù)
SECONDARY_PREFERRED:優(yōu)先從secondary節(jié)點(diǎn)讀取,如果沒有可用的secondary節(jié)點(diǎn),則從primary節(jié)點(diǎn)讀取
NEAREST:從集群中可用的節(jié)點(diǎn)讀取數(shù)據(jù)
二、測試mongodb延遲腳本
1.原理
往集群中插入一批數(shù)據(jù),然后從secondary節(jié)點(diǎn)讀取,直到讀到數(shù)據(jù)總數(shù)與插入的總數(shù)相等。
2.腳本內(nèi)容
#!/usr/bin/python # -*- coding: utf-8 -*- import pymongo from pymongo import MongoClient from pymongo import ReadPreference import time import argparse # 定義執(zhí)行時(shí)長裝飾器函數(shù) def warps(*args): def deco(func): def _deco(*args, **kwargs): # 記錄開始時(shí)間 start = time.clock() # 回調(diào)原函數(shù) func(*args, **kwargs) # 記錄結(jié)束時(shí)間 end = time.clock() # 計(jì)算執(zhí)行時(shí)長 delat = end - start # 轉(zhuǎn)換成ms輸出 print("delay:%sms" % (int(delat*1000))) return _deco return deco # 連接副本集 conn = MongoClient(['192.168.3.11:27017', '192.168.3.12:27017', '192.168.3.13:27017']) # 讀寫分離 db = conn.get_database('hnrtest', read_preference=ReadPreference.SECONDARY_PREFERRED) # 定義連接的集合 collection = db.student # 創(chuàng)建插入數(shù)據(jù)函數(shù) def data_insert(num): try: for i in range(1, num): collection.insert({"name": "student"+str(i), "age": (i % 100), "city": "FuZhou"}) except Exception as e: print("insert data:", e) # 創(chuàng)建查詢數(shù)據(jù)函數(shù),引用裝飾器函數(shù) @warps() def data_select(num): try: count = collection.find().count() while count != num - 1: count = collection.find().count() except Exception as e: print("select data:", e) # 創(chuàng)建刪除數(shù)據(jù)函數(shù) def data_delete(): try: collection.remove({}) except Exception as e: print("delete data:", e) # 創(chuàng)建計(jì)算延遲時(shí)長函數(shù) def data_delay(num): data_insert(num) data_select(num) if __name__ == '__main__': # 定義腳本需要傳入插入的數(shù)據(jù)量,默認(rèn)值為1000,通過-n傳入?yún)?shù) parser = argparse.ArgumentParser(description='insert data to mongodb number') parser.add_argument('-n', action='store', dest='num', type=int, required=False, default=1000) given_args = parser.parse_args() num = given_args.num data_delete() data_delay(num)
網(wǎng)頁標(biāo)題:利用python測試mongodb副本集數(shù)據(jù)同步延遲
分享鏈接:http://bm7419.com/article38/pceepp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、品牌網(wǎng)站制作、營銷型網(wǎng)站建設(shè)、搜索引擎優(yōu)化、小程序開發(fā)、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)