利用python測試mongodb副本集數(shù)據(jù)同步延遲

本文主要介紹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)

小程序開發(fā)