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