CN108664580A - 一种MongoDB数据库中细粒度的负载均衡方法及*** - Google Patents

一种MongoDB数据库中细粒度的负载均衡方法及*** Download PDF

Info

Publication number
CN108664580A
CN108664580A CN201810417905.7A CN201810417905A CN108664580A CN 108664580 A CN108664580 A CN 108664580A CN 201810417905 A CN201810417905 A CN 201810417905A CN 108664580 A CN108664580 A CN 108664580A
Authority
CN
China
Prior art keywords
data
balancing
collection
load
database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810417905.7A
Other languages
English (en)
Inventor
吕宁
杨平
陈彦萍
夏虹
***
苑庆涛
张恒山
田振洲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian University of Posts and Telecommunications
Original Assignee
Xian University of Posts and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xian University of Posts and Telecommunications filed Critical Xian University of Posts and Telecommunications
Priority to CN201810417905.7A priority Critical patent/CN108664580A/zh
Publication of CN108664580A publication Critical patent/CN108664580A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种MongoDB数据库中细粒度的负载均衡方法,其中,包括如下步骤:A***收集数据库集群状态信息和数据库中每个collection的数据存储状态、操作信息。

Description

一种MongoDB数据库中细粒度的负载均衡方法及***
技术领域
本发明涉及数据存储领域,尤其涉及一种MongoDB数据库中细粒度的负载均衡方法及***。
背景技术
海量数据的出现和新数据量的急速增长,给数据的存储和管理带来了新的挑战。传统的关系数据库受限于其自身的数据模型和***架构,难以满足这种需求。MongoDB数据库分布式架构和灵活的数据模型的出现和快速发展为这个问题的解决带来了机会。
在MongoDB数据库中,通常包含大量的、容量很大的集合(即, collection),单个collection中的数据分布到多个节点上。在这种架构下,负载均衡方法对***的性能影响非常大。设计良好的负载均衡方法,能有效的避免单节点中的瓶颈,充分发挥***的整体性能。在MongoDB数据库中,默认的负载均衡方法是,根据同一个 collection在不同节点上分布的数据的大小,来确定数据是否均衡。这一策略同时应用于数据库中的所有的collection。它忽略了数据的访问模式(如Zipfian,均匀分布,混合模式等),即热点数据的均衡问题。热点数据在集群节点的不均衡分布,会导致部分节点过载,而其余部分节点的资源没有得到充分利用,从而***整体性能无法充分利用。针对这种情况,许多研究提出了基于数据访问方式,进行负载均衡。
现有的这些负载均衡方法不足之处在于,都是针对MongoDB数据库中的所有collection:试图通过同一种均衡方法,使得具有不同访问模式的各个collection都能够实现负载均衡。这对负载均衡算法来说,是极大的挑战。
发明内容
本发明提出了一种MongoDB数据库中细粒度负载均衡方法及***。所谓细粒度,是指以数据库中的collection为粒度。本发明中的方法使得数据库中的每个collection都适合自身状态的负载均衡方法。该***通过持续监测、收集当前MongoDB数据库中各个collection 状态参数,分析这些collection的工作特征。数据库的工作特征主要包括数据本身的特征(如最频繁访问数据的分布方式:正态分布、 Zipfian分布、混合分布等),以及应用程序对数据库访问和操作的模式(如对数据库的应用是以读写操作为主,还是以写操作或者更新操作为主,以及操作频繁程度等)。基于数据库工作特征,该***可以在无人工干预的情况下,自动地、自适应地从预设的均衡方法集合中匹配出最优的负载均衡方法,并下发执行。新均衡方法可以立即执行,也可以视实际业务需要,在业务空闲时执行。所谓自动,是指数据库中collection工作特征的感知以及均衡方法的匹配,无需人为干预;所谓自适应,是指最优方法匹配过程中,基于数据库中每个 collection的工作特征,是该collection独立地匹配到最优的均衡方法。
本发明的目的在于通过实施该方案,数据库***可以针对不同的业务应用,自适应地采用最优均衡方法,减少和降低数据库维护成本和难度。
为了实现上述目的,本发明采用如下技术方案:
1.***收集数据库集群状态信息和数据库中每个collection 的数据存储状态、操作信息等。
2.基于步骤1收集的数据,判断是否需要实施负载均衡策略。数据库中各个collection的工作状态和工作模式体现为一系列的状态参数,通过将当前各个collection的参数集合与预设的均衡阈值进行比较,判断当前的数据分布是否处于均衡状态。如果低于阈值,则判定为均衡,无需进行数据迁移;反之,则需要进行某种负载均衡调整。
3.如果步骤2判定需要实施负载均衡方法,则进一步对采集的collection的特征与均衡方法集合中的预设策略的特征进行对比,以获得最优的均衡方法。这种匹配本质上是一种分类问题,采用各种现有的分类算法。具体实现来说,匹配的方式包括但不限于:采集到的collection参数集与负载均衡算法集合进行距离比对(如K-NN算法),选择相似性最高的那个策略进行均衡。
4.执行数据均衡策略,可以有两种执行模式,一种是立即执行,一种是延迟执行。前者适用于业务对后台数据库调整不敏感的场景,后者适用于业务对后台数据库敏感的场景。在后一种情况中,可以匹配好的新策略,在业务负载较轻时(如深夜)进行实施。
5.周期性地执行步骤1中数据库集群状态和各个collection 业务特征的采集。周期性进行负载均衡判定和如何进行负载均衡调整的决策,保障整个数据库***能够及时响应业务的变化,使数据库***始终保持在一种较为均衡的工作状态,以提供较好的工作性能。
6.执行数据均衡。根据算法选择模块指定的均衡算法,本模块负责数据均衡的实现,即通过调用MongoDB数据库相应的API,完成数据在各个节点之间的迁移。
与现有技术相比,本发明技术方案的有益效果是:
本发明提出的方法,是针对MongoDB数据库中的每个collection 的数据访问模式,自动地、自适应地选择使其具有最好性能的数据均衡策略。由于数据访问模式的不同,会使同一个数据库中的各个 collection采用不同的数据分布策略。这样,由于每个collection 单独地取得了最好的性能,这将有助于整个数据库***达到最好性能。
附图说明
图1为本发明的***结构图;
图2为实施负载均衡的流程图;
图3为负载均衡算法选择流程图;
图4为K-NN算法分类流程图。
具体实施方式
为了使本发明的目的、技术方案及效果更清楚,以下结合附图及实施例,对本发明进行进一步详细说明。
本发明实施例的一种MongoDB中细粒度的负载均衡方法及***,如图1所示,本发明中的***由监测模块S101、算法选择模块S102 和均衡执行模块S103组成,分别位于MongoDB数据库的Shard、Config Server和Mongos中。每个Shard是一个MongoDB数据库服务器(即, mongod进程)。Config Server存储着集群的metadata信息,包括每个服务器、每个Shard的基本信息和chunk(即,逻辑数据块)信息。 Mongos是集群的路由进程。监测模块负载监测MongoDB集群状态信息和collection的业务特征信息。算法选择模块负责利用收集到信息判断是否需要进行负载均衡和选择负载均衡算法。均衡执行模块负责具体实施负载均衡。
如图2所示,根据集群的状态信息和每个collection的业务特征信息,对每个collection的负载节点进行均衡调整,具体步骤如下:
S201、监测和收集数据库中每个collection中集群节点的工作状态、负载信息;
S202、对于收集到的负载信息,判断每个collection的负载是否处于均衡状态,如果是的话,转入步骤S201,否则转入步骤S203;
S203、当判定需要进行负载均衡时,从均衡算法集合中选择出最优算法;
S204、根据最优算法在对应的不均衡节点上执行数据均衡;
周期性地执行负载是否均衡的判定以及调整,直至每个 collection都处于均衡的工作状态。
如图3所示,当需要进行数据均衡时,将调用算法选择模块,包括以下步骤:
S301、输入集群的状态信息和待均衡collection的状态信息;
S302、根据收集到的状态信息,对其进行特征值计算预处理(如归一化);
S303、对待均衡信息预处理后构成待预测数据集合;
S304、调用可用的负载均衡算法集合。它是多种collection的业务特征和集群状态对应情形下的、可使collection负载均衡的算法集合。负载均衡算法包括但不限于如下方法:基于块大小的均衡方法,基于应用感知的均衡方法,基于应用访问模式的块大小均衡方法等。这部分的算法是可扩展的,用户可以根据实际情况配置相应的算法;
S305、算法选择器实现了从待均衡collection的信息到具体均衡策略的映射。可采用机器学习方法。以K-NN(K近邻)算法为例,使用K-NN算法选择最优数据均衡算法;
S306、通过步骤S305得到使该collection性能最优的均衡方案。
如图4所示,使用K-NN算法选取最优的负载均衡算法,包括以下步骤:
S401、输入通过步骤S302中特征值计算后得到的待预测数据集合φ;
S402、采用交叉验证方法选出最优k值;
S403、根据欧式距离度量方法,依次计算已知类别的均衡算法集合中的点与待预测数据集合φ中每个点之间的距离ρ(a,b);
其中,ai表示已知类别的均衡算法集合中的第i个点,bi表示待预测数据集合φ中的第i个点;
S404、对步骤S403中得到的距离按照递增次序排序;
S405、选取距离最小的k个点;
S406、统计前k个点所属均衡算法出现的频次;
S407、选取频次最多的均衡算法作为当前待预测数据集合的最优均衡;
最后,输出该算法及相应的配置信息,将这些信息保存在Config Server所在的节点。
执行负载均衡过程。算法选择模块将执行均衡策略的信息发送给均价执行模块,由其负责做具体执行。均衡执行模块位于Mongos中,作为mongos的子功能模块。具体包括以下步骤:
①、对Mongos加锁;
②、Mongos向源Shard(即Shard1)发送“moveChunk”命令;
③、Shard1通知目的Shard(即,Shard2);
④、Shard2确认需要移动chunk的Shardkey范围;
⑤、开始从Shard1到Shard2的数据复制;
⑥、数据传输完成时,Shard2向Config Server更新Shard信息;
⑦、Shard1删除已完成移动的数据;
⑧、Mongos释放均衡锁。

