国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

在線學(xué)習(xí)網(wǎng)站數(shù)據(jù)庫集群技術(shù)設(shè)計與實(shí)現(xiàn)

2019-10-21 06:52:08王權(quán)
現(xiàn)代信息科技 2019年20期
關(guān)鍵詞:負(fù)載均衡一致性集群

摘? 要:如今信息技術(shù)高速發(fā)展,信息數(shù)據(jù)呈爆炸式增長,傳統(tǒng)的單點(diǎn)數(shù)據(jù)庫架構(gòu)已無法滿足業(yè)務(wù)需要,數(shù)據(jù)庫集群技術(shù)應(yīng)運(yùn)而生。集群模型設(shè)計的重難點(diǎn)在于系統(tǒng)的負(fù)載均衡、數(shù)據(jù)一致性和可靠性?!敖K學(xué)習(xí)在線”網(wǎng)站建設(shè)根據(jù)實(shí)際需求及數(shù)據(jù)量測算采用了一種高可用的數(shù)據(jù)庫集群模型。

關(guān)鍵詞:集群;負(fù)載均衡;可靠性;一致性

中圖分類號:TP311.13? ? ? ?文獻(xiàn)標(biāo)識碼:A 文章編號:2096-4706(2019)20-0100-03

Abstract:In the era of rapid development of information technology and explosive growth of data,traditional database management system has been unable to meet business needs,and database cluster technology emerged as the times require. The key and difficult points of cluster model design are load balancing,data consistency and reliability. According to the actual demand and data measurement,a highly available database cluster model is adopted in the construction of “Jiangsu Learning Online Website”.

Keywords:cluster;load balancing;reliability;consistency

0? 引? 言

隨著各地政府對社區(qū)教育工作的投入加大,對社區(qū)教育的關(guān)注度越來越高,省級社區(qū)教育數(shù)字化學(xué)習(xí)平臺的建設(shè)和各級社區(qū)教育在線學(xué)習(xí)平臺互聯(lián)互通互動也成為一項重要工作。

在建設(shè)省級社區(qū)教育在線學(xué)習(xí)平臺的過程中,作為終身教育綜合服務(wù)平臺,要考慮到將省域內(nèi)基礎(chǔ)數(shù)據(jù)不同的異構(gòu)網(wǎng)站系統(tǒng)進(jìn)行整合,構(gòu)建一個具有統(tǒng)一數(shù)據(jù)標(biāo)準(zhǔn)的數(shù)據(jù)中心,實(shí)現(xiàn)高效的數(shù)據(jù)交換和共享,為全省居民服務(wù)。以“江蘇學(xué)習(xí)在線”網(wǎng)站第三次改版建設(shè)為例,在線學(xué)習(xí)平臺既要實(shí)現(xiàn)省級門戶網(wǎng)站的功能,又要對接全省同類網(wǎng)站數(shù)據(jù),為了節(jié)約硬件資源,便于數(shù)據(jù)的集中存儲和管理,從提升用戶體驗和系統(tǒng)性能出發(fā),基于數(shù)據(jù)的高可用性、安全性和完整性方面考慮,一個高效的數(shù)據(jù)庫集群方案顯得尤為重要。

在信息技術(shù)高速發(fā)展的時代,數(shù)據(jù)爆炸式增長,數(shù)據(jù)存儲作為中型網(wǎng)站的核心任務(wù)之一,單點(diǎn)數(shù)據(jù)庫或單點(diǎn)服務(wù)器的運(yùn)行壓力越來越大,在中后期難以正常運(yùn)行,一旦數(shù)據(jù)庫出現(xiàn)故障,不僅系統(tǒng)服務(wù)無法運(yùn)行,而且海量數(shù)據(jù)丟失的風(fēng)險加大,后果嚴(yán)重,于是數(shù)據(jù)庫集群技術(shù)應(yīng)運(yùn)而生。數(shù)據(jù)庫集群的具體優(yōu)勢在于:使系統(tǒng)性能顯著提升、安全性提高、使用靈活性、系統(tǒng)可用性增強(qiáng)和維護(hù)更加便捷。

1? 數(shù)據(jù)庫集群的工作原理和關(guān)鍵技術(shù)

1.1? 工作原理

數(shù)據(jù)庫集群是將數(shù)據(jù)庫系統(tǒng)部署在若干個工作節(jié)點(diǎn)上,其數(shù)據(jù)是共享存儲的,每個節(jié)點(diǎn)對數(shù)據(jù)都有相同的訪問權(quán)利,若其中某個單點(diǎn)數(shù)據(jù)庫壓力過大或發(fā)生故障,其他服務(wù)器將正常提供服務(wù),集群控制系統(tǒng)會自動將服務(wù)切換至正常節(jié)點(diǎn),以保障整個系統(tǒng)持續(xù)正常運(yùn)轉(zhuǎn)。

