远程呼叫系统的数据库设计与实现
2016-05-14唐荣杰向玲玲刘旨阳
唐荣杰 向玲玲 刘旨阳
摘要:远程呼叫系统解决的是呼叫数据的采集、传输、存储、应用的问题,在设计的过程中,我们必须考虑设备数据,用户数据,呼叫请求信息数据,呼叫应答处理数据的存储问题,同时也关注数据库系统的实时性、可用性、伸缩性等。在解决系统并发和终端设备交互的问题上,采用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月.