Claims (2)

1.一种MongoDB数据库中细粒度的负载均衡方法,其特征在于,包括如下步骤:
A***收集数据库集群状态信息和数据库中每个collection的数据存储状态、操作信息;
B基于步骤A收集的数据,判断是否需要实施负载均衡策略,数据库中各个collection的工作状态和工作模式体现为一系列的状态参数,通过将当前各个collection的参数集合与预设的均衡阈值进行比较,判断当前的数据分布是否处于均衡状态,如果低于阈值,则判定为均衡,无需进行数据迁移;反之,则需要进行某种负载均衡调整,
C如果步骤B判定需要实施负载均衡方法,则进一步对采集的collection的特征与均衡方法集合中的预设策略的特征进行对比,以获得最优的均衡方法,
D执行数据均衡策略,一种是立即执行,一种是延迟执行,前者适用于业务对后台数据库调整不敏感的场景,后者适用于业务对后台数据库敏感的场景,在后一种情况中,匹配好的新策略,在业务负载较轻时进行实施,
E周期性地执行步骤A中数据库集群状态和各个collection业务特征的采集,周期性进行负载均衡判定和如何进行负载均衡调整的决策,
F执行数据均衡,根据算法选择模块指定的均衡算法,本模块负责数据均衡的实现,即通过调用MongoDB数据库相应的API,完成数据在各个节点之间的迁移。
2.一种MongoDB数据库中细粒度的负载均衡***,采用了权利要求1所述的方法。
CN201810417905.7A 2018-05-04 2018-05-04 一种MongoDB数据库中细粒度的负载均衡方法及*** Pending CN108664580A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810417905.7A CN108664580A (zh) 2018-05-04 2018-05-04 一种MongoDB数据库中细粒度的负载均衡方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810417905.7A CN108664580A (zh) 2018-05-04 2018-05-04 一种MongoDB数据库中细粒度的负载均衡方法及***

