论文研究-基于Redis和Mysql的存储系统的设计与实现 .pdf

所需积分/C币:44 2019-08-22 23:03:06 630KB .PDF
收藏 收藏
举报

基于Redis和Mysql的存储系统的设计与实现,范东媛,钮心忻,本文基于Redis和Mysql数据库设计并且实现了在线学习平台的数据存储系统。利用Mysql的持久化存储和Redis的高速读写设计出具有存储数据庞�
山国利技论文在线 中的 提供了一组命令可以让开发者启用发布订阅模式。它默认是不开启以 及对操作事件的消息发布的,故需要手动去打丌,在后文会提到其具体操作。 如前文所说,消息订阅者,即 端,需要独占链接,即进行 期问, 一个连接无法穿插其他操作,此时以阻寒的方式等待 端的消息, 故该部分需要使用命令行脚本的方式来执行,也就是使用系统的多线程。 模式同样存在两种角色,分别是发布者和订阅者,订 阅者可以订阅一个或多个发布者,发布者可以向指定的订阅者发送消息。其关系如图 所示 Subscriber 1 publi sher) Channel mes sage> channel k msg2 X subscriber_2 Subscriber 3 图 模式原坦 是通过 命令冋订阅者发送信息的客户端,而该客户端使用 或者 命令接收信息的时候,则该客户端为订阅者。为了鮮耦发布者和订阅者 之前的关系,使用了 作为中介,而发布者和订阅者之间没有相互的关系 其特点总结为以下几条 )时间的非耦合性。 ()空间的非耦合性。 ()同步非耦合性。 重要原理介绍 是由多个同时服务于一个数据集合的实例组成的整体。它的通 信方式为总线通信,其架构中所有的节点都是相互连接的,节点间通过二进制协议进行 通信,所以需要维护好集样架构中所有的节点信息,一旦某一个节点损坏,可能会导纹 整个集群无法工作,故需要设计以增加系统的容错率。 的特点如下:客户端可以任意连接一个节点; 脚本为集群的管 理工具,比如自动添加减少节点,规划槽位等等(语言);对于用户来说,用户只是 关注这个数据集合,而数据集合存储在哪个节点对」用户是透明的;该分布式 致 性、可用性和分区容错性),牺牲了数据的强一致性原则,最大程度追求的特性还 原。另外,因为 的部署特点,它的批量吞吐率比其他的集群低,但是其单条 昋吐率却高于其他的集群架构,非常适合本系统。另外 的和集合的 昋吐率相对与其他的集群比较低,故在本文在设计的数据类型时也更多的使用了 等其他的数据格式。图为 的结构图 山国利技论文在线 s ve client mater mater CLUSTER slave slave ient client 图 的结构图 存取原理 集群中关于存储的重要结构有槽、位序列结构和空间分布算法等。 共分成个槽,该槽是虚拟的。正常工作时 中 的每个 都会负责一部分槽,当某个被映射到某个 负贡的槽,那么该 将为这个服务,用户可以拥有的分配权,也可以初始化时由 自动生成 在 中只有 才有的所有权,只有的使用权 基于位序列结构来判断的归属问题。 节点中维护着一个 字节的位序 节点用位来标识某个槽是否为自己所有,也就是说,对于糟,只需要判断 序列位的第位即可。下图为槽与之间的映射表 Master标志slot所有权 16384个槽 124 16384个Bt 集群中槽与节点的映射表 图位序列图结构 键的空间分布算法是处理每个进入的键值对如何列散列分配到这个 中的算法,表达式为 。以上的操作对于来说是透明的。 重新分片原理 当集群删除或者增加节点的时候,会进行重新分配,即重新分片。过程⊥要是 国科技论文在线 槽转移和键空冋迁移。 槽迁移有 (预备迁移状态)和 两个状态。 状态下节点访问,如果存在则直接返回,不存在则返回客户端,这次请求不会 刷新映射关系表,当再次方位该的时候依然会访问当前节点。当中包含多个请 求的时候,如果都存在则全部返回,如果不存在返冋,如果存在一部分,那么则 返回客户端 ,通知客户端重试。当迁移完毕,再次进行访问的时候则会进 行重定向,并改变客户端的映射表 状态是在迁移过程中迁移节点 在目的节点的状态,如图 槽转移 MasterA Master MIGRATING 槽2 槽 槽3 槽3 图槽转移状态 键空间迁移命令分为三步 〔导出键空间)、 (将键空间存储到目 )和 删除源 键空间)。数据迁移成功后,处于 和 状态的槽变为常态,从而完成整个分片过程。键空间迁移如图所示 键空间迁移 Mastar具 MasterA 图键空间迁移过程 之 是操作的个扩展,源码为语言,故比其他类似扩展的效率 高许多。 山国利技论文在线 读写的支持 支持数据库大多数的操作,对常用数据类型的常用操作如表。 表 常用操作表 类 操作 设置或更改一个字符串的值 获取一个字符串的值 存储数据到列表中 获取列表中的值 从右侧添加一个数据 从左侧弹出一个数据 从右侧弹出一个数据 给表中设置的数值,如果设置成功返 回,如果已绎存在则换返回,失败返回 获取中的某个的值 获取中所有的 取中所有的值,顺序是骓机的 获取中所有的和 顺序随机 获取中的数量 删除中的,如果 或不存在则返回 向中添加一个元素 查看集合中所有的元素 朋除中的元素 判断是合存在中 查看集合中成员的数量 移出并返回集合中的一个元素 添加元素 返回集合中的指定位置的元素 返回中的值 返回存储的个数 删除指定元素 返回屮介于和中间值的个数 返回中介于和中的值 屮指定的增加 发布订阅模式的支持 对于发布订阅模式的支持核心是两个函数,一个函数是发布消息端使用 的 ,另外一个是论文主要使用到的且在消息的订阅端使用的 是当事件触发后执行的 一些操作。 的支持 扩展必须是以上版本才可以支持 的操作, 是连接函数,第一个 山国利技论文在线 参数是 第二个参数是 地址和两个超时设置组成的数组, 是连接 超时时间, 是使用该连接的读写超时时间。其读写操作与单节点操 作并没有差别 前人成果综述 在 的研究方面,在国内外的相关研究如表 表国内外的相关研究表 作者 文章 主要内容 不足之处 吴霖刘振宇李《在订阅推 详绀介绍了相比于虽然在本文中提到了 佳 送系统中的应用》 的优势和冇基于框架对集群的支持,但是文章中 的订闶推送系统中 只是一笔带过,并没有对 在多进程数据共亨、多进程通信和 该巨大的优势加以利 数据统计方面的重要作用,在 用 的缓存应用方面运用的如火 纯青。 主要内容是的和 但是实验设计的结果没有 两种持久化存储的介绍和使用,详 详细的介绍 细的个绍了两种持久化存储方式 在取证分析上的设计和应用。 马冰姜学军史《基于缓存详细描述了的缓存性能,并但是最后实践的结果没有 海洋 框架的分析与实且与 的存取速率进行了测指出,也没有进行详细的说 践》 试与比较。最后用缓存方式 明。 实现了密码找回功能。 王绍东 《基于 详细介绍了对 溟码但是当某个时间段的数据 的分布式内分析和优化改进,最后在热访问比较集屮时,会使得集 存数据库的研究与度查询系统架构的具体设计和实群中的 过于繁忙 应用》 现,最重娑的是对 并且其数据块的固定造成 架构的介绍解析非常详细 不必要的数据传输 柳皓亮王丽周《集群性能本文对的多种集群架构进行但是并没有介绍集群 阳辰 测试分析》 了详细的介绍和性能测试,并详细在实际系统的应用。 介绍了 集群中适合 使用的数据类型和应用坏境。 吴霖、刘振宇和李佳的《在订阅推送系统中的应用》中提到的 在订阅 推送系统的使用细节,尤其是它的缓存应用方法非常只有代表性和借鉴意义,但 是文中虽提到有分布式支持的巨大优势,系统中却并没有使用。 的 文中详细的介绍了本身存在的持久化方式的优缺点,对于我们选择 作为持久化存储具有很大的指导意义,但是其实验结果过于单调了 马冰等人的《基于缓存框架的分析与实践》中的与的数据存取 比较结果对该存储系统的设计方向的指导意义巨大,但是最后实践的结果没有指出,也 没有进行详细的说明。 王绍东的《基于 的分布式内存数据库的研究与应用》中详细分析和介 山国利技论文在线 绍了 的许多细节信息,指出了它的优缺点,故有助于本系统恰到好处的对 其进行设计和使用,但是论文在应用方面并没有对优化后的方案进行合理的利用,没有 找到更加适合的场景进行测试实验。 柳皓亮等人的《集群性能测试分析》对各种集群性能进行了详细的说 明,尤其对各个集群适合使用的数据类型进行了说明,可以说是结果非常的准确和完备 的,故夲系统在设计程序和数据结构的时候结合其实验结果以达到系统的最高效率,但 是并没有介绍 集群在实际系统中的应用。 基于 和 存储系统的设计 总体设计思想 随着网终应用的不断发展,导致数据量和数据访问量日益增大,故尤其需要一个在 读取和数据管理方面都非常有优势的存储系统, 数据库虽然存在和两 种文件形式的持久化,但是并不适合面向对象的开发,可使用 弥补其缺陷,故 设计出一个基于 缓存和 数据持久化的存储系统。其总体架构如下图所 Master Redis对象 字符串列表有序集合集合哈希 Reds数据结构 缓存监听脚本 主从同步 Sav节点 图存储系统架构图 本框架设计了三个节点,每个节点有一个节点作为灾备节点。 节点和节点的数据存储和功能组件是一致的。下图为 分布式系统设计图 山国利技论文在线 slaven 槽 Master 增5161 10922 Master slave Slaved 槽10923- Care 183 Master 图基于 的集群设计 集群中有 个节点,其分别是三台个服务器;接下米我们平均分配哈希 槽的范围,节点负责槽的范围是,负责槽的范围是 负责槽的 范围是 然后为每个节点设计一个备份节点,也就是从节点,当主节点宕 机之后,从节点会自动接管主节点的槽位,故增加了集群的容错能力;当新增主节点的 时侯,将每个己有节点前面部分添加到新增节点中,删除节点同理。 到的持久化机制 有自己的独特的存储机制,但是文件存储不易于对象操作,故设计 为 的持久化存储数据库,将数据按照对应的逻辑持久化到 中。详细的 及计思路如图。 读取k <edis是否存在 写入Myq 中key Yes 接收msg后psCa1 Lback 回调处理函数 Yes Redis创 监听key L建key A过期时间 过期 发布过期消息 No 图异步听机制 当用户读取的时候首先从中进行读取,如果中不存在则访问 将 中数据进行回写;当用户将数据写进时,同时设置的过期时间, 如果在有效期内并没有进行的操作,那么中的数据会自动持久化到 并且删除的数据。其获取数据的流程图如下图所示 山国利技论文在线 开始 Redis中未查找到key 在Wysq1中查找ke 添加该课程并 设置 score=1 ey是否存在> 读取Mysq中的 值写入 Redis中 新加入 Redis中的数据 入过期时间以及过期函数 结束 图数据读取过程 服务器将数据直接写入中,给数据加入定时同步任务,定时结束后,将数据 同步到 中。从图中可以看出,读取数据的时候也是首先从中读取,若 不存在,则读取,并将数据回写到中。该缓存数据库的数据同步机 制的核心是的发布订阅机制。 对于过期事件的监听是一个运行在终端的监听脚本。利用 扩展,使用 实现对过期的监听,并在 里进行回调处理,另外 中的 命 令的功能是不挂断地运行命令,用这个命令可以使得我们的脚本一直运行。 为脚木的核心函数而 为回调函数,回调凼数内容为向 中存储数据,主要内容就是获取当前 过期,根据的内容匹配到 对应的衣的字段。 基于 和 数据存储系统的性能测试 测试环境 测试主要需要一台系统的多核服务器、两台 系统的从服务器和一台 的并装有 软件的电脑测试软件为 和 测试准备 )准备 系统的多核服务器一台,并安装 和 ()然后在官网下载并进行安装,然后在安装日录下的 文件中的 过期事件配置 参数改为 代表了过期事件,配置完成后

...展开详情
试读 18P 论文研究-基于Redis和Mysql的存储系统的设计与实现 .pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
  • 至尊王者

    成功上传501个资源即可获取
关注 私信 TA的资源
上传资源赚积分,得勋章
最新推荐
论文研究-基于Redis和Mysql的存储系统的设计与实现 .pdf 44积分/C币 立即下载
1/18
论文研究-基于Redis和Mysql的存储系统的设计与实现 .pdf第1页
论文研究-基于Redis和Mysql的存储系统的设计与实现 .pdf第2页
论文研究-基于Redis和Mysql的存储系统的设计与实现 .pdf第3页
论文研究-基于Redis和Mysql的存储系统的设计与实现 .pdf第4页

试读结束, 可继续读2页

44积分/C币 立即下载 >