论文库
  • 首页
  • 论文发表
  • 论文宝库
  • 期刊大全
  • 新闻中心
  • 著作出书
  • 发表流程
  • 关于我们
  • 诚心通道
  • 联系我们
  • 当前位置:主页 ->论文库 ->工学论文
  • 多终端数据同步的设计与实现

    2014年10月29日 09:30 作者:杜明晶
    多终端数据同步的设计与实现
    文/杜明晶
    中国论文网^~m4U-bRO
    【关键词】系统架构 数据同步 Thrift
    中国论文网bYa5{VS
    摘要:MySQL 分布式数据库
    随着科技的不断发展,人们拥有新兴终端设备的趋势愈发具
    有多样性和广泛性,而随着生活节奏的加快,人们在多终端设备
    中记录管理事务的需求也在逐渐增长,但由于目前网络覆盖面积
    的局限性和网络的不稳定性,终端设备并不能时刻保持着连接到
    网络的状态。在连接网络异常的情况下进行操作,就会出现发布
    失败、各终端同步异常、分享失败等问题。针对以上问题,本文
    提出并设计了一款系统架构,该系统架构具有远程同步和其他用
    户分享的功能,能够使人们在终端设备网络未连接时进行无差别
    操作,保持多终端数据的一致性。

    (i!?&`Mi6Ri0
    1 背景
    随着信息产业的不断发展,人们在生活中往往使用着手机、PAD、笔记本电脑等多款
    智能产品。在生活节奏日益加快的今天,用户经常对其拥有的单一终端设备进行记录、处理
    等操作,并在网络连接状态下能够进行分享、同步至多终端进行后续操作。针对网络连接失
    败有可能导致的问题,可以用以下思路解决:在网络连接成功时记录下操作,而在网络连接
    成功时上传服务器。

    'Jjf1]KB)jeO0
    2 应用系统设计
    本文将多终端数据同步设计应用在 C/S 模式下的系统中,该系统拥有安卓、IOS、WP8
    和 windows 四个版本,服务器端是采用经典的LAMP 组合,通信方面则采用了 Thrift 架构。
    以下对系统框架中重要组件进行详细说明。

    1G/wUUO6Q"F0
    2.1 Thrift框架
    Apache Thrift 是 Facebook 公司开发的远程服务调用框架,它采用接口描述语言定义并
    创建服务,支持可扩展的跨语言服务开发,所包含的代码生成引擎可以在 C++,Java,
    Python,PHP 等多种语言中创建高效的、无缝的服务,其传输数据采用二进制格式,与相对
    体积庞大且传输效率低的 XML 相比,Thrift框架的优势非常明显,而相比于 JSON,Thrift
    则更加成熟完善,具有更高的效率。
    中国论文网cM#G1z,iW'^
    2.2 终端设计
    2.2.1 终端的操作时间轴表
    每个终端设备对每个用户创建一个操作时间轴表,以记录在一段时间范围内,该用户
    在该终端上对本地数据库进行的各种操作,包括增删改。当用户同步成功之后,服务器会返
    回给设备一个全新的时间戳。同步时间戳由服务器统一发放管理维护,保证了终端更新的可靠性。
    中国论文网#{a*qxt j
    2.2.2 简化同步信息算法
    因为用户离线操作的很多内容没有必要全部与服务器同步,如用户创建一个事务不久
    之后将其删除,再进行同步,服务器就没有必要再去接受与该事务有关的任何信息,为了节
    省传输成本,在终端上做一个优化算法使客户端同步给服务器的信息尽可能的少。这部分一
    般由本地数据库的触发器完成,如果本地数据库不支持触发器,由程序完成。

    !a_^X f^/`'E0
    2.2.3 全球唯一 ID
    所有的数据库,无论是本地数据库还是服务器数据库,都不使用数据库自身的 ID,
    而用一个接口专门生成全球唯一 ID,随数据信息一同写入数据库,这不仅确保前后台数据
    同步的定位准确,更为以后的多库扩展做好了准备。

    `slME0
    2.3 服务器设计
    2.3.1 MySQL 服务器
    采用单点master的分布式MySQL服务器,实现读写分离。
    中国论文网/Nn.Ql#r:K*r,vn T}
    2.3.1.1 复制机制
    目前主流的两种复制方式是,基于记录的复制 (Row-Based Replication) 与基于语句的
    复制 (Statement-Based Replication)。因为,本系统中很少出现一个 SQL 语句能批量操作大
    量记录的情况, 体现不了基于语句复制的优势,又因为数据库中使用了触发器,因此选择使用
    基于记录的复制。
    中国论文网 [!uI-tK,Uk
    2.3.1.2 存储引擎
    MySQL 常用的存储引擎有 MyISAM 与InnoDB,因为数据更新时,有大量的写入操
    作, 同一时间不能排除没有读取操作的可能性。为了调高读取效率,我们选择 InnoDB 存储引
    擎,其在修改内容时采用的是行锁机制,避免了 MyISAM 中表锁所导致的整个数据表无法读取的情况。
    中国论文网k1s aj PUsE
    2.3.1.3 分表
    数据量巨大,分表是必须的。系统主要采用的是水平分表。大量信息的访问率对时间
    的依赖性很强,因此大部分的分表是依据时间进行的。当然还有一些是根据用户 ID 进行分
    表的,如私信表等。
    中国论文网'k{D"e1X9Z(yHb
    2.3.1.4 索引
    使用了大量索引,因为对时间依赖性强,大部分组合索引都以时间戳作为第一索引。

    m%a5m rv1lOk&X0
    2.3.2 同步机制
    2.3.2.1 同步策略
    一次同步的大体流程如下:
    每次终端同步时,除了会发送一些认证信息之外,还有在一段时期内的操作,此时服
    务器在认证成功之后,采取优先写入的方式,即将客户端的信息先写进服务器(写入的内容
    如与其他用户有关,就会在其相关用户相应的时间轴表中插入一行操作记录,也属于一种用
    空间换取读取效率的方式)。写入完成后,再将比这段同步时期略久一点的时间范围内接收
    到的有关该用户在该终端上的操作变化返回,同变化内容一起返回的还有一个比此次终点时
    间戳略大的值,此值作为下次同步的起点。接着介绍下,一次同步,同步起点与终
    点时间的概念。

    o's0Qi\M0
    起点:客户端上会有一个上次同步成功之后返回的时间戳,以此为起点。
    终点:服务器接收到同步请求时服务器的时间戳为终点。
    中国论文网`(j9L(| a0K
    2.3.2.2 服务器操作时间轴表
    服务器也有一个操作时间轴表,此表以时间戳为基准存储每个用户使用不同终端同步的
    操作。仅包含,用户 ID,设备 ID,操作 ID,操作表 ID,行 ID 和时间戳字段,不含有任何
    内容字段,以尽量小的空间换取读取速度。此表以用户 ID 和时间戳作为组合索引。每次读
    取一个用户在某一设备上,从起点到比此次终点略大一点时间范围内的所有操作。通过算法
    优化整合出对于各记录所做操作的最终结果,之后进行读取,并返回给客户端。

    ;a.GeR c{K0
    3 结束语
    对面向可离线多终端的前后台数据同步进行了分析,总结了一种架构设计,并给出了
    许多细节及难点上的解决方法。随着大数据时代的到来,此种架构也将
    受到大数据请求的冲击,其中仍有许多需要改进和扩展的地方。例如:MySQL 服务器可以
    扩展成为多点 master 的;对 apache 服务器也进行负载均衡;对冲突策略和优化算法进行进
    一步改进等。

    e`0cQT/{;[9t0
    参考文献
    [1] 李华植 . 海量数据库解决方案 [M]. 郑保卫 , 盖国强 , 译 . 北京 : 电子工业出版社,2011:332-339.
    [2] 姜 承 尧 .MySQL 技 术 内 幕 :InnoDB 存 储引 擎 [M]. 北 京 : 电 子 工 业 出 版 社,2011:114-115.
    作者单位成都理工大学信息科学与技术学院 1 四川省成都市 610059
  • 上一篇             下一篇
发给朋友 分享到朋友圈
  • 回顶部
中国论文网|微信客服:15295038855
本站提供论文发表发表论文核心论文发表
免费论文发表资源,文章只代表作者观点,并不意味着本站认同,部分作品系转载,版权归原作者或相应的机构;若某篇作品侵犯您的权利,请来信告知:lunwenchina@126.com