1.2? 關(guān)鍵技術(shù)

1.2.1? 負(fù)載均衡技術(shù)

負(fù)載均衡是目前主要的一種計算機(jī)網(wǎng)絡(luò)的部署方法,它的任務(wù)是把各種壓力負(fù)載均衡分配到多個計算資源上,這樣使得壓力分散到各個節(jié)點(diǎn)上,提高了資源利用率,提升了資源吞吐量,減少了系統(tǒng)響應(yīng)時間,避免負(fù)載過大造成系統(tǒng)崩潰等現(xiàn)象。負(fù)載均衡主要有以下幾類:重定向負(fù)載均衡、域名解析負(fù)載均衡、反向代理負(fù)載均衡、網(wǎng)絡(luò)層負(fù)載均衡、數(shù)據(jù)鏈路層負(fù)載均衡。

1.2.2? 數(shù)據(jù)同步性技術(shù)

數(shù)據(jù)庫集群的架構(gòu)分類很多,比較常用的是共享存儲結(jié)構(gòu)和無共享存儲結(jié)構(gòu)。共享存儲結(jié)構(gòu)是把共享存儲器劃分為多個模塊,模塊分布于各個節(jié)點(diǎn),數(shù)據(jù)庫分散至各個節(jié)點(diǎn),始終讀寫使用一份數(shù)據(jù),使用成本較高,提升了數(shù)據(jù)的同步性,是目前較受歡迎的一種架構(gòu)方式;使用無共享存儲結(jié)構(gòu)雖然也能保證數(shù)據(jù)的同步性,但會存在數(shù)據(jù)讀寫頻率過高的問題,導(dǎo)致系統(tǒng)性能降低,但使用成本相對較低,在適合的業(yè)務(wù)系統(tǒng)中可以使用。

1.2.3? 數(shù)據(jù)可靠性技術(shù)

數(shù)據(jù)庫集群是整個系統(tǒng)部署高效運(yùn)行的重要保證,集群能夠有效地提升系統(tǒng)訪問性能,如果集群中某個服務(wù)或節(jié)點(diǎn)出現(xiàn)故障,集群系統(tǒng)將及時地把出現(xiàn)故障的節(jié)點(diǎn)準(zhǔn)確高效地切換至其他正常節(jié)點(diǎn),保證系統(tǒng)的正常運(yùn)行,這就要依靠集群系統(tǒng)的數(shù)據(jù)可靠性技術(shù)。

2? MySQL數(shù)據(jù)庫集群設(shè)計

2.1? 系統(tǒng)總體架構(gòu)

本文中數(shù)據(jù)庫集群系統(tǒng)將以“江蘇學(xué)習(xí)在線”網(wǎng)站建設(shè)為例,網(wǎng)站基于MySQL數(shù)據(jù)庫技術(shù)構(gòu)建的高可用數(shù)據(jù)庫集群,根據(jù)過去兩版網(wǎng)站的應(yīng)用情況和新版網(wǎng)站的實(shí)際需求,數(shù)據(jù)庫服務(wù)更多針對的是密集讀請求,比如用戶學(xué)習(xí)數(shù)據(jù)的查詢讀取功能。本例中集群系統(tǒng)在部署負(fù)載均衡節(jié)點(diǎn)時,忽略各單點(diǎn)數(shù)據(jù)庫的分布和異構(gòu),設(shè)計一個類似的中間件平臺,向各個應(yīng)用提供相同的數(shù)據(jù)接口,同時集群系統(tǒng)隨時監(jiān)聽集群內(nèi)各節(jié)點(diǎn)的運(yùn)行狀況,并且具有無限擴(kuò)展功能。該集群系統(tǒng)下的各個節(jié)點(diǎn)的數(shù)據(jù)庫是相對獨(dú)立部署的,雖然有主從之分,但各節(jié)點(diǎn)數(shù)據(jù)可互為副本,保證數(shù)據(jù)的安全性和冗余性,使系統(tǒng)的性能和可靠性大大提高。

