一种基于MongoDB的分片存储方法与流程

文档序号:15982298发布日期:2018-11-17 00:28阅读:149来源:国知局
本发明涉及一种基于高稳定性、高并发mongodb的分片存储方法。
背景技术
:目前我国各地的行政服务中心还停留在“每个部门分别到行政大厅设置一个业务办理窗口”的初级阶段,这种方式存在着行政服务中心窗口数量多、办事流程长、信息不共享等问题。为了解决现有问题,浙江政府提出了“最多跑一次”的改革。“一个窗口受理”,指将行政服务中心前台变为受理窗口,受理后的分类、转交、办理等流程在后台完成;能办结的当场办结,不能当场办结的等办结后证照快递送达。这项改革是“最多跑一次”改革的基础之一。将各个进驻行政服务中心的事项全部集成在“一窗受理平台”,这种常常会出现并发量大的平台将面临着处理事项的速度问题,以及数据的安全稳定性问题(机器故障导致的数据丢失、系统访问不到数据问题)。技术实现要素:本发明的目的在于提供一种基于mongodb的分片存储方法,用于提供一种大数据量、高效、高稳定性、高并发、安全可靠的数据库存储机制,以解决大并发量平台的速度问题、数据的安全稳定性问题,可在一窗受理云平台上,支持大并发量、安全可靠的事项处理,即数据库读取或写入。本发明一种基于mongodb的分片存储方法,包括应用节点、多个路由节点、分片存储服务器集群和配置节点;其中该应用节点包括一窗受理云平台应用系统和mongodb驱动,该路由节点是mongos路由服务器,该分片存储服务器集群包括多个安装有mongodb的分片存储服务器,该配置节点包括多个分别预置有整个存储机制的配置文件的配置服务器;存储于分片存储服务器集群的元数据,包含了分片存储服务器集群数据集到各分片存储服务器的映射关系,查询路由就是通过这些元数据到特定的分片存储服务器上执行指定的数据操作;该mongos路由服务器是一窗受理云平台应用系统的连接入口,是所有来自一窗受理云平台应用系统的数据请求的分发中心,负责把对应的数据请求转发到对应的分片存储服务器上;配置节点维护配置文件,当配置文件内容发生变更时,配置节点会通知mongos路由服务器更新至最新状态;搭建配置服务器副本集,搭建分片存储服务器副本集,配置mongos路由服务器副本集,在分片存储服务器副本集配置好以后,将mongos路由服务器和片存储服务器集群中所有的分片存储服务器关联起来,启用分片存储,通过片键使分片存储生效;该一窗受理云平台应用系统通过mongodb驱动访问mongos路由服务器读取或写入数据;mongos路由服务器启动时,则从配置节点加载预置于配置服务器的关于整个存储机制的配置文件,并根据配置文件将来自一窗受理云平台应用系统的数据请求转发到对应的分片存储服务器上;应用系统对数据库写入数据时,通过配置的片键智能地平均分配到多个分片存储服务器中。所述的配置服务器配置副本集的步骤如下所示:创建分片存储服务器集群根目录mongodbshard,在根目录mongodbshard下创建分片存储服务器集群的配置目录conf,在配置目录conf添加并编辑配置文件,然后用./mongod-f/mongodbshard/conf/config.conf命令分别启动配置节点中的配置服务器。所述的分片存储服务器配置副本集的步骤如下所示:分别在配置目录conf下创建并编辑分片存储配置文件shard.config,然后用./mongod-f/mongodbshard/conf/shard1.conf命令分别启动各分片存储服务器的副本集。所述的mongos路由服务器配置副本集的步骤如下所示:分别在配置目录conf下创建并编辑路由配置文件mongos.config,然后用./mongos-f/mongodbshard/conf/mongos.conf命令启动mongos路由服务器。本发明的一窗受理云平台应用系统仅通过连接mongos路由服务器读写数据,mongos路由服务器从配置节点的配置服务器加载配置文件,从而实现对分片存储服务器副本集进行读写,将配置服务器、分片存储服务器、mongos路由服务器搭建成副本集,且配置节点所有的配置服务器都保存有整个存储机制的配置文件,基于上述存储机制,对数据的安全性、完整性、稳定性、可靠性等方面提供了保证,可以提高数据库的性能,应用系统对数据库写入数据时,通过配置的片键智能地平均分配到三个分片存储服务器中,实现分片存储,提高了性能。附图说明图1为本发明的应用系统调用mongodb分片集群过程示意图。以下结合附图和实施例对本发明作进一步详述。具体实施方式如图1所示,本发明一种基于mongodb的分片存储方法,包括应用节点、多个路由节点、分片存储服务器集群和配置节点;其中应用节点包括一窗受理云平台应用系统和mongodb驱动,该路由节点是mongos路由服务器,该分片存储服务器集群包括多个安装有mongodb的分片存储服务器,该配置节点包括多个分别预置有整个存储机制的配置文件的配置服务器;该一窗受理云平台应用系统通过mongodb驱动访问mongos路由服务器读取或写入数据;mongos路由服务器启动时,则从配置节点加载预置于配置服务器的配置文件,并根据配置文件将来自一窗受理云平台应用系统的数据请求转发到对应的分片存储服务器上,配置节点维护配置文件,当配置文件内容发生变更时,配置节点会通知mongos路由服务器更新至最新状态,具体包括如下步骤:步骤1、搭建配置服务器副本集存储于分片存储服务器集群的元数据,包含了分片存储服务器集群数据集到各分片存储服务器的映射关系,查询路由就是通过这些元数据到特定的分片存储服务器上执行指定的数据操作;创建分片存储服务器集群根目录mongodbshard,在根目录mongodbshard下创建分片存储服务器集群的配置目录conf,在配置目录conf添加并编辑config.conf文件(配置文件),然后用./mongod-f/mongodbshard/conf/config.conf命令分别启动配置节点中的配置服务器;每台配置服务器都操作以上的配置步骤;以下为配置文件内容:##配置文件内容pidfilepath=/mongodbshard/config/log/configsrv.piddbpath=/mongodbshard/config/datalogpath=/mongodbshard/config/log/congigsrv.loglogappend=truebind_ip=0.0.0.0port=21000fork=trueconfigsvr=true#副本集名称replset=configs#设置最大连接数maxconns=20000启动配置服务器后,登录任意一台配置服务器,执行初始化配置服务器副本集的操作,如下所示:步骤2、搭建分片存储服务器副本集配置第一个分片存储服务器的副本集,该分片存储服务器是实际存储数据的服务器,完成第一个分片存储服务器的副本集配置后,继续依次配置其他分片存储服务器副本集,所述的分片存储配置如下:分别在配置目录conf下创建并编辑分片存储配置文件shard.config,然后用./mongod-f/mongodbshard/conf/shard1.conf命令分别启动各分片存储服务器的副本集;该分片存储配置文件shard1.conf的内容如下:#配置文件内容pidfilepath=/mongodbshard/shard1/log/shard1.piddbpath=/mongodbshard/shard1/datalogpath=/mongodbshard/shard1/log/shard1.loglogappend=truebind_ip=0.0.0.0port=27001fork=true#打开web监控httpinterface=truerest=true#副本集名称replset=shard1shardsvr=true#设置最大连接数maxconns=20000启动第一个分片存储服务器副本集后,登录任意一台分片存储服务器,执行以下分片存储服务器副本集的初始化操作:步骤3、配置路由服务器副本集该mongos路由服务器是一窗受理云平台应用系统的连接入口,是所有来自一窗受理云平台应用系统的数据请求的分发中心,负责把对应的数据请求转发到对应的分片存储服务器上;分别在配置目录conf下创建并编辑路由配置文件mongos.config,然后用./mongos-f/mongodbshard/conf/mongos.conf命令启动mongos路由服务器;该路由配置文件mongos.conf的内容如下:#内容pidfilepath=/mongodbshard/mongos/log/mongos.pidlogpath=/mongodbshard/mongos/log/mongos.loglogappend=truebind_ip=0.0.0.0port=20000fork=true#监听的配置服务器,只能有1个或者3个configs为配置服务器的副本集名字configdb=configs/a机器地址:21000,b机器地址:21000,c机器地址:21000#设置最大连接数maxconns=20000步骤4、启用分片存储,并指定数据库和集合分片生效。执行以下命令将mongos路由服务器和片存储服务器集群中所有的分片存储服务器关联起来,启用分片存储;./mongo--port20000#使用admin数据库useadmin#串联路由服务器与分配副本集sh.addshard(″shard1/a机器地址:27001,b机器地址:27001,c机器地址:27001″)sh.addshard(″shard2/a机器地址:27002,b机器地址:27002,c机器地址:27002″)sh.addshard(″shard3/a机器地址:27003,b机器地址:27003,c机器地址:27003″)#查看集群状态sh.status();上面的分片存储服务器副本集配置好以后,还必须指定分片存储服务器副本集里的数据库和需要分片的集合以及片键使分片存储生效。以下是一个例子,供参考:./mongo--port20000mongos>useadmin;#指定testdb库分片生效mongos>db.runcommand({enablesharding:″testdb″});//测试{″ok″:1}#指定数据库里需要分片的集合和片键,片键为id且唯一mongos>db.runcommand({shardcollection:″testdb.table1″,key:{id:1},unique:true});//测试{″collectionsharded″:″testdb.table1″,″ok″:1}本发明的一窗受理云平台应用系统仅通过连接mongos路由服务器读写数据,mongos路由服务器从配置节点的配置服务器加载配置文件,从而实现对分片存储服务器副本集进行读写,将mongos路由服务器搭建成副本集,因为如果只有一台mongos路由服务器,万一机器死机了,那么应用系统就读取不到数据,这样保证了系统的安全稳定性。本发明的配置节点所有的配置服务器都保存有整个存储机制的配置文件,如果只有一个的话,机器死机了,那么mongos路由服务器就读取不到配置文件,也就导致整个应用系统崩溃,所以配置节点配置服务器也要搭建成副本集的形式。本发明搭建多个分片存储副本集,并且将分片存储副本集搭建在不同物理机器上。首先多个分片存储副本集是为了把数据分开存储,以降低数据数量级(如1000w的数据分十个分片那么每个分片约只存储100w的数据),从而提高性能;其次将每个分片存储副本集在不同机器上搭建副本集,这样可以保证数据的安全性。如上面的搭建,每个分片副本集都搭建在a、b、c三台物理机器上,而不是将分片副本集单独搭在一个物理机器上,这样的好处是比如有1000w的数据经过分片后,在三个分片副本集上分别存储着不同的约333w条数据,同时分片副本集里面的每个副本都有着相同的333w条数据,这样就保证每台机器上都有一份完整的数据,不至于因为一台机器彻底毁坏之后造成数据丢失,从而保证了系统数据的完整性、安全性。基于以上的搭建机制,对数据的安全性、完整性、稳定性、可靠性等方面提供了保证,并且基于此机制可以提高数据库的性能,应用系统对数据库的各种操作由路由服务器进行智能调度。应用系统对数据库写入数据时,通过配置的片键智能地平均分配到三个分片存储服务器中(比如100万条数据,三个分片存储服务器,每条只存在其中一个分片存储服务器,100万条数据平均分配到三个分片存储服务器),相当于将写入数据库的压力分散到三台机器上,从而提高性能;然后从数据库读取数据的时候,由于每个分片存储器都是副本集,而且这个副本集是分散在三台机器上,所以读取压力也分散到三台机器上,提高了性能。本发明的重点在于:通过mongodb搭建一个高稳定性、高并发的分片存储集群机制,通过使用分片存储集群来保证大并发量的数据库操作,以及通过该机制可以最大限度的保证数据的安全可靠性,在一窗受理云平台中通过使用该机制,解决了平台的数据量大、并发量大、响应速度、数据安全等方面的问题。以上所述,仅是本发明实施例而已,并非对本发明的机制范围作任何限制,故凡是依据本发明的机制实质对以上实施例所作的任何细微修改、等同变化与修饰,均仍属于本发明技术方案的范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1