Publications (1)

Publication Number Publication Date
CN108664580A true CN108664580A (zh) 2018-10-16

Family

ID=63781838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810417905.7A Pending CN108664580A (zh) 2018-05-04 2018-05-04 一种MongoDB数据库中细粒度的负载均衡方法及***

Country Status (1)

Country Link
CN (1) CN108664580A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110147353A (zh) * 2019-04-24 2019-08-20 深圳先进技术研究院 基于日志分析的MongoDB数据迁移监控方法及装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102227121A (zh) * 2011-06-21 2011-10-26 中国科学院软件研究所 基于机器学习的分布式缓存策略自适应切换方法及***
CN102436468A (zh) * 2011-09-14 2012-05-02 山东中创软件商用中间件股份有限公司 一种基于数据库集群的负载均衡方法及***
US20130024482A1 (en) * 2011-07-22 2013-01-24 Canon Kabushiki Kaisha Information processing apparatus, information processing method, and storage medium storing program
CN104579996A (zh) * 2013-10-17 2015-04-29 中国电信股份有限公司 一种集群负载均衡方法和***
CN104618406A (zh) * 2013-11-05 2015-05-13 镇江华扬信息科技有限公司 一种基于朴素贝叶斯分类的负载均衡算法
CN104978236A (zh) * 2015-07-07 2015-10-14 四川大学 一种基于多衡量指标的hdfs负载源宿节点选取方法
CN106095951A (zh) * 2016-06-13 2016-11-09 哈尔滨工程大学 基于负载均衡和查询日志的数据空间多维索引方法
CN107196869A (zh) * 2017-07-14 2017-09-22 北京知道创宇信息技术有限公司 基于主机实际负载的自适应负载均衡方法、设备和***
CN107391633A (zh) * 2017-06-30 2017-11-24 北京奇虎科技有限公司 数据库集群自动优化处理方法、装置及服务器
CN107948293A (zh) * 2017-11-29 2018-04-20 重庆邮电大学 一种基于MongoDB负载均衡优化***及方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102227121A (zh) * 2011-06-21 2011-10-26 中国科学院软件研究所 基于机器学习的分布式缓存策略自适应切换方法及***
US20130024482A1 (en) * 2011-07-22 2013-01-24 Canon Kabushiki Kaisha Information processing apparatus, information processing method, and storage medium storing program
CN102436468A (zh) * 2011-09-14 2012-05-02 山东中创软件商用中间件股份有限公司 一种基于数据库集群的负载均衡方法及***
CN104579996A (zh) * 2013-10-17 2015-04-29 中国电信股份有限公司 一种集群负载均衡方法和***
CN104618406A (zh) * 2013-11-05 2015-05-13 镇江华扬信息科技有限公司 一种基于朴素贝叶斯分类的负载均衡算法
CN104978236A (zh) * 2015-07-07 2015-10-14 四川大学 一种基于多衡量指标的hdfs负载源宿节点选取方法
CN106095951A (zh) * 2016-06-13 2016-11-09 哈尔滨工程大学 基于负载均衡和查询日志的数据空间多维索引方法
CN107391633A (zh) * 2017-06-30 2017-11-24 北京奇虎科技有限公司 数据库集群自动优化处理方法、装置及服务器
CN107196869A (zh) * 2017-07-14 2017-09-22 北京知道创宇信息技术有限公司 基于主机实际负载的自适应负载均衡方法、设备和***
CN107948293A (zh) * 2017-11-29 2018-04-20 重庆邮电大学 一种基于MongoDB负载均衡优化***及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
XIAOLIN WANG ET AL.: "Research on Improvement of Dynamic Load Balancing in MongoDB", 《2013 IEEE 11TH INTERNATIONAL CONFERENCE ON DEPENDABLE, AUTONOMIC AND SECURE COMPUTING》 *
冯超政 等: "基于冷热数据的MongoDB自动分片机制", 《计算机工程》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110147353A (zh) * 2019-04-24 2019-08-20 深圳先进技术研究院 基于日志分析的MongoDB数据迁移监控方法及装置

