本发明涉及数据库领域,尤其涉及在云服务中关系数据库削峰方法及系统。
背景技术:
1、关系数据库是目前应用广泛的数据库,很多企业包括电商都在使用关系数据库,关系数据库的性能直接关乎整个网站的性能,尤其是在大并发量的时候,例如秒杀、抢购等。现在有很多手段提高关系数据库的速度,最为常见的是增加缓存服务器,但是对于频繁写的情况,缓存服务器需要不断更新,反而会增加缓存服务器的负担。此外,关系数据库的读写分离也是一种常用的技术用于缓解对关系数据库的读写的压力,所谓读写分离是指读操作是从关系数据库集群的从节点读取,而写操作是写到主节点,当发生写操作后,主节点再将数据发送到从节点,以此保障关系数据库集群的数据一致性。很多企业在云上部署应用,如果设置一个关系数据库的主节点,当高并发写时,主节点的数据库也会有很大压力,则将成为用户访问的瓶颈。如何能够主节点上关系数据库的写操作能力成为了提高网站性能的关键。
技术实现思路
1、针对云服务器中关系数据库集群难以承受突然的高并发写入请求的问题,本发明提供了一种云服务中关系数据库削峰方法,所述方法包括以下步骤:
2、获取关系数据库集群中从节点从主节点接收数据的数据量,当所述数据量大于等于阈值时,激活负载均衡模块,所述均衡负载模块从所述从节点中选取一个节点作为主副节点,当所述主副节点选取成功后,暂停所述主副节点和其他节点的数据同步;
3、当所述关系数据库集群接收到写操作时,负载均衡模块根据所述写操作的内容确定写操作写入到的目的节点,若所述目标节点为主节点,则写入到主节点中,若所述目标节点为主副节点,则在所述均衡负载模块中标记所述内容,然后将写入的内容加载到memcache中,设置所述内容在memcache淘汰方式为通知方式,并将所述内容写入到所述主副节点。
4、优选地,所述方法还包括:在所述数据量降低到小于所述阈值时,由所述负载均衡模块向所述memcache发出通知,所述memcache根据所述通知允许memcache淘汰所述内容;并根据所述负载激活模块中标记的内容将主副节点的数据写入到主节点,写入完成后,所述负载均衡模块变为未激活状态,主副节点重新变为从节点,并开启所述主节点和从节点的数据同步。
5、优选地,所述通知方式,具体为:所述memcache在接收到所述负载均衡模块的通知信息后,才允许在memcache淘汰所述内容。
6、优选地,所述均衡负载模块从所述从节点中选取一个节点作为主副节点,具体为:
7、所述负载均衡模块记录主节点向每个从节点每次进行数据同步时同步用时,计算每个从节点在预设时间内所述同步用时的平均值;获取每个从节点预设时间内处理读操作的次数;根据所述平均值和所述次数从所有从节点中确定一个主副节点。
8、优选地,所述根据所述平均值和所述次数从所有从节点中确定一个主副节点,具体为:
9、选取所有从节点的所述平均值的最大值,将每个从节点的所述平均值与所述最大值的比值作为权重,将所述权重和所述次数的乘积的最小值对应的节点作为主副节点;或者,
10、选取所有从节点的所述次数的最大值,将每个从节点的所述次数与所述最大值的比值作为权重,将所述权重和所述平均值的乘积的最小值对应的节点作为主副节点。
11、另外,本发明还提供了一种云服务中的关系数据库削峰系统,所述系统包括负载均衡模块,所述系统还包括以下模块:
12、判断及选取模块,用于获取关系数据库集群中从节点从主节点接收数据的数据量,当所述数据量大于等于阈值时,激活负载均衡模块,所述均衡负载模块从所述从节点中选取一个节点作为主副节点,当所述主副节点选取成功后,暂停所述主副节点和其他节点的数据同步;
13、削峰模块,用于当所述关系数据库集群接收到写操作时,负载均衡模块根据所述写操作的内容确定写操作写入到的目的节点,若所述目标节点为主节点,则写入到主节点中,若所述目标节点为主副节点,则在所述均衡负载模块中标记所述内容,然后将写入的内容加载到memcache中,设置所述内容在memcache淘汰方式为通知方式,并将所述内容写入到所述主副节点。
14、优选地,所述系统还包括数据同步模块,所述数据同步模块,用于在所述数据量降低到小于所述阈值时,由所述负载均衡模块向所述memcache发出通知,所述memcache根据所述通知允许memcache淘汰所述内容;并根据所述负载激活模块中标记的内容将主副节点的数据写入到主节点,写入完成后,所述负载均衡模块变为未激活状态,主副节点重新变为从节点,并开启所述主节点和从节点的数据同步。
15、优选地,所述通知方式,具体为:所述memcache在接收到所述负载均衡模块的通知信息后,才允许在memcache淘汰所述内容。
16、优选地,所述均衡负载模块从所述从节点中选取一个节点作为主副节点,具体为:
17、所述负载均衡模块记录主节点向每个从节点每次进行数据同步时同步用时,计算每个从节点在预设时间内所述同步用时的平均值;获取每个从节点预设时间内处理读操作的次数;根据所述平均值和所述次数从所有从节点中确定一个主副节点。
18、优选地,所述根据所述平均值和所述次数从所有从节点中确定一个主副节点,具体为:
19、选取所有从节点的所述平均值的最大值,将每个从节点的所述平均值与所述最大值的比值作为权重,将所述权重和所述次数的乘积的最小值对应的节点作为主副节点;或者,
20、选取所有从节点的所述次数的最大值,将每个从节点的所述次数与所述最大值的比值作为权重,将所述权重和所述平均值的乘积的最小值对应的节点作为主副节点。
21、最后,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上所述的方法。
22、针对云服务中,高并发导致关系数据库成为web等访问的瓶颈的问题,现有的分布式关系数据库集群,单个主服务器作为数据库写入节点难以承受短时间内大量写入的数据。本发明在从节点从主节点接收数据的数据量大于或者等于阈值时,开启新的写节点,根据所述写操作的内容确定写操作写入到的目的节点,若所述目标节点为主节点,则写入到主节点中,若所述目标节点为主副节点,则在所述均衡负载模块中标记所述内容,然后将写入的内容加载到memcache中,设置所述内容在memcache淘汰方式为通知方式,并将所述内容写入到所述主副节点,在所述数据量降低到小于所述阈值时,由所述负载均衡模块向所述memcache发出通知,所述memcache根据所述通知允许memcache淘汰所述内容;并根据所述负载激活模块中标记的内容将主副节点的数据写入到主节点,写入完成后,所述负载均衡模块变为未激活状态,主副节点重新变为从节点,并开启所述主节点和从节点的数据同步。利用memcache和主副节点缓冲了一部分写入分布式数据库请求,减轻主服务器压力。
1.一种云服务中关系数据库削峰方法,其特征在于,所述方法包括以下步骤:
2.如权利要求1所述的方法,其特征在于,所述方法还包括:在所述数据量降低到小于所述阈值时,由所述负载均衡模块向所述memcache发出通知,所述memcache根据所述通知允许memcache淘汰所述内容;并根据所述负载激活模块中标记的内容将主副节点的数据写入到主节点,写入完成后,所述负载均衡模块变为未激活状态,主副节点重新变为从节点,并开启所述主节点和从节点的数据同步。
3.如权利要求1所述的方法,其特征在于,所述通知方式,具体为:所述memcache在接收到所述负载均衡模块的通知信息后,才允许在memcache淘汰所述内容。
4.如权利要求1所述的方法,其特征在于,所述均衡负载模块从所述从节点中选取一个节点作为主副节点,具体为:
5.如权利要求4所述的方法,其特征在于,所述根据所述平均值和所述次数从所有从节点中确定一个主副节点,具体为:
6.一种云服务中的关系数据库削峰系统,其特征在于,所述系统包括负载均衡模块,所述系统还包括以下模块:
7.如权利要求6所述的系统,其特征在于,所述系统还包括数据同步模块,所述数据同步模块,用于在所述数据量降低到小于所述阈值时,由所述负载均衡模块向所述memcache发出通知,所述memcache根据所述通知允许memcache淘汰所述内容;并根据所述负载激活模块中标记的内容将主副节点的数据写入到主节点,写入完成后,所述负载均衡模块变为未激活状态,主副节点重新变为从节点,并开启所述主节点和从节点的数据同步。
8.如权利要求6所述的系统,其特征在于,所述均衡负载模块从所述从节点中选取一个节点作为主副节点,具体为:
9.如权利要求8所述的系统,其特征在于,所述根据所述平均值和所述次数从所有从节点中确定一个主副节点,具体为:
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行如权利要求1-5任一项所述的方法。