在本例實(shí)踐中,負(fù)載均衡將部署在主節(jié)點(diǎn)上,把來自各方的壓力進(jìn)行均衡分配,其他各節(jié)點(diǎn)都部署MySQL數(shù)據(jù)庫。各節(jié)點(diǎn)的數(shù)據(jù)相互之間是平等的,部署一個節(jié)點(diǎn)為主庫,其他部署為從庫,這樣的關(guān)系就需要考慮數(shù)據(jù)庫的讀寫分離部署,數(shù)據(jù)的更新操作在主庫完成,讀寫操作由從庫負(fù)責(zé),大大降低了網(wǎng)絡(luò)通信壓力,提高系統(tǒng)訪問性能。根據(jù)網(wǎng)站系統(tǒng)的設(shè)計和部署,集群系統(tǒng)可分為以下幾個模塊:應(yīng)用服務(wù)請求模塊、負(fù)載均衡模塊、節(jié)點(diǎn)處理模塊、數(shù)據(jù)一致性模塊。

2.2? 應(yīng)用服務(wù)請求模塊

該模塊模擬用戶對數(shù)據(jù)庫的讀寫操作請求,對于應(yīng)用端來說,服務(wù)端的內(nèi)容是明確且固定的,應(yīng)用服務(wù)將SQL語句通過socket請求發(fā)送給服務(wù)器端上負(fù)載均衡模塊,再由負(fù)載均衡模塊把任務(wù)請求分配到集群內(nèi)的各個數(shù)據(jù)庫節(jié)點(diǎn)。各模塊和各節(jié)點(diǎn)之間都是通過網(wǎng)絡(luò)通信服務(wù)來實(shí)現(xiàn)的,一般采用應(yīng)用服務(wù)接口通信。

整個過程即是用戶端向負(fù)載均衡模塊發(fā)送查詢請求,并把查詢結(jié)果返回給服務(wù)端,同時把返回內(nèi)容設(shè)計成標(biāo)準(zhǔn)格式,返回時不再經(jīng)過中間節(jié)點(diǎn),減少網(wǎng)絡(luò)通信壓力。

發(fā)送請求模塊:首先采用指數(shù)補(bǔ)償?shù)乃惴ㄟM(jìn)行連接,如果嘗試連接失敗,系統(tǒng)進(jìn)程提示暫停嘗試,暫停結(jié)束再嘗試連接,每嘗試一次將增加一次延時,延時時間根據(jù)系統(tǒng)具體情況設(shè)定。接著使用MySQL的connect()函數(shù)連接負(fù)載均衡模塊,并使用send()函數(shù)向數(shù)據(jù)庫節(jié)點(diǎn)發(fā)送對應(yīng)的查詢請求。

接收返回模塊:首先系統(tǒng)使用MySQL的內(nèi)置函數(shù)獲得相關(guān)主機(jī)信息,再通過相關(guān)函數(shù)取得主機(jī)地址的結(jié)構(gòu)列表,進(jìn)行網(wǎng)絡(luò)監(jiān)聽服務(wù)的初始化。當(dāng)網(wǎng)絡(luò)監(jiān)聽服務(wù)初始化完成,即可接收到來自節(jié)點(diǎn)的查詢返回結(jié)果。

2.3? 負(fù)載均衡模塊

負(fù)載均衡模塊的作用是均衡分配來自用戶端的壓力和請求,先接受用戶應(yīng)用端發(fā)送的請求并進(jìn)行計算,按照負(fù)載均衡策略和負(fù)載均衡算法將該請求發(fā)送至集群內(nèi)各對應(yīng)的數(shù)據(jù)庫節(jié)點(diǎn);同時對各節(jié)點(diǎn)的運(yùn)行狀態(tài)進(jìn)行實(shí)時監(jiān)控,并及時處理或修復(fù)節(jié)點(diǎn)故障,將請求切換至正常運(yùn)行節(jié)點(diǎn);在增加了新節(jié)點(diǎn)后,智能分配新加入節(jié)點(diǎn)的負(fù)載。

負(fù)載均衡模塊是整個數(shù)據(jù)庫集群系統(tǒng)正常運(yùn)行的核心,因為需要計算和處理負(fù)載均衡算法,具有承上啟下和任務(wù)分配的作用,對機(jī)器性能的要求也非常高。

2.4? 節(jié)點(diǎn)處理模塊

節(jié)點(diǎn)處理模塊是直接操作與數(shù)據(jù)庫之間的任務(wù),作為服務(wù)端的節(jié)點(diǎn)處理模塊與負(fù)載均衡模塊通信時,負(fù)責(zé)接收并提取處理負(fù)載均衡模塊轉(zhuǎn)發(fā)的請求,從socket的數(shù)據(jù)包里釋放出SQL語句和請求端IP地址,然后連接數(shù)據(jù)庫,同時執(zhí)行SQL語句,最后將SQL語句執(zhí)行的結(jié)果發(fā)送給目的請求端。由于這個處理過程要隨時打開和關(guān)閉數(shù)據(jù)庫的連接,并且系統(tǒng)有不斷的請求處理過程,就需要頻繁地開關(guān)數(shù)據(jù)庫連接,不僅增加系統(tǒng)壓力,而且對系統(tǒng)資源也會造成極大的浪費(fèi),所以需要利用系統(tǒng)進(jìn)程池的技術(shù),保持與數(shù)據(jù)庫通信連接。在本系統(tǒng)部署的案例中先調(diào)用系統(tǒng)函數(shù)initserver()來初始化監(jiān)聽,通過accept()函數(shù)接收請求,然后使用info_handle()函數(shù)來處理請求,調(diào)用MySQL的API程序接口,執(zhí)行數(shù)據(jù)查詢。

2.5? 數(shù)據(jù)一致性模塊

數(shù)據(jù)一致性模塊就是在整個系統(tǒng)集群中承擔(dān)主數(shù)據(jù)庫角色的節(jié)點(diǎn),該集群中設(shè)置分配主/從數(shù)據(jù)庫節(jié)點(diǎn),形成一主多從的數(shù)據(jù)庫架構(gòu)。主數(shù)據(jù)庫節(jié)點(diǎn)主要是接收數(shù)據(jù)更新請求并執(zhí)行語句,通過數(shù)據(jù)一致性模塊將更新后的數(shù)據(jù)同步到從數(shù)據(jù)庫節(jié)點(diǎn),保證數(shù)據(jù)的一致性。

根據(jù)系統(tǒng)的規(guī)模、用途和需求的不同,MySQL數(shù)據(jù)庫也需要使用相應(yīng)的版本,不同的版本在某些用法和語句上略有差別,所以建議主從數(shù)據(jù)庫的MySQL版本一致,或者從庫的版本高些。

以“江蘇學(xué)習(xí)在線”網(wǎng)站的數(shù)據(jù)庫配置為例,數(shù)據(jù)庫安裝過程省略,配置步驟如下:

(1)登錄主數(shù)據(jù)庫服務(wù)器,創(chuàng)建從數(shù)據(jù)庫用戶。

MySQL>grant replication slave,reload,super on *.* to slave@192.168.5.60 identified by 'slave';? ? ?#對應(yīng)從數(shù)據(jù)庫的ip和名稱

(2)修改主數(shù)據(jù)的MySQL配置文件my.ini或my.cnf。

server-id=10 ? ?#設(shè)置主數(shù)據(jù)庫的server-id號,各庫需區(qū)別

log-bin=MySQL-binlog? ? #設(shè)置MySQL的日志,最好放在其他硬盤上,保證數(shù)據(jù)完整性

expire_logs_day=30? ? ?#設(shè)置MySQL運(yùn)行日志保存日期,根據(jù)具體需求設(shè)置

max_binlog_size=2048M? #設(shè)置MySQL日志文件大小,根據(jù)需求設(shè)定

(3)重啟主數(shù)據(jù)庫的MySQL服務(wù),使設(shè)置生效。

#service MySQL restart

(4)查看主數(shù)據(jù)庫狀態(tài),獲取相關(guān)的數(shù)據(jù)庫信息,以便從庫連接時使用。

MySQL> show master status:

| File? ? ? ?| Position? |? Binlog_Do_DB | Binlog_Ignore_DB|

| MySQL-bin.000036? |? ?183? ?|? ? ? ?|? ? ? |

| row in set(0.00sec)

(5)登錄從數(shù)據(jù)庫主機(jī),修改從庫的配置文件my.ini或my.cnf。

server-id=60? ? ? ?#根據(jù)從庫的數(shù)量依次配置,設(shè)置不同的ID號

slave-skip-errors=all? ? #由于多方面原因?qū)е履承┱Z句在主庫正常運(yùn)行,從庫無法運(yùn)行,因此在配置文件my.cnf里加一句slave-skip-errors=all來忽略所有的SQL語句錯誤

relay-log=MySQL-relay-bin? #配置該文件的作用是存放從庫線程從主庫端讀取的文件信息

關(guān)閉從庫的binlog,因為在主庫已經(jīng)使用了binlog進(jìn)行增量備份,從庫就不需要了,減少系統(tǒng)消耗。

(6)重啟MySQL數(shù)據(jù)庫服務(wù)后,在從庫服務(wù)器登錄MySQL,并對從庫服務(wù)器進(jìn)行授權(quán)(可以先通過MySQL的MySQLdump命令將主數(shù)據(jù)庫備份后恢復(fù)到從數(shù)據(jù)庫,保證數(shù)據(jù)一致)。

