中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用python測試mongodb副本集數據同步延遲

發布時間:2020-07-25 05:53:46 來源:網絡 閱讀:4179 作者:hnr1017 欄目:MongoDB數據庫

本文主要介紹python如何連接mongodb副本集及讀寫分離配置,mongodb副本集數據同步延遲測試。


一、python連接mongodb副本集

1.連接副本集

在新版的驅動中直接使用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)

副本集ReadPreference5個選項:

PRIMARY:默認選項,從primary節點讀取數據

PRIMARY_PREFERRED:優先從primary節點讀取,如果沒有primary節點,則從集群中可用的secondary節點讀取

SECONDARY:從secondary節點讀取數據

SECONDARY_PREFERRED:優先從secondary節點讀取,如果沒有可用的secondary節點,則從primary節點讀取

NEAREST:從集群中可用的節點讀取數據

 

二、測試mongodb延遲腳本

1.原理

往集群中插入一批數據,然后從secondary節點讀取,直到讀到數據總數與插入的總數相等。

2.腳本內容

#!/usr/bin/python
# -*- coding: utf-8 -*-
import pymongo
from pymongo import MongoClient
from pymongo import ReadPreference
import time
import argparse
# 定義執行時長裝飾器函數


def warps(*args):
    def deco(func):
        def _deco(*args, **kwargs):
            # 記錄開始時間
            start = time.clock()
            # 回調原函數
            func(*args, **kwargs)
            # 記錄結束時間
            end = time.clock()
            # 計算執行時長
            delat = end - start
            # 轉換成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
# 創建插入數據函數


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)
# 創建查詢數據函數,引用裝飾器函數


@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)
# 創建刪除數據函數


def data_delete():
    try:
        collection.remove({})
    except Exception as e:
        print("delete data:", e)
# 創建計算延遲時長函數


def data_delay(num):
    data_insert(num)
    data_select(num)

if __name__ == '__main__':
    # 定義腳本需要傳入插入的數據量,默認值為1000,通過-n傳入參數
    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)
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丽江市| 西青区| 昌吉市| 卓资县| 平邑县| 安阳市| 武义县| 连江县| 稷山县| 西和县| 遂溪县| 南宁市| 徐州市| 唐山市| 边坝县| 齐河县| 广丰县| 睢宁县| 青阳县| 谢通门县| 开远市| 大庆市| 马尔康县| 锡林浩特市| 甘泉县| 丹凤县| 京山县| 琼海市| 宣恩县| 定襄县| 车险| 阿尔山市| 石家庄市| 英山县| 扶余县| 晋州市| 登封市| 夏津县| 淮南市| 辉县市| 双城市|