Similar Documents

Publication Publication Date Title
CN101888316B (zh) 根据应用场景特征参数控制服务器能耗的方法及装置
CN110018799A (zh) 一种存储池pg主确定方法、装置、设备及可读存储介质
CN106446959A (zh) 一种云计算资源动态匹配方法及装置
CN109104731A (zh) 小区场景类别划分模型的构建方法、装置和计算机设备
CN106713377B (zh) 分布式数据库负载调平的方法和装置
CN108717460A (zh) 一种在区块链中达成共识的方法及装置
CN102624865A (zh) 集群负载预测方法及分布式集群管理***
CN109976901A (zh) 一种资源调度方法、装置、服务器及可读存储介质
CN108052010A (zh) 智能电器自调节的方法、装置、计算机设备及存储介质
CN112020098A (zh) 负荷均衡方法、装置、计算设备及计算机存储介质
CN116627241A (zh) 一种优化服务器能耗的方法、***、设备和存储介质
Zhai et al. A two-layer algorithm based on PSO for solving unit commitment problem
CN111461284A (zh) 数据离散化方法、装置、设备及介质
CN110707771B (zh) 基于中心漂移聚类分析的电池组主动均衡方法
CN110120892B (zh) 基于改进的萤火虫算法的sdn多控制器部署方法及***
CN108664580A (zh) 一种MongoDB数据库中细粒度的负载均衡方法及***
CN105914752B (zh) 基于快速搜索与密度峰值聚类的主导节点选择方法
CN117255396A (zh) 根据基站能耗调整ai算力硬件计算资源分配的方法和装置
CN105896547B (zh) 一种风电接入下的大电网分级电压控制方法
CN105740077A (zh) 一种适用于云计算的任务分配方法
CN111146815B (zh) 一种智能配电网分布式发电规划配置方法
CN103096380B (zh) 无线接入点负载均衡优化方法
CN111382196B (zh) 分布式账务处理方法及***
CN107316056B (zh) 一种网络安防等级自动化评定***、自动评定方法
CN110647381B (zh) 一种虚拟机资源均衡和部署优化方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20181016

WD01 Invention patent application deemed withdrawn after publication