• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Mycat的分布式數(shù)據(jù)庫在運營商IT系統(tǒng)轉(zhuǎn)型中的實現(xiàn)與探索

    2018-07-28 07:18:52周智
    電腦知識與技術(shù) 2018年15期

    周智

    摘要:近幾年由于傳統(tǒng)互聯(lián)網(wǎng)轉(zhuǎn)型到移動互聯(lián)網(wǎng),通信運營商的運營壓力倍增,支撐系統(tǒng)規(guī)模越來越大,行業(yè)應用所產(chǎn)生的數(shù)據(jù)量呈爆炸式增長,并且訪問的并發(fā)量也呈現(xiàn)大幅的增長。無論從數(shù)據(jù)的存儲上還是訪問上,已經(jīng)遠遠超出了傳統(tǒng)計算機技術(shù)和信息系統(tǒng)的處理承載能力。而傳統(tǒng)的集中式數(shù)據(jù)庫面對大規(guī)模數(shù)據(jù)處理逐漸變現(xiàn)出其局限性。Mycat開源分布式數(shù)據(jù)庫中間件可以將MySQL很簡便部署為分布式,易于擴展,安全,可以替代Oracle數(shù)據(jù)庫。下面筆者結(jié)合運營商IT轉(zhuǎn)型中來介紹其實現(xiàn)原理以及探索。

    關(guān)鍵詞:Mycat;MySQL;分布式數(shù)據(jù)庫;運營商IT系統(tǒng)

    中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2018)15-0025-03

    1概述

    在移動互聯(lián)網(wǎng)時代,使用互聯(lián)網(wǎng)的用戶激增,大量數(shù)據(jù)存儲以及超高并發(fā)訪問成為系統(tǒng)設計與使用的問題,對于大量數(shù)據(jù)的處理需要應用新的技術(shù)方案。傳統(tǒng)數(shù)據(jù)庫存在先天性的弊端,即單機(單庫)性能瓶頸,卻又擴展困難。如果傳統(tǒng)數(shù)據(jù)易于擴展,由單個的節(jié)點組合成為一個邏輯上的數(shù)據(jù)庫,既可以解決此類問題。國產(chǎn)的開源數(shù)據(jù)庫中間件Mycat能夠支持此類擴展。這里就Mycat實現(xiàn)原理進行展開說明。

    2 Mycat分片規(guī)則

    分片,是指通過對某一個字段通過特定的算法進行計算、分片,將原本存放在一個數(shù)據(jù)庫中的數(shù)據(jù)分散存放到多個數(shù)據(jù)庫,以達到分散單節(jié)點數(shù)據(jù)的壓力。數(shù)據(jù)分片在維度上可以分為垂直分片和水平分片。

    垂直分片:在傳統(tǒng)系統(tǒng)設計中應用非常廣泛,按照不同的業(yè)務進行數(shù)據(jù)庫分庫。在運營商支撐系統(tǒng)就按照業(yè)務分為營業(yè)數(shù)據(jù)庫、賬務數(shù)據(jù)庫、報表數(shù)據(jù)庫等,如圖:

    水平分片:將每個獨立的表按照一定的計算規(guī)則,將每個表中的數(shù)據(jù)分散到多個數(shù)據(jù)庫中。每個庫的數(shù)據(jù)表結(jié)構(gòu)一樣,但是存儲的數(shù)據(jù)不一樣。

    分片規(guī)則:Mycat位于應用和數(shù)據(jù)庫的中間層,按照業(yè)務要求,可以對數(shù)據(jù)量小且不需要做數(shù)據(jù)切片的表歸集到非分片表;對于數(shù)據(jù)量大,并且業(yè)務上有分片需求的表歸集為分片表。分片表按照分片規(guī)則分為以下四大類:

    ER關(guān)系分片:ER模型是實體關(guān)系模型,基本元素是對系統(tǒng)抽象化的實體數(shù)據(jù),Mycat將此關(guān)系引入到數(shù)據(jù)分片的規(guī)則中,使有相關(guān)依賴關(guān)系的表能夠按照一定的業(yè)務規(guī)則切分到相同的節(jié)點上,避免數(shù)據(jù)的跨庫查詢。比如訂單表和訂單明細表就存在依賴關(guān)系,可以抽象為父子關(guān)系。子表的記錄與所關(guān)聯(lián)的父表存放在同一個數(shù)據(jù)分片上。

    時間分片:將不同月甚至日的數(shù)據(jù)分散到不同的庫中。具體可以按照日期、單月小時、自然月以及日期范圍hash算法。

    固定值分片:按照所選分片字段通過特定的計算,按照計算得到的值進行分片。具體如下:

    3 Mycat搭建讀寫分離

    讀寫分離,簡單地說就是把對數(shù)據(jù)庫的讀和寫分開,以應對不同的數(shù)據(jù)庫服務器。主數(shù)據(jù)庫提供寫操作,從數(shù)據(jù)庫提供讀操作,這樣可以有效地減輕單臺服務器的壓力。主服務器進行寫操作后,數(shù)據(jù)及時同步到所讀的數(shù)據(jù)庫,盡可能保證讀寫數(shù)據(jù)庫的數(shù)據(jù)一致。正常情況下,一個寫數(shù)據(jù)庫的操作在幾十毫秒內(nèi)即可完成,而系統(tǒng)中大部分語查詢語句需要幾秒甚至幾分鐘才能得到結(jié)果,而這些查詢語句需要消耗大量的計算能力,高峰期間甚至可以引起系統(tǒng)的崩潰。所以從保護數(shù)據(jù)的角度來看,也需要進行有容災處理機制,避免沒有主從復制機制的單節(jié)點數(shù)據(jù)庫。

    MySQL的主流讀寫分離是Master-Slave和Galera Cluster兩種模式。

    Master-Slave是MySQL數(shù)據(jù)庫的標準讀寫分離模式。一般由Master節(jié)點負責寫操作,在Master后配置多個Slave節(jié)點作為讀的操作。Slave節(jié)點的多少取決于系統(tǒng)的讀操作的壓力,可以進行水平擴展。具體原理圖如下:

    此方法同步機制:

    a) 主庫在每次更新數(shù)據(jù)前,將更新的記錄到二進制文件中。

    b) 備庫將主庫的二進制日志復制到本地的中繼日志中。具體原理是備庫啟動一個工作線程,和主庫建立連接,用來監(jiān)控主庫更新狀態(tài),將主庫的二進制日志變化寫入到本地中繼日志中。

    c) 備庫啟動一個SQL線程,將中繼日志中的數(shù)據(jù)讀取并在備庫中執(zhí)行,完成備庫的數(shù)據(jù)更新。

    Galera Cluster讀寫分離模式是一種多主同步復制模式。該模式可以在任意節(jié)點進行讀寫及復制,各節(jié)點之間無延遲且節(jié)點宕機也不會導致數(shù)據(jù)丟失。所有的節(jié)點保持相同的狀態(tài),節(jié)點間沒有不同的數(shù)據(jù)。無需手工備份當前數(shù)據(jù)庫并復制到新節(jié)點;無需更改或者很小的改動可以實現(xiàn)任意節(jié)點上進行讀寫。并且可以自動剔除故障節(jié)點,自動加入新節(jié)點;

    該模式通常采用至少3個MySQL節(jié)點作為一個Cluster。理論上可以進行多寫,但是在多個案例中,多寫會引起較為嚴重的鎖等待,所以使用Galera推薦使用一寫多讀。

    Mycat讀寫分離:Mysql的復制由Mysql自行控制,Mycat不負責數(shù)據(jù)的同步問題。

    Mycat作為數(shù)據(jù)庫中間件,在配置好數(shù)據(jù)庫的從屬關(guān)系后,只需要配置相關(guān)參數(shù)既可以實現(xiàn)讀寫分離,和前端應用無關(guān),應用側(cè)只需要側(cè)重業(yè)務即可。

    讀寫模式的變更,通過修改Mycat中配置文件屬性balance來實現(xiàn)。

    select user()

    <!-- can have multi write hosts -->

    <!-- can have multi read hosts -->

    英吉沙县| 公安县| 西和县| 嵊州市| 临西县| 招远市| 瑞金市| 西丰县| 郎溪县| 汶上县| 霍山县| 安西县| 长汀县| 昭觉县| 若羌县| 宝兴县| 白朗县| 乐安县| 阿鲁科尔沁旗| 淳化县| 大新县| 黑龙江省| 兰西县| 崇阳县| 嘉鱼县| 庐江县| 团风县| 梅州市| 广水市| 衡水市| 吴旗县| 孝昌县| 林甸县| 南阳市| 湘乡市| 蚌埠市| 名山县| 醴陵市| 房产| 邛崃市| 紫阳县|