[发明专利]数据库操作请求分配方法、设备和系统有效
申请号: | 201310283562.7 | 申请日: | 2013-07-08 |
公开(公告)号: | CN103336721A | 公开(公告)日: | 2013-10-02 |
发明(设计)人: | 朱超;陈超;桂勇哲;代兵;王超 | 申请(专利权)人: | 北京奇虎科技有限公司;奇智软件(北京)有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F17/30 |
代理公司: | 北京市中伦律师事务所 11410 | 代理人: | 张思悦 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据库 操作 请求 分配 方法 设备 系统 | ||
技术领域
本发明涉及数据库技术,尤其涉及一种数据库操作请求分配方法、设备和系统。
背景技术
随着计算机网络的快速发展,出现了具有大量用户的网络应用,这些网络应用需要存储大量的用户数据以及相关数据。先前的单台数据存储服务器的数据存储方式已经不能满足当前网络应用的数据存储要求。目前数据库在使用中普遍采用主-从架构,一般来说,有一个主数据库服务器、多个从数据库服务器,所有的写操作都由主数据库服务器来执行,而从数据库服务器承担绝大部分的读操作。由于对于大多数应用而言,读操作的次数远远多于写操作,因此这种架构是有其合理性的。
然而,存在这样的问题:每个从数据库服务器一般都存储有相同的数据,那么为了确定具体的每个读操作请求应该由哪个从数据库服务器来执行,就需要制定负载均衡策略。如果负载均衡策略不合理,就会造成某些从数据库压力很大,而某些从数据库又存在空闲,从而无法合理利用数据库集群的系统资源。
目前,普遍采用的负载均衡策略是由应用编写人员自行控制负责均衡。应用在启动时分别建立到主数据库服务器和多个从数据库服务器的数据库连接,当要执行读操作时,由应用编写人员所编写的程序实现的负载均衡逻辑来决定把这次读操作分配给哪一个从数据库服务器(一般是采用轮询方式,即依次选取每个从数据库服务器),然后调用相应的从数据库服务器上的数据库连接,将操作请求发出去,并等待操作结果返回。
上述方案的主要缺点是负载均衡逻辑需要应用编写人员自己来编写和实现,而且在使用过程中也需要由应用编写人员自己来控制,这样应用的开发成本就会很高。其次,为了实现并应用负载均衡,应用编写人员还需要对数据库服务器集群有比较深入的了解,学习成本也很高。另外,在数据库集群架构发生变化、例如从数据库服务器数量增减或从数据库服务器性能变化时,内建在应用中的负载均衡逻辑也需要作出相应的修改以适应这种变化,这就使得应用的维护成本很高。
另一种方案是将所有从数据库服务器挂接于一台Linux虚拟服务器之后,由Linux虚拟服务器根据某种负载均衡算法,将应用发来的读操作请求导向某个从数据库服务器。此方案不需要应用编写人员关心负载均衡逻辑的具体实现算法,降低了开发成本。然而,各从数据库服务器的权重只能预先设置好,而不能根据各服务器的负载和网络等情况动态调整,因此,不能达到最优的系统资源利用率。
发明内容
鉴于上述问题,提出了本发明,以便提供一种克服上述问题或者至少部分地解决上述问题的数据库操作请求分配方法、设备和系统。
依据本发明的一个方面,提供了一种将数据库操作请求分配给多个数据库服务器之一的操作请求分配方法,其中每个数据库服务器具有代表该数据库服务器处理操作请求能力的相关联的权重,该方法包括步骤:接收对于数据库的操作请求;为该操作请求设置操作权重;在该多个数据库服务器中查询其相关联的权重满足为该操作请求设置的操作权重的数据库服务器;以及将该操作请求分配给所查询到的数据库服务器。
可选地,在根据本发明的实施例的操作请求分配方法中,在为该操作请求设置操作权重的步骤中,将该多个数据库服务器相关联的权重中的最大权重设置为该操作请求的操作权重。
可选地,在根据本发明的实施例的操作请求分配方法中,在该多个数据库服务器中查询其相关联的权重满足为该操作请求设置的操作权重的数据库服务器的步骤中,在该多个数据库服务器中依次查询,直到查询到其相关联的权重大于或者等于该操作权重的数据库服务器为止。
可选地,在根据本发明的实施例的操作请求分配方法中,在该多个数据库服务器中依次查询的步骤包括:根据该多个数据库服务器构造数据库服务器队列;在数据库服务器队列中,将针对上一次的操作请求所查询到的数据库服务器的下一个数据库服务器作为初始数据库服务器,开始依次进行查询;在针对上一次的操作请求所查询到的数据库服务器为数据库服务器队列中的最后一个数据库服务器的情况下,将数据库服务器队列中的第一个数据库服务器作为初始数据库服务器,开始依次进行查询。
可选地,根据本发明的实施例的操作请求分配方法还包括:在所查询到的数据库服务器为数据库服务器队列中的最后一个数据库服务器的情况下,降低要为下一个操作请求设置的操作权重;检查为下一个操作请求设置的操作权重是否为零,在该操作权重为零的情况下,将为下一个操作请求设置的操作权重设置为该多个数据库服务器相关联的权重中的最大权重。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司;奇智软件(北京)有限公司,未经北京奇虎科技有限公司;奇智软件(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310283562.7/2.html,转载请声明来源钻瓜专利网。