CN109634746B - 一种web集群缓存的利用***及优化方法 - Google Patents
一种web集群缓存的利用***及优化方法 Download PDFInfo
- Publication number
- CN109634746B CN109634746B CN201811481419.8A CN201811481419A CN109634746B CN 109634746 B CN109634746 B CN 109634746B CN 201811481419 A CN201811481419 A CN 201811481419A CN 109634746 B CN109634746 B CN 109634746B
- Authority
- CN
- China
- Prior art keywords
- value
- server
- target web
- node
- database table
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques 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
本发明公开了一种web集群缓存的利用***,由负载均衡服务器、数据分析服务器和web集群服务器组成,所述web集群服务器由多个目标web服务器构成。本发明的web集群缓存的利用***可有效解决现有的web集群缓存的***存在的当某一时间段热点数据的请求列表产生变化,根据数据分析服务器当下一次的分析来指导web服务器进行数据库表缓存,会导致web服务器缓存的内容频繁更新,缓存命中率降低,***产生波动的问题。
Description
技术领域
本发明涉及计算机网络技术领域,特别涉及一种web集群缓存的利用***及优化方法。
背景技术
随着云计算与Web 2.0的进一步发展,许多企业或组织时常会面对更多的需求:大量的并发用户访问、每秒数以千计的并发事务处理、灵活的弹性与可伸缩性、低延时等,传统事务型应用开始向极限事务处理型应用转变。集群式缓存作为一种关键的极限事务处理技术,可为事务型应用提供高吞吐率、低延时的技术解决方案。其延迟写机制可提供更短的响应时间,同时极大地降低数据库的事务处理负载,分阶段事件驱动架构,可以支持大规模、高并发的事务处理请求。此外,集群式缓存在内存中管理事务并提供数据的一致性保障,采用数据复制技术实现高可用性,具有较优的扩展性与性能组合。
发明内容
本发明的目的是基于背景技术,提供一种web集群缓存的利用***及优化方法,解决现有技术中,随着***业务的变化和增加,用户请求的热点数据存在发生变化的可能,当某一时间段热点数据的请求列表产生变化,根据数据分析服务器当下一次的分析来指导web服务器进行数据库表缓存,会导致web服务器缓存的内容频繁更新、缓存命中率降低、***产生波动的技术问题。
为了达到上述的技术效果,本发明采取以下技术方案:
一种web集群缓存的利用***,由负载均衡服务器、数据分析服务器和web集群服务器组成,所述web集群服务器由多个目标web服务器构成;
所述数据分析服务器用于记录和统计用户请求的日志信息,根据历史热点记录和节点概率链表得到包含需访问的数据库表和目标服务器链表两个字段的分类标准;负载均衡服务器用于根据数据分析服务器确定的分类标准确定用户请求的目标web服务器,并将用户请求转发到对应的目标web服务器,并通过移动指针遍历备选目标web服务器的链表集合,实现负载的均衡;目标web服务器用于接收负载均衡服务器转发的用户请求,并将具有较高用户请求量的数据库表缓存到内存中,在接收到相应的用户请求时则直接从内存中读取数据库表中对应的数据生成结果并返回。
同时,本发明还公开了一种Web集群缓存的优化方法,通过上述的一种web集群缓存的利用***实现,所述Web集群缓存的优化方法具体包括数据预处理流程及请求转发处理流程,所述数据预处理流程包括完成用户请求的记录、统计和分析,在用户请求对应的目标web服务器上提前加载需要访问的数据库表,所述请求转发处理流程包括通过负载均衡服务器对比接收的用户请求与分类标准,确定请求对应转发的目标web服务器并完成请求的转发,再由目标web服务器接收用户请求并处理,最后将结果返回。
进一步地,所述数据预处理流程具体包括以下步骤:
S1:根据***的业务变化快慢的特性设定节点概率的衰减过程:
S1.1根据***特点确定初始值Ninit:Ninit=N0e-al
其中,Ninit为衰减概率初始值,代表当前时间段的节点在整个历史记录中的重要程度,N0=1,l决定初始值的偏移量,a为衰减系数,表示随着时间变化历史对于未来预测的影响的大小变化,a和l的值根据***的业务变化快慢的特性自行定义;
S1.2根据完成值Nfinish的定义公式:Nfinish=Nkf=N0e-a(m+l),根据定义的参数a和l,依次增加k值,计算每个节点的完成值Nfinish,Nfinish为衰减概率完成值,代表了节点对预测具有指导意义的最小概率,当Nfinish=Nkf=N0e-a((k+1)T+l)<Nmin时,停止计算,此时,k的值即为概率链表和历史热点数据集合链表的长度;其中,Nmin是Nfinish的一个参考值,用来表示历史节点对预测的概率权重的下限,m表示时间间隔单位为秒,若预设的时间间隔为T,则m=kT,k为整数。
S1.3根据步骤S1.2确定的k值,分别计算1~k范围内整数节点对应的节点概率,计算公式为:Nkf=N0e-a(kT+l),将节点概率按照从小到大的顺序存储到节点概率链表中;
S2.数据分析服务器保存预设时间段内用户请求数据库的日志记录,每条请求日志均需记录用户请求需访问的数据库表信息;根据历史日志记录确定用户请求的分类,将访问相同数据库表的用户请求划分为一类,根据二八原则得到初始热点数据表的集合;
S3.遍历k次热点数据的链表记录,结合步骤S1得到的节点概率链表,构造key-value的键值对:如果key值不存在,取节点概率链表对应节点的值赋值给value;如果key值已经存在,使用在value值得基础上加上节点的概率值,将map按照value值进行降序排序,按照排序选择value值之和不超过value值总和80%的数据库表作为热点集合。
进一步地,所述步骤S1.2中,Nmin=0.2。
进一步地,所述请求转发处理流程具体包括以下步骤:
S4.根据步骤S3得到的热点数据表集合和历史的分类标准,对比热点数据表集合和历史的分类标准中的数据表,筛选出需要更新的分类标准和新增的热点数据表,将更新的分类标准中对应的目标web服务器标号放回未分配的集合,对新增的热点数据表根据单位时间内请求量和目标web服务器的传输容量计算需要的目标web服务器数量,从未分配列表选择对应数量的目标web服务器构造新的分类标准;
S5:目标web服务器接收数据分析服务器转发的分类请求,确定需要加载的数据库表的名称,从数据库加载表的内容到内存中;
S6:负载均衡服务器接收用户请求,对比数据分析服务器的分类标准确定用户请求所属的分类,负载均衡服务器从分类标准的目标服务器集合中通过指针指向的节点确定目标服务器的编号;
S7:目标web服务器接收负载均衡服务器转发的用户请求,并对请求的内容进行处理,从内存中获取对应的数据作为结果返回。
进一步地,所述步骤S2具体包括以下步骤:
S2.1数据分析服务器保存预设时间段内用户请求数据库的日志记录,每条请求日志均需记录用户请求需访问的数据库表信息;
S2.2将访问相同数据库表的用户请求划分为一类,统计各个分类的用户请求量,按照请求量从大到小的顺序进行排序,对排序在前20%的分类进行定义,生成包含编号以及数据库表的分类标准即热点数据库表集合;
S2.3将步骤S2.2得到的热点数据库表集合加入到热点数据历史记录的双向循环链表,检查双向循环链表的长度,如果链表长度不大于k,不再进行操作;如果链表的长度大于k,则删除热点数据历史记录的双向循环链表的下一个节点。
进一步地,所述步骤S3具体包括以下步骤:
S3.1获取热点数据表历史记录的指针指向的当前节点的数组集合,将指针移动的次数记录到变量i,i初始值为1,从数组集合中取出第一个数据库表的名字,将数据库表名作为key值;同时,取节点概率链表中下标为k-1的节点概率作为value值,将key-value键值对存储到map集合中,按此依次取出数组集合中剩下的数据库表名字,将对应的key-value存储到map集合中;
S3.2在继续移动指针之前,先判断节点概率链表的下一个热点数据集合是否为空,如果下一个热点数据集合不为空,移动热点数据表历史记录的指针,否则,集合遍历完毕;
S3.3从热点数据库表和概率链表中分别取出任意i阶段的数据库表明和对应的概率值,在进行map集合的赋值操作时,先获取当前数据库表名在map集合中是否已经存在值,如果已经存在,则将value值与节点概率值的和作为新的value保存到map集合中,如果不存在,则将节点概率值作为value存储到map集合中;
S3.4热点数据库表和概率链表遍历完毕后,将map集合按照value值进行降序排序,最后,选择value值之和最接近但不超过value值总和的80%的数据表集合作为缓存的热点数据表集合。
进一步地,所述步骤S4具体包括以下步骤:
S4.1从历史的分类标准中取出数据库表名,查询取出的数据库表名在热点数据表集合中是否存在,如果存在,移除map集合中对应key-value键值对;如果不存在,删除对应的分类标准,并将目标web服务器的集合放回到未分配的服务器列表中;
S4.2从map集合中取出数据库表名,根据记录的数据库表对应的请求量,为分类请求指定足够数量的目标web服务器,根据目标web服务器的服务能力和单位时间内该分类的用户请求量计算出目标web服务器的数量,即服务器的服务能力大于用户请求的服务,其中,目标web服务器的服务能力包括服务器的处理能力和传输流量,将服务器的编号作为集合以循环链表的形式写入分类标准的目标服务器字段;
S4.3根据目标web服务器字段的定义,将各个分类标准发送到对应的单个或者多个目标web服务器上,以缓存分类对应的数据库表,然后将所有的分类标准发送到负载均衡服务器。
进一步地,所述步骤S6具体包括以下步骤:
S6.1负载均衡服务器接收并存储数据分析服务器发送的所有分类标准,在每个分类的目标web服务器字段的循环链表中任意选择一个节点,使指针指向这个节点;
S6.2在接收用户请求时,对比分类标准以确定用户请求所属的分类,并执行如下转发策略:
S6.2.1获取指针指向节点的编号,将用户请求转发到编号所代表的目标web服务器上,之后,移动指针到下一个节点位置;
S6.2.2在分类标准中新增一个字段,用于存放cpu占用率超过预设占用率阈值的目标web服务器编号的集合,
S6.2.3监控目标web服务器字段中目标web服务器的cpu占用率,一旦目标web服务器的cpu占用率达到预设占用率阈值,将此目标web服务器的编号存储到步骤S6.2.2新增的字段中;
S6.2.4监控步骤S6.2.2字段中目标web服务器的cpu占用率,当目标web服务器的cpu占用率降至不超过预设占用率阈值的二分之一时,将此目标web服务器对应的编号再次***到目标web服务器的循环链表中。
进一步地,所述步骤S7具体包括以下步骤:
S7.1目标web服务器接收数据分析服务器发送的分类请求,确定分类请求对应的数据库表,从数据库中加载表内容到内存中;
S7.2目标web服务器接收负载均衡服务器转发的用户请求,确定用户请求的分类需访问的数据库表与内存中的缓存内容相一致,从内存中加载数据信息并返回用户请求。
本发明与现有技术相比,具有以下的有益效果:
通过本发明的web集群缓存的利用***及优化方法,可有效解决现有的web集群缓存的***存在的当某一时间段热点数据的请求列表产生变化,根据数据分析服务器当下一次的分析来指导web服务器进行数据库表缓存,会导致web服务器缓存的内容频繁更新,缓存命中率降低,***产生波动的问题。
附图说明
图1是本发明的web集群缓存的利用***的示意图。
图2是本发明的Web集群缓存的优化方法的示意图。
具体实施方式
下面结合本发明的实施例对本发明作进一步的阐述和说明。
实施例:
实施例一:
如图1所示,一种web集群缓存的利用***,该***由数据分析服务器、负载均衡服务器和web集群服务器组成。数据分析服务器负责记录和统计用户请求的日志信息,根据历史热点记录和节点概率链表得到包含需访问的数据库表和目标服务器链表两个字段的分类标准;负载均衡服务器根据数据分析服务器发送的分类标准进行用户请求分类的确定和转发处理,通过移动指针遍历备选服务器的链表集合,实现负载的均衡;web集群服务器负责缓存具有较高用户请求量的数据库表到内存中,之后,在接收到此分类的用户请求后,从内存中获取结果并返回。
其中,数据分析服务器的工作主要包括以下方面:
保存节点概率到概率链表,即根据***的设定定义概率衰减过程,包括衰减初始值、衰减时间长度以及衰减完成值,计算每个节点对应的概率,存储到节点概率链表中。同时,定义历史热点数据库表记录的长度为k。保存当前时间段内用户请求数据库的历史日志记录,每条请求日志均需记录用户请求的类型和请求对应的数据库表信息;保存前k-1次热点数据表的历史分析记录,其中,此热点数据表分析记录与web服务器缓存的热点数据表历史记录存在差异,是数据分析服务器根据当前时间段内用户请求的历史日志得到的web服务器缓存的热点数据表集合记录,称为初始热点数据表集合,而使用历史记录预测得到的热点数据表集合,称为缓存热点数据表集合。保存上一次的分类标准,包括数据库表名和对应的目标服务器。具体包括:
第一,根据***的业务变化快慢的特性设定节点概率的衰减过程:
具体的,衰减概率初始值Ninit的公式为:Ninit=N0e-al,衰减概率初始值Ninit代表当前时间段的节点在整个历史记录中的重要程度,N0=1,l决定初始值的偏移量。控制l,能够改变初始值的大小。在业务变化较快,新业务较多的***中,可以将衰减的初始值可以设定高些,补偿新业务数据在基于历史预测中的占比;在业务变化较少的***中,衰减的初始值可以设定低些,减少新业务数据的概率占比。a表示衰减系数,表示随着时间变化,历史对于未来预测的影响的大小变化。
a和l的确定方法具体为:根据数据分析服务器的记录和分析,可以得到初始热点数据表集合,假设长度为k。使用任意连续三个热点数据表集合进行分析,分别对应i-1、i和i+1三个预设时间长度为T的阶段(i为不小于2的整数)。对比i阶段和i+1阶段的初始热点数据集合,得到i阶段在i+1阶段初始热点数据集合中出现的概率,即影响权重。假设,i阶段的初始热点数据表集合为{student,user,order,product},i+1阶段的初始热点数据表集合为{student,user,order,picture},则概率pi=3/4=0.75。按照同样的方式,对比i-1阶段和i+1阶段的初始热点数据,可以得到第i-1阶段相对于i+1阶段的影响权重pi-1。预设时间间隔为T,在n倍kT时间长度重复计算得到n*k-2个pi和pi-1,n的取值为整数,建议取值范围为(10,50)。如果n的取值太小,影响概率的准确性;但是取值太大,会增加不必要的计算。对(n*k-2)次概率分别取平均,得到i阶段和i-1阶段对于i+1阶段热点数据集合的平均权重和
在第i个阶段:
进行衰减概率完成值Nfinish的定义:
衰减概率完成值Nfinish的定义公式为:Nfinish=Nkf=N0e-a(m+l),衰减概率完成值Nfinish代表节点对预测具有指导意义的最小概率。其中,m表示时间间隔,单位为秒。在本***中,预设的时间间隔为T,则m=kT,k为整数。Nfinish需要预设一个参考值Nmin用来表示历史节点对预测的概率权重的下限。设Nmin=0.2,根据定义的参数a和l,依次增加k值,当Nfinish=Nkf=N0e-a((k+1)T+l)<0.2时,停止计算。此时,k的值即为概率链表和历史热点数据集合链表的长度。
根据确定的k值,分别计算1~k范围内整数节点对应的概率,按照概率从小到大的顺序存储到概率链表中。
其中,1~k范围内整数节点对应的概率的计算公式为:Nkf=N0e-a(kT+l),具体的,以上概率分析任务,理论上只需要在***初始化或者存在较大调整时进行。
第二,根据当前时间段内历史日志记录确定初始热点数据库表集合:
首先,根据记录的数据库历史日志,按照分类标准确定用户请求的分类以及需要访问的数据库表。确定分类标准:用户请求需访问的数据库表为同一数据库表。
然后,根据记录的数据库历史日志,按照分类标准确定用户请求的分类以及需要访问的数据库表。具体包括:统计每个类型的用户请求量,即请求次数;统计各个分类的用户请求量,按照请求量从大到小的顺序进行排序。如果用户请求量相同,计算请求的数据量作为排序依据,即按照请求数据量的从大到小进行排序从而得到热点数据库表集合。考虑在大部分的业务场景下,80%的访问量都集中在20%的热数据上(二八原则),对排序在前20%的分类进行定义(注:(k1,k2…k10)列表,取(k1,k2)),生成包含编号以及数据库表的分类标准。选取的分类占比之和可以小于20%,但是不能超过20%。
然后,将上述步骤得到的热点数据库表集合加入到热点数据历史记录的双向循环链表:移动尾部指针,加入数组集合到链表尾部。之后,检查链表的长度。如果链表长度不小于k,不再进行操作;如果链表的长度大于k,移动指针删除热点数据历史记录的双向循环链表的下一个节点。
第三,根据k次热点数据的链表记录预测下一时间段的历史记录中每一个数据表成为热点的概率:
首先,获取指针指向的当前节点的数组集合,将指针移动的次数记录到变量i,i初始值为1。从数组集合中取出第一个数据库表的名字,将数据库表名作为key值;同时,取链表中下标为k-1的概率作为value值,将key-value键值对存储到map集合中。依次取出数组集合中剩下的数据库表名字,将对应的key-value存储到map中。
然后,在继续移动存储热点数据表名集合的链表的指针之前,需要先判断概率链表的next是否为空,next表示指向下一个热点数据集合。如果i<1,next不为空,移动热点数据表历史记录的指针。否则,next为空,集合遍历完毕。
然后,从热点数据库表和概率链表两个表中分别取出任意i阶段的数据库表名和对应的概率值。此时,在进行map的赋值操作时,需要先获取当前数据库表名在map中是否已经存在值。如果已经存在,需要将value值与节点对应的概率值的和作为新的value保存到map中。如果不存在,将概率值作为value存储到map中。
最后,热点数据库表和概率链表遍历完毕后,将map集合按照value值进行降序排序。选择value值之和最接近但不超过value值总和的80%的数据表集合作为缓存的热点数据表集合。
第四,根据热点数据表集合和历史分类标准生成新的分类标准:
首先,从分类标准中取出数据库表名,查询取出的数据库表名在热点集合中是否存在。如果存在,移除map中对应key-value键值对;如果不存在,删除对应的分类标准,将web服务器的集合放回到未分配的服务器列表中。
然后,从map中取出数据库表名,根据记录的数据库表对应的请求量,为分类请求指定足够数量的web服务器。根据服务器的服务能力如单位时间内传输容量和单位时间内该分类的用户请求量计算出目标web服务器的数量,使得服务器的服务能力大于用户请求的服务,其中,web服务器的服务能力包括服务器的处理能力和传输流量两个方面。将服务器的编号作为集合以循环链表的形式写入分类标准的目标服务器字段。
最后,根据分类标准中目标服务器字段的定义,将各个分类标准发送到对应的单个或者多个web服务器上,以缓存分类对应的数据库表。之后,将所有的分类标准发送到负载均衡服务器。
负载均衡服务器的工作主要包括以下方面:
第一,接收并存储数据分析服务器发送的所有分类标准,在每个分类的目标服务器字段的循环链表中任意选择一个节点,使指针指向这个节点。
第二,在接收用户请求时,对比分类标准以确定用户请求所属的分类。执行如下转发策略:
步骤一,获取指针指向节点的编号,将用户请求转发到编号所代表的web服务器上。之后,移动指针到下一个节点位置。
步骤二,在分类标准中新增一个字段,用于存放cpu占用率超过预设值的服务器编号的集合。
步骤三,监控目标服务器字段中web服务器的cpu占用率,一旦web服务器的cpu占用率达到设定的值,将此web服务器的编号存储到上一步新增的字段中。
步骤四,监控步骤二字段中web服务器的cpu占用率,当web服务器的cpu占用率降到预设值的二分之一以下时,被此服务器对应的编号再次***到目标服务器的链表中。
web集群服务器的工作主要包括以下方面:
第一,目标web服务器接收数据分析服务器发送的分类请求,确定分类请求对应的数据库表,从数据库中加载表内容到内存中。
第二,目标web服务器接收负载均衡服务器转发的用户请求,确定用户请求的分类需访问的数据库表与内存中的缓存内容相一致,从内存中加载数据信息并返回用户请求。
实施例二
如图2所示,一种Web集群缓存的优化方法,通过上述的web集群缓存的利用***实现,具体包括数据预处理流程及请求转发处理流程,所述数据预处理流程包括完成用户请求的记录、统计和分析,在用户请求对应的目标web服务器上提前加载需要访问的数据库表,所述请求转发处理流程包括通过负载均衡服务器对比接收的用户请求与分类标准,确定请求对应转发的目标web服务器并完成请求的转发,再由目标web服务器接收用户请求并处理,最后将结果返回。
具体包括以下步骤:
S1.根据***的业务变化快慢的特性设定节点概率的衰减过程:
S1.1根据***特点确定初始值Ninit:Ninit=N0e-al
其中,Ninit为衰减概率初始值,代表当前时间段的节点在整个历史记录中的重要程度,N0=1,l决定初始值的偏移量,a为衰减系数,表示随着时间变化历史对于未来预测的影响的大小变化,a和l的值根据***的业务变化快慢的特性自行定义;
具体的,a和l的确定方法:根据数据分析服务器的记录和分析,可以得到初始热点数据表集合,假设长度为k。现在使用任意连续三个热点数据表集合进行分析,分别对应i-1、i和i+1三个预设时间长度为T的阶段。对比i阶段和i+1阶段的初始热点数据集合,得到i阶段在i+1阶段初始热点数据集合中出现的概率,即影响权重。假设,i阶段的初始热点数据表集合为{student,user,order,product},i+1阶段的初始热点数据表集合为{student,user,order,picture},则概率pi=3/4=0.75。按照同样的方式,对比i-1阶段和i+1阶段的初始热点数据,可以得到第i-1阶段相对于i+1阶段的影响权重pi-1。预设时间间隔为T,在n倍kT时间长度重复计算得到n*k-2个pi和pi-1,n的取值为整数,建议取值范围为(10,50)。如果n的取值太小,影响概率的准确性;但是取值太大,会增加不必要的计算。对(n*k-2)次概率分别取平均,得到i阶段和i-1阶段对于i+1阶段热点数据集合的平均权重和
在第i个阶段:
S1.2根据完成值Nfinish的定义公式:Nfinish=Nkf=N0e-a(m+l),根据定义的参数a和l,依次增加k值,计算每个节点的完成值Nfinish,Nfinish为衰减概率完成值,代表了节点对预测具有指导意义的最小概率,当Nfinish=Nkf=N0e-a((k+1)T+l)<Nmin时,停止计算,此时,k的值即为概率链表和历史热点数据集合链表的长度;其中,Nmin是Nfinish的一个参考值,用来表示历史节点对预测的概率权重的下限,m表示时间间隔,若预设的时间间隔为T,则m=kT,k为整数,m单位为秒。
S1.3根据步骤S1.2确定的k值,分别计算1~k范围内整数节点对应的节点概率,计算公式为:Nkf=N0e-a(kT+l),将节点概率按照从小到大的顺序存储到节点概率链表中。
以上概率分析任务,理论上只需要在***初始化或者存在较大调整时进行。
S2.根据当前时间段内历史日志记录确定初始热点数据库表集合:
S2.1根据记录的数据库历史日志,按照分类标准确定用户请求的分类以及需要访问的数据库表。确定分类标准:用户请求需访问的数据库表为同一数据库表;
S2.2根据记录的数据库历史日志,按照分类标准确定用户请求的分类以及需要访问的数据库表。根据记录的数据库历史日志,按照分类标准确定用户请求的分类以及需要访问的数据库表。统计每个类型的用户请求量,即请求次数。统计各个分类的用户请求量,按照请求量从大到小的顺序进行排序。如果用户请求量相同,计算请求的数据量作为排序依据,即按照请求数据量的从大到小进行排序。考虑在大部分的业务场景下,80%的访问量都集中在20%的热数据上(二八原则),对排序在前20%的分类进行定义(如:(k1,k2…k10)列表,取(k1,k2)),生成包含编号以及数据库表的分类标准即热点数据库表集合。选取的分类占比之和可以小于20%,但是不能超过20%;
S2.3将步骤S2.2得到的热点数据库表集合加入到热点数据历史记录的双向循环链表:移动尾部指针,加入数组集合到链表尾部。之后,检查链表的长度。如果链表长度不小于k,不再进行操作;如果链表的长度大于k,移动指针删除热点数据历史记录的双向循环链表的下一个节点。
S3.根据k次热点数据的链表记录预测下一时间段的历史记录中每一个数据表成为热点的概率:
S3.1获取指针指向的当前节点的数组集合,将指针移动的次数记录到变量i,i初始值为1。从数组集合中取出第一个数据库表的名字,将数据库表名作为key值;同时,取链表中下标为k-1的概率作为value值,将key-value键值对存储到map集合中。依次取出数组集合中剩下的数据库表名字,将对应的key-value存储到map中。
S3.2在继续移动存储热点数据表名集合的链表的指针之前,先判断概率链表的next是否为空,next指向下一个热点数据集合。如果i<1,next不为空,移动热点数据表历史记录的指针。否则,next为空,集合遍历完毕。
S3.3从热点数据库表和概率链表两个表中分别取任意i阶段的数据库表名和对应的概率值。此时,在进行map的赋值操作时,需要先获取当前数据库表名在map中是否已经存在值。如果已经存在,需要将value值与节点对应的概率值的和作为新的value保存到map中。如果不存在,将概率值作为value存储到map中。
S3.4链表遍历完毕后,将map按照value值进行降序排序,选择value值之和最接近但不超过value值总和的80%的数据表集合作为缓存的热点数据表集合。
S4.根据步骤S3得到的热点数据表集合和历史的分类标准,对比热点数据表集合和历史的分类标准中的数据表,筛选出需要更新的分类标准和新增的热点数据表,将更新的分类标准中对应的目标web服务器标号放回未分配的集合,对新增的热点数据表根据单位时间内请求量和目标web服务器的传输容量计算需要的目标web服务器数量(至少使得总的目标web服务器的单位时间内传输容量不小于单位时间内请求量),从未分配列表选择对应数量的目标web服务器构造新的分类标准;
S4.1从分类标准中取出数据库表名,查询取出的数据库表名在热点集合中是否存在。如果存在,移除map中对应key-value键值对;如果不存在,删除对应的分类标准,将web服务器的集合放回到未分配的服务器列表中。
S4.2从map中取出数据库表名,根据记录的数据库表对应的请求量,为分类请求指定足够数量的web服务器。根据服务器的服务能力和单位时间内该分类的用户请求量计算出目标web服务器的数量,即服务器的服务能力需大于用户请求的服务,其中,web服务器的服务能力包括服务器的处理能力和传输流量两个方面。将服务器的编号作为集合以循环链表的形式写入分类标准的目标服务器字段。
S4.3根据分类标准中目标服务器字段的定义,将各个分类标准发送到对应的单个或者多个web服务器上,以缓存分类对应的数据库表。之后,将所有的分类标准发送到负载均衡服务器。
S5:目标web服务器接收数据分析服务器转发的分类请求,确定需要加载的数据库表的名称,从数据库加载表的内容到内存中;
S6:负载均衡服务器接收用户请求,对比数据分析服务器的分类标准确定用户请求所属的分类,负载均衡服务器从分类标准的目标服务器集合中通过指针指向的节点确定目标服务器的编号;
S6.1负载均衡服务器接收并存储数据分析服务器发送的所有分类标准,在每个分类的目标web服务器字段的循环链表中任意选择一个节点,使指针指向这个节点;
S6.2在接收用户请求时,对比分类标准以确定用户请求所属的分类,并执行如下转发策略:
S6.2.1获取指针指向节点的编号,将用户请求转发到编号所代表的目标web服务器上,之后,移动指针到下一个节点位置;
S6.2.2在分类标准中新增一个字段,用于存放cpu占用率超过预设占用率阈值的目标web服务器编号的集合,
S6.2.3监控目标web服务器字段中目标web服务器的cpu占用率,一旦目标web服务器的cpu占用率达到预设占用率阈值,将此目标web服务器的编号存储到步骤S6.2.2新增的字段中;
S6.2.4监控步骤S6.2.2字段中目标web服务器的cpu占用率,当目标web服务器的cpu占用率降至不超过预设占用率阈值的二分之一时,将此目标web服务器对应的编号再次***到目标web服务器的循环链表中。
S7:目标web服务器接收负载均衡服务器转发的用户请求,并对请求的内容进行处理,从内存中获取对应的数据作为结果返回:
S7.1目标web服务器接收数据分析服务器发送的分类请求,确定分类请求对应的数据库表,从数据库中加载表内容到内存中;
S7.2目标web服务器接收负载均衡服务器转发的用户请求,确定用户请求的分类需访问的数据库表与内存中的缓存内容相一致,从内存中加载数据信息并返回用户请求。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
Claims (7)
1.一种web集群缓存的利用***,其特征在于,由负载均衡服务器、数据分析服务器和web集群服务器组成,所述web集群服务器由多个目标web服务器构成;
所述数据分析服务器用于记录和统计用户请求的日志信息,根据历史热点记录和节点概率链表得到包含需访问的数据库表和目标服务器链表两个字段的分类标准;负载均衡服务器用于根据数据分析服务器确定的分类标准确定用户请求的目标web服务器,并将用户请求转发到对应的目标web服务器,并通过移动指针遍历备选目标web服务器的链表集合,实现负载的均衡;目标web服务器用于接收负载均衡服务器转发的用户请求,并将具有较高用户请求量的数据库表缓存到内存中,在接收到相应的用户请求时则直接从内存中读取数据库表中对应的数据生成结果并返回;
根据历史热点记录和节点概率链表得到包含需访问的数据库表和目标服务器链表两个字段的分类标准具体包括:
S1:根据***的业务变化快慢的特性设定节点概率的衰减过程:
S1.1根据***特点确定初始值Ninit:Ninit=N0e-al,其中,Ninit为衰减概率初始值,代表当前时间段的节点在整个历史记录中的重要程度,N0=1,l决定初始值的偏移量,a为衰减系数,表示随着时间变化历史对于未来预测的影响的大小变化,a和l的值根据***的业务变化快慢的特性自行定义;
S1.2根据完成值Nfinish的定义公式:Nfinish=Nkf=N0e-a(m+l),根据定义的参数a和l,依次增加k值,计算每个节点的完成值Nfinish,当Nfinish=Nkf=N0e-a((k+1)T+l)<Nmin时,停止计算,此时,k的值即为概率链表和历史热点数据集合链表的长度;其中,Nfinish为衰减概率完成值,代表了节点对预测具有指导意义的最小概率,Nmin是Nfinish的一个参考值,用来表示历史节点对预测的概率权重的下限,m表示时间间隔单位为秒,若预设的时间间隔为T,则m=kT,k为整数;
S1.3根据步骤S1.2确定的k值,分别计算1~k范围内整数节点对应的节点概率,计算公式为:Nkf=N0e-a(kT+l),将节点概率按照从小到大的顺序存储到节点概率链表中;
S2.数据分析服务器保存预设时间段内用户请求数据库的日志记录,每条请求日志均需记录用户请求需访问的数据库表信息;根据历史日志记录确定用户请求的分类,将访问相同数据库表的用户请求划分为一类,根据二八原则得到初始热点数据表的集合;
S3.遍历k次热点数据的链表记录,结合步骤S1得到的节点概率链表,构造key-value的键值对:如果key值不存在,取节点概率链表对应节点的值赋值给value;如果key值已经存在,使用在value值得基础上加上节点的概率值,将map按照value值进行降序排序,按照排序选择value值之和不超过value值总和80%的数据库表作为热点集合,具体包括:
S3.1获取热点数据表历史记录的指针指向的当前节点的数组集合,将指针移动的次数记录到变量i,i初始值为1,从数组集合中取出第一个数据库表的名字,将数据库表名作为key值;同时,取节点概率链表中下标为k-1的节点概率作为value值,将key-value键值对存储到map集合中,按此依次取出数组集合中剩下的数据库表名字,将对应的key-value存储到map集合中;
S3.2在继续移动指针之前,先判断节点概率链表的下一个热点数据集合是否为空,如果下一个热点数据集合不为空,移动热点数据表历史记录的指针,否则,集合遍历完毕;
S3.3从热点数据库表和节点概率链表中分别取出任意i阶段的数据库表名和对应的概率值,在进行map集合的赋值操作时,先获取当前数据库表名在map集合中是否已经存在值,如果已经存在,则将value值与节点概率值的和作为新的value保存到map集合中,如果不存在,则将节点概率值作为value存储到map集合中;
S3.4热点数据库表和节点概率链表遍历完毕后,将map集合按照value值进行降序排序,最后,选择value值之和最接近但不超过value值总和的80%的数据表集合作为缓存的热点数据表集合。
2.根据权利要求1所述的一种web集群缓存的利用***,其特征在于,所述负载均衡服务器根据数据分析服务器确定的分类标准确定用户请求的目标web服务器,并将用户请求转发到对应的目标web服务器,并通过移动指针遍历备选目标web服务器的链表集合,实现负载的均衡;目标web服务器接收负载均衡服务器转发的用户请求,并将具有较高用户请求量的数据库表缓存到内存中,在接收到相应的用户请求时则直接从内存中读取数据库表中对应的数据生成结果并返回具体包括以下步骤:
S4:根据步骤S3得到的热点数据表集合和历史的分类标准,对比热点数据表集合和历史的分类标准中的数据表,筛选出需要更新的分类标准和新增的热点数据表,将更新的分类标准中对应的目标web服务器标号放回未分配的集合,对新增的热点数据表根据单位时间内请求量和目标web服务器的传输容量计算需要的目标web服务器数量,从未分配列表选择对应数量的目标web服务器构造新的分类标准;
S5:目标web服务器接收数据分析服务器转发的分类请求,确定需要加载的数据库表的名称,从数据库加载表的内容到内存中;
S6:负载均衡服务器接收用户请求,对比数据分析服务器的分类标准确定用户请求所属的分类,负载均衡服务器从分类标准的目标服务器集合中通过指针指向的节点确定目标服务器的编号;
S7:目标web服务器接收负载均衡服务器转发的用户请求,并对请求的内容进行处理,从内存中获取对应的数据作为结果返回。
3.根据权利要求2所述的一种web集群缓存的利用***,其特征在于,所述步骤S4具体包括以下步骤:
S4.1从历史的分类标准中取出数据库表名,查询取出的数据库表名在热点数据表集合中是否存在,如果存在,移除map集合中对应key-value键值对;如果不存在,删除对应的分类标准,并将目标web服务器的集合放回到未分配的服务器列表中;
S4.2从map集合中取出数据库表名,根据记录的数据库表对应的请求量,为分类请求指定足够数量的目标web服务器,根据目标web服务器的服务能力和单位时间内该分类的用户请求量计算出目标web服务器的数量,使得服务器的服务能力大于用户请求的服务,其中,目标web服务器的服务能力包括服务器的处理能力和传输流量,将服务器的编号作为集合以循环链表的形式写入分类标准的目标服务器字段;
S4.3根据目标web服务器字段的定义,将各个分类标准发送到对应的单个或者多个目标web服务器上,以缓存分类对应的数据库表,然后将所有的分类标准发送到负载均衡服务器。
4.根据权利要求3所述的一种web集群缓存的利用***,其特征在于,所述步骤S7具体包括以下步骤:
S7.1目标web服务器接收数据分析服务器发送的分类请求,确定分类请求对应的数据库表,从数据库中加载表内容到内存中;
S7.2目标web服务器接收负载均衡服务器转发的用户请求,确定用户请求的分类需访问的数据库表与内存中的缓存内容相一致,从内存中加载数据信息并返回用户请求。
5.根据权利要求2所述的一种web集群缓存的利用***,其特征在于,所述步骤S6具体包括以下步骤:
S6.1负载均衡服务器接收并存储数据分析服务器发送的所有分类标准,在每个分类的目标web服务器字段的循环链表中任意选择一个节点,使指针指向这个节点;
S6.2在接收用户请求时,对比分类标准以确定用户请求所属的分类,并执行如下转发策略:
S6.2.1获取指针指向节点的编号,将用户请求转发到编号所代表的目标web服务器上,之后,移动指针到下一个节点位置;
S6.2.2在分类标准中新增一个字段,用于存放cpu占用率超过预设占用率阈值的目标web服务器编号的集合;
S6.2.3监控目标web服务器字段中目标web服务器的cpu占用率,一旦目标web服务器的cpu占用率达到预设占用率阈值,将此目标web服务器的编号存储到步骤S6.2.2新增的字段中;
S6.2.4监控步骤S6.2.2字段中目标web服务器的cpu占用率,当目标web服务器的cpu占用率降至不超过预设占用率阈值的二分之一时,将此目标web服务器对应的编号再次***到目标web服务器的循环链表中。
6.根据权利要求1所述的一种web集群缓存的利用***,其特征在于,所述步骤S1.2中,Nmin=0.2。
7.根据权利要求1所述的一种web集群缓存的利用***,其特征在于,所述步骤S2具体包括以下步骤:
S2.1数据分析服务器保存预设时间段内用户请求数据库的日志记录,每条请求日志均需记录用户请求需访问的数据库表信息;
S2.2将访问相同数据库表的用户请求划分为一类,统计各个分类的用户请求量,按照请求量从大到小的顺序进行排序,对排序在前20%的分类进行定义,生成包含编号以及数据库表的分类标准即热点数据库表集合;
S2.3将步骤S2.2得到的热点数据库表集合加入到热点数据历史记录的双向循环链表,检查双向循环链表的长度,如果链表长度不大于k,不再进行操作;如果链表的长度大于k,则删除热点数据历史记录的双向循环链表的下一个节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811481419.8A CN109634746B (zh) | 2018-12-05 | 2018-12-05 | 一种web集群缓存的利用***及优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811481419.8A CN109634746B (zh) | 2018-12-05 | 2018-12-05 | 一种web集群缓存的利用***及优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109634746A CN109634746A (zh) | 2019-04-16 |
CN109634746B true CN109634746B (zh) | 2022-03-01 |
Family
ID=66071230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811481419.8A Active CN109634746B (zh) | 2018-12-05 | 2018-12-05 | 一种web集群缓存的利用***及优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109634746B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111049899B (zh) * | 2019-12-11 | 2021-01-05 | 贝壳找房(北京)科技有限公司 | kafka消息存储***、方法、装置及计算机可读存储介质 |
CN112925859A (zh) * | 2021-03-31 | 2021-06-08 | 中国建设银行股份有限公司 | 数据存储方法和装置 |
CN113901262A (zh) * | 2021-09-24 | 2022-01-07 | 北京达佳互联信息技术有限公司 | 待处理数据的获取方法、装置、服务器和存储介质 |
CN114173159A (zh) * | 2021-11-23 | 2022-03-11 | 武汉市烽视威科技有限公司 | 一种热点内容预测方法、装置、设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1758610A (zh) * | 2005-11-11 | 2006-04-12 | 清华大学 | 并行计算集群电源的能耗控制方法 |
CN103338249A (zh) * | 2013-06-26 | 2013-10-02 | 优视科技有限公司 | 缓存方法及装置 |
CN104065568A (zh) * | 2014-07-07 | 2014-09-24 | 电子科技大学 | 一种Web服务器集群的路由方法 |
AU2015203474A1 (en) * | 2012-07-23 | 2015-07-16 | Facebook, Inc. | Structured search queries based on social-graph information |
CN106326012A (zh) * | 2016-08-25 | 2017-01-11 | 中国农业银行股份有限公司 | web应用集群缓存利用方法和*** |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9942345B2 (en) * | 2009-09-17 | 2018-04-10 | Oracle International Corporation | Web server caching for performance improvement |
CN104580393B (zh) * | 2014-12-18 | 2017-12-15 | 北京蓝汛通信技术有限责任公司 | 用于服务器集群***的扩容方法、装置及服务器集群*** |
CN106936623A (zh) * | 2015-12-31 | 2017-07-07 | 五八同城信息技术有限公司 | 分布式缓存***及缓存集群的管理方法 |
US10191824B2 (en) * | 2016-10-27 | 2019-01-29 | Mz Ip Holdings, Llc | Systems and methods for managing a cluster of cache servers |
-
2018
- 2018-12-05 CN CN201811481419.8A patent/CN109634746B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1758610A (zh) * | 2005-11-11 | 2006-04-12 | 清华大学 | 并行计算集群电源的能耗控制方法 |
AU2015203474A1 (en) * | 2012-07-23 | 2015-07-16 | Facebook, Inc. | Structured search queries based on social-graph information |
CN103338249A (zh) * | 2013-06-26 | 2013-10-02 | 优视科技有限公司 | 缓存方法及装置 |
CN104065568A (zh) * | 2014-07-07 | 2014-09-24 | 电子科技大学 | 一种Web服务器集群的路由方法 |
CN106326012A (zh) * | 2016-08-25 | 2017-01-11 | 中国农业银行股份有限公司 | web应用集群缓存利用方法和*** |
Non-Patent Citations (6)
Title |
---|
Redis-based web server cluster session maintaining technology;Songhuan Li 等;《2017 13th International Conference on Natural Computation, Fuzzy Systems and Knowledge Discovery (ICNC-FSKD)》;20180625;3065-3069 * |
SmartCache:基于兴趣的协作式Web缓存;陈海涛 等;《计算机科学》;20081225;第35卷(第12期);87-89,118 * |
Web server load balancing: A queueing analysis;Zhongju Zhang等;《European Journal of Operational Research》;20080416;第186卷(第2期);681-693 * |
基于节点缓存的Web服务器性能优化研究;胡霖;《无线互联科技》;20151025(第20期);49-50 * |
无线传感网中基于概率衰减模型的节点调度研究;程艳蕾;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120415(第4期);I140-210 * |
远程控制***中Web服务器的请求调度算法研究;尤国华;《中国博士学位论文全文数据库 信息科技辑》;20121015(第10期);I139-10 * |
Also Published As
Publication number | Publication date |
---|---|
CN109634746A (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109634746B (zh) | 一种web集群缓存的利用***及优化方法 | |
CN108710639B (zh) | 一种基于Ceph的海量小文件存取优化方法 | |
CN110321325B (zh) | 文件索引节点查找方法、终端、服务器、***及存储介质 | |
CN106959928B (zh) | 一种基于多级缓存结构的流式数据实时处理方法及*** | |
CN106649865A (zh) | 一种分布式服务器***及数据处理方法 | |
CN110968272B (zh) | 基于时间序列预测的海量小文件存储性能优化方法及*** | |
CN109766318B (zh) | 文件读取方法及装置 | |
CN106528451B (zh) | 针对小文件的二级缓存预取的云存储框架及构建方法 | |
CN109165096B (zh) | web集群的缓存利用***及方法 | |
CN102819586A (zh) | 一种基于高速缓存的url分类方法和设备 | |
CN108416054B (zh) | 基于文件访问热度的动态hdfs副本个数计算方法 | |
CN106570145B (zh) | 一种基于分层映射的分布式数据库结果缓存方法 | |
CN108647266A (zh) | 一种异构数据快速分布存储、交互方法 | |
CN114356893A (zh) | 基于机器学习的元数据调优方法、装置、设备及存储介质 | |
CN109635069A (zh) | 一种基于信息熵的地理空间数据自组织方法 | |
CN114281989A (zh) | 基于文本相似度的数据去重方法、装置及存储介质和服务器 | |
CN109144431A (zh) | 数据块的缓存方法、装置、设备及存储介质 | |
Goyal et al. | Anytime frequent itemset mining of transactional data streams | |
CN111708720A (zh) | 一种数据缓存方法、装置、设备及介质 | |
EP3507699B1 (en) | Method and systems for master establishment using service-based statistics | |
CN114253458A (zh) | 内存缺页异常的处理方法、装置、设备及存储介质 | |
CN114785858B (zh) | 应用于互感器在线监测***的资源主动缓存方法及装置 | |
CN109189696A (zh) | 一种照片分类器训练方法、ssd缓存***及缓存方法 | |
CN113835613B (zh) | 一种文件读取方法、装置、电子设备和存储介质 | |
CN112214460A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |