唐榮杰 向玲玲 劉旨陽(yáng)

摘要:遠(yuǎn)程呼叫系統(tǒng)解決的是呼叫數(shù)據(jù)的采集、傳輸、存儲(chǔ)、應(yīng)用的問(wèn)題,在設(shè)計(jì)的過(guò)程中,我們必須考慮設(shè)備數(shù)據(jù),用戶數(shù)據(jù),呼叫請(qǐng)求信息數(shù)據(jù),呼叫應(yīng)答處理數(shù)據(jù)的存儲(chǔ)問(wèn)題,同時(shí)也關(guān)注數(shù)據(jù)庫(kù)系統(tǒng)的實(shí)時(shí)性、可用性、伸縮性等。在解決系統(tǒng)并發(fā)和終端設(shè)備交互的問(wèn)題上,采用memcached緩存技術(shù),既可以滿足分布式設(shè)計(jì)的要求,也可以靈活快速部署,并且不影響系統(tǒng)在前期的資金投入,靈活性更大。
關(guān)鍵詞:遠(yuǎn)程呼叫 數(shù)據(jù)庫(kù) 實(shí)時(shí)性 伸縮性
中圖分類號(hào):TP311.13 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)07-0136-01
1 遠(yuǎn)程呼叫系統(tǒng)架構(gòu)設(shè)計(jì)
在設(shè)計(jì)架構(gòu)遠(yuǎn)程呼叫系統(tǒng),我們采用典型的分層模型,即應(yīng)用層、服務(wù)層、數(shù)據(jù)層;三層之間相互獨(dú)立,應(yīng)用層處理具體業(yè)務(wù)邏輯,服務(wù)層提供可復(fù)用的服務(wù),數(shù)據(jù)層處理存儲(chǔ)與訪問(wèn)如圖1所示。
應(yīng)用層和服務(wù)層統(tǒng)一部署到中間的應(yīng)用服務(wù)器上,可以應(yīng)對(duì)高并發(fā)的訪問(wèn)請(qǐng)求,通過(guò)負(fù)載均衡Nginx應(yīng)用服務(wù)器將一組服務(wù)器組成一個(gè)集群共同對(duì)外提供服務(wù),保證整個(gè)集群可用。
數(shù)據(jù)庫(kù)服務(wù)器要解決數(shù)據(jù)讀寫(xiě)存儲(chǔ)的問(wèn)題以及數(shù)據(jù)冗余備份的問(wèn)題,為了保證服務(wù)器宕機(jī)時(shí)數(shù)據(jù)不丟失,數(shù)據(jù)訪問(wèn)服務(wù)不中斷需要在寫(xiě)入的時(shí)候進(jìn)行有效的數(shù)據(jù)同步復(fù)制,將數(shù)據(jù)寫(xiě)入到多臺(tái)服務(wù)器上,實(shí)現(xiàn)數(shù)據(jù)冗余備份,出現(xiàn)數(shù)據(jù)服務(wù)器宕機(jī)的情況的時(shí)候,應(yīng)用程序直接訪問(wèn)備份數(shù)據(jù)。
在呼叫系統(tǒng)的數(shù)據(jù)存儲(chǔ)備份方案上我們選擇數(shù)據(jù)異步熱備的方式,應(yīng)用服務(wù)程序收到數(shù)據(jù)服務(wù)系統(tǒng)的寫(xiě)操作成功以后,只寫(xiě)成功一份,存儲(chǔ)系統(tǒng)將會(huì)異步的寫(xiě)到其他的副本中。
異步寫(xiě)入方式下,服務(wù)器分為主存儲(chǔ)服務(wù)器和從存儲(chǔ)服務(wù)器,應(yīng)用程序正常情況下只連接主存儲(chǔ)服務(wù)器,讓通過(guò)異步線程寫(xiě)操作到從存儲(chǔ)服務(wù)器中。
MySQL數(shù)據(jù)庫(kù)集群的伸縮性設(shè)計(jì),MySQL支持?jǐn)?shù)據(jù)復(fù)制功能,使用這個(gè)功能可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行簡(jiǎn)單的伸縮,在圖3的架構(gòu)中,由主服務(wù)器將數(shù)據(jù)同步到集群中其他的服務(wù)器上,數(shù)據(jù)讀寫(xiě)和分析離線操作都在從服務(wù)器上進(jìn)行。
2 memcached緩存設(shè)計(jì)
使用分布式緩存后,數(shù)據(jù)訪問(wèn)壓力可以得到有效緩解。Memcached簡(jiǎn)單的設(shè)計(jì),優(yōu)異的性能,海量數(shù)據(jù)可伸縮的架構(gòu)可以解決很多問(wèn)題。Memcached使用TCP協(xié)議通信,其序列號(hào)化協(xié)議是一套基于文本的自定義協(xié)議,非常簡(jiǎn)單,以一個(gè)命令關(guān)鍵字開(kāi)頭,后面都是操作數(shù)。同時(shí),他具有高效的內(nèi)存管理辦法,固定空間分配。應(yīng)用程序通過(guò)Memcached客戶端訪問(wèn)Memcached集群,Memcached客戶端主要由一組API、Memcached服務(wù)器集群路由算法、Memcached服務(wù)器集群列表及通信模塊構(gòu)成。
3 數(shù)據(jù)存儲(chǔ)系統(tǒng)的表結(jié)構(gòu)設(shè)計(jì)
遠(yuǎn)程呼叫系統(tǒng)一共設(shè)計(jì)了9張表,超級(jí)管理員表、用戶表、網(wǎng)關(guān)表、路由器信息表、歷史信息表、手表信息表、關(guān)聯(lián)表、呼叫器信息表、按鍵配置表。
(1)超級(jí)管理員信息表,編號(hào)(id)、用戶名(username)、密碼(password)、創(chuàng)建時(shí)間(createtime)、郵箱(email)、地址(address)、真實(shí)姓名(name);
(2)網(wǎng)關(guān)表,編號(hào)(id)、網(wǎng)關(guān)的物理地址(Mac_address);
(3)用戶信息表,編號(hào)(id)、用戶姓名(username)、密碼(password)、
創(chuàng)建時(shí)間(createtime)、網(wǎng)關(guān)編號(hào)(gateway_id);
(4)路由信息表,編號(hào)(id),路由器編號(hào)(gateway_id);
(5)關(guān)聯(lián)表,編號(hào)(id),用戶(user_id),手表編號(hào)(w_id),按鈕編號(hào)(b_id);
(6)手表信息表,編號(hào)(id)、路由器編號(hào)(R_id)、網(wǎng)關(guān)編號(hào)(gate_id)、備注(comment)、指令(order);
(7)呼叫器信息表,編號(hào)(id)、路由器編號(hào)(R_id)、網(wǎng)關(guān)編號(hào)(gate_id)、指令(order)、備注(comment);
(8)歷史信息記錄表,編號(hào)(id)、更新時(shí)間(updateTime)、手表狀態(tài)(w_status)、呼叫器狀態(tài)(b_status)、路由器狀態(tài)(r_status)、預(yù)留備注(comment);
(9)按鍵配置信息表,編號(hào)(id)、鍵值(keyorder)。
參考文獻(xiàn)
[1]李智慧.大型網(wǎng)站技術(shù)架構(gòu)核心原理與案例分析[M].電子工業(yè)出版社,2014年3月.
[2]CraigS.Mullin.DBA修煉之道數(shù)據(jù)庫(kù)管理員的第一本書(shū).機(jī)械工業(yè)出版社,2014年9月.
[3]PaulDuBios.MySQL技術(shù)內(nèi)幕(第4版).人民郵電出版社,2013年7月.
[4]BenForta.SQL必知必會(huì)(第4版).人民郵電出版社,2013年5月.