唐榮杰 向玲玲 劉旨陽

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