MySQL>? change master to master_host= '192.168.5.128',master_user='123',master_password= '123',master_log_file='MySQL-bin.000036',master_pos=238;

(7)啟動從數(shù)據(jù)庫,進(jìn)行數(shù)據(jù)同步。

MySQL>? start slave;

(8)檢查主從數(shù)據(jù)同步狀態(tài)。

MySQL〉 show slave status;

Slave_IO_Running:Yes

Slave_SQL_Running:Yes

如果看到Slave_IO_Running和Slave_SQL_Running的值均為Yes,則主從數(shù)據(jù)同步正常。

(9)通過Heartbeat搭建雙機(jī)熱備環(huán)境,Heartbeat有兩種模式,默認(rèn)只支持兩個節(jié)點(diǎn),在本系統(tǒng)集群的部署中采用cib模式,則需要修改以下配置文件:

1)把所有從庫節(jié)點(diǎn)都加入到配置文件ha.cf中,并在ha.cf最后加上:”crm 1”。

2)然后按以下步驟使用cib.xml文件。

/usr/local/lib64/heartbeat/haresources2cib.py把/usr/local/etc/ha.d/haresources轉(zhuǎn)換為/usr/local/var/lib/ heartbeat/crm/cib.xml

3)最后清空haresources文件。

這樣一個主從MySQL數(shù)據(jù)庫集群系統(tǒng)就搭建完畢。

3? 結(jié)? 論

在“江蘇學(xué)習(xí)在線”網(wǎng)站第三次改版建設(shè)中,設(shè)計MySql數(shù)據(jù)庫集群方案,采用一主三從的分布式數(shù)據(jù)庫結(jié)構(gòu),增強(qiáng)了橫向擴(kuò)展性,實(shí)現(xiàn)了數(shù)據(jù)的高吞吐量和低延遲性,提升了數(shù)據(jù)的高可用性,提高了網(wǎng)站訪問的效率。

參考文獻(xiàn):

[1] 黃旭.分布式MySQL數(shù)據(jù)庫集群在線監(jiān)測系統(tǒng)設(shè)計與實(shí)現(xiàn) [D].哈爾濱:哈爾濱工業(yè)大學(xué),2012.

[2] 陳君芳.高可用集群系統(tǒng)在播出數(shù)據(jù)庫中的實(shí)現(xiàn) [J].視聽界(廣播電視技術(shù)),2013(6):18-20.

[3] 龐遼軍,王力,李慧賢.基于集群技術(shù)的Linux虛擬服務(wù)器 [J].計算機(jī)工程與應(yīng)用,2003,39(14):161-163.

[4] 謝怡,燕彩蓉,彭勤科,等.數(shù)據(jù)庫集群服務(wù)器的設(shè)計和管理 [J].微電子學(xué)與計算機(jī),2003,20(1):1-4.

作者簡介:王權(quán)(1982-),男,漢族,江蘇金壇人,工程師,學(xué)士學(xué)位,研究方向:教育信息化。

猜你喜歡
負(fù)載均衡一致性集群
集群式AUV可控分群控制算法
關(guān)注減污降碳協(xié)同的一致性和整體性
公民與法治(2022年5期)2022-07-29 00:47:28
注重教、學(xué)、評一致性 提高一輪復(fù)習(xí)效率
IOl-master 700和Pentacam測量Kappa角一致性分析
一種無人機(jī)集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計
電子制作(2018年11期)2018-08-04 03:25:40
Python與Spark集群在收費(fèi)數(shù)據(jù)分析中的應(yīng)用
勤快又呆萌的集群機(jī)器人
異構(gòu)環(huán)境下改進(jìn)的LATE調(diào)度算法
基于負(fù)載均衡的云資源調(diào)度策略研究
多站點(diǎn)同步更新系統(tǒng)的設(shè)計
科技視界(2016年3期)2016-02-26 20:16:57
盐津县| 石家庄市| 兴化市| 台安县| 道真| 仙桃市| 金寨县| 堆龙德庆县| 合阳县| 姜堰市| 聊城市| 丹江口市| 宝兴县| 独山县| 安康市| 外汇| 巴马| 深州市| 昌平区| 油尖旺区| 双江| 雅安市| 江山市| 科尔| 怀远县| 哈巴河县| 钟祥市| 克山县| 潼南县| 拜泉县| 武隆县| 邯郸县| 新安县| 墨脱县| 扬州市| 平果县| 八宿县| 泸定县| 开封县| 宜黄县| 沛县|