网站中更新缓存服务器的方法及系统的制作方法

xiaoxiao2020-10-23  15

网站中更新缓存服务器的方法及系统的制作方法
【技术领域】
[0001]本发明涉及互联网技术,具体地涉及在数据库和缓存结构共存的网站架构下更新缓存服务器的方法及系统,以解决数据一致性与并发性。
【背景技术】
[0002]随着信息量的飞速增长,以及飞速增长的互联网用户的数量,伴随而来的就是如何减少用户响应时间和如何解决数据并发的问题。现有的技术已经为我们提供了几种解决问题的方法,使用数据库主从分离的技术和缓存技术。当我们在应用这些技术的同时也会同时出现问题。这些问题主要集中在数据并发性和数据的一致性方面。本专利所阐述的也正是解决这类问题的相关策略。
[0003]首先介绍现有的技术中的memcache(以下简称me)以及数据库分离技术。memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用。这是一套开放源代码软件,以BSD license授权发布。
[0004]Mc的概念类似于计算计算机硬件中的cache (缓存),其目的是为了减少查询时间,减少响应时间。而数据库相当于硬件中的主存,设置me的同时也减轻了数据库的负担,从而提高整体性能。对于一般的数据库+缓存的架构的网站来说。更新缓存的方式有如下两种:以查询结果作为更新依据的被动更新以及以用户更新操作为导向的主动更新。
[0005]数据库分离技术是指将数据库分为主库和从库,数据的写入一般要写入到主库然后通过网络传输的机制主库将数据同步到从库(一组数据库),当用户读取数据时会根据当时的负载情况将用户请求分发到各个从库上,从而做到负载均衡,减小主库压力防止因主库压力过大而数据丢失。
[0006](I)me的被动更新流程及其带来的问题
[0007]图1是现有技术中me的被动更新流程图。参阅图1,使用该方式更新优势在于:更新过程比较简单,数据一致性可以得到更好的保证。
[0008]发明人发现使用该方式存在的问题是:对于使用主从数据库分离+缓存同时进行数据处理时,主库将数据同步给各个从库存在一定的延迟(无法完全避免),当主库还未将数据同步到从库时,此时用户进行查询时,由于me的数据来源于从库,所以me中并没有用户想要的数据,这就会带来由于主从同步的延迟从而带来的从数据库和me中数据的不一致。这样本该命中me的请求则全部落到主数据库上造成数据库的性能进一步下降,进而产生恶性循环。
[0009](2)me的主动更新流程及其带来的问题
[0010]图2是现有技术中me的主动更新流程图。参阅图2,使用该方法的优点是,减少了因数据库延迟带来的me和数据库的数据不一致,提高me命中率,从而减少请求响应时间。
[0011]发明人发现使用该方法带来的问题是:数据的并发处理,对于多个请求同时要求更新数据的时候,此时由于请求是完全并发的,所以此时可能会出现用户的数据被覆盖或直接丢失的情况,直接的结果是用户即使更新了数据可能在网站上并不能显示出来,而且这个丢失如果用户不重复操作就会是永久性的丢失,会给用户造成损失。
[0012]图3是展示主动更新下的数据并发导致的数据一致性问题。如图3所示,在该结构中使用me的主动更新策略,服务端处理请求的服务器并发地接收到两个请求(请求A和请求B),均为更新数据的请求。此时根据该策略,me先读取现有数据,例如1,2,3,之后请求A将数据4追加至当前数据中,请求B需要将5追加至原有数据,此时由于数据并发,则有可能出现数据4追加失败或数据5追加失败的情况。从而使得最终无法将所有的数据正确写入到me中,导致数据丢失。

【发明内容】

[0013]本发明实施例提供一种数据库和缓存结构共存的网站中更新缓存服务器的方法及系统,以提高数据的并发处理效率,并实现最终数据的一致性。
[0014]一方面,本发明实施例提供了一种网站中更新缓存服务器的方法,其包括:
[0015]主数据库接收用户更新的数据,以及缓存服务器接收所述用户针对更新的数据发出的多个并发的主动更新请求,并缓存所述多个并发的主动更新请求中携带的用户更新的数据;
[0016]所述主数据库将接收到的用户更新的数据同步到从数据库;
[0017]所述从数据库将从主数据库同步过来的用户更新的数据写入所述缓存服务器,之后所述缓存服务器在主动更新请求下缓存的用户更新的数据失效。
[0018]另一方面,本发明实施例提供了一种网站中更新缓存服务器的系统,其包括:
[0019]主数据库,用于接收用户更新的数据,以及将接收到的用户更新的数据同步到从数据库;
[0020]缓存服务器,用于接收所述用户针对更新的数据发出的多个并发的主动更新请求,并缓存所述多个并发的主动更新请求中携带的用户更新的数据;以及在从数据库将从主数据库同步过来的用户更新的数据写入本缓存服务器之后,在主动更新请求下缓存的用户更新的数据失效;
[0021]所述从数据库,用于将从主数据库同步过来的用户更新的数据写入所述缓存服务器。
[0022]上述技术方案具有如下有益效果:本发明的实施例通过合理的策略制定,采用主动更新缓存与被动更新缓存相结合的方式,巧妙地提高了缓存的命中率,减少了响应时间,同时也通过相应的策略解决了数据并发时的数据处理问题,从而使得缓存和数据库中的数据尽可能地处于最终的一致。
【附图说明】
[0023]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0024]图1是现有技术中me的被动更新流程图;
[0025]图2是现有技术中me的主动更新流程图;
[0026]图3是展示现有技术的主动更新下的数据并发导致的数据一致性问题;
[0027]图4是本发明的实施例的在主从数据库分离+缓存的网站架构中更新缓存的方法流程图。
【具体实施方式】
[0028]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0029]本发明的实施例主要解决在以主从数据库分离以及缓存共同存在的网站架构中的数据同步和数据一致性问题。其主要策略如下:
[0030]1、采用主动更新缓存与被动更新缓存相结合的方式
[0031]由于被动更新缓存具有过程简单,数据容易保持与缓存数据库一致,所以本发明的实施例的策略中使用了被动更新缓存的更新策略,同时被动更新的缓存失效时间(如果缓存失效,用户的请求则会穿透缓存,落到数据库上)相对的长,因为有数据正确性的保证,所以适当提尚缓存失效时间有助于提尚缓存的使用效率从而提尚缓存命中率,进而减少网站的响应时间。
[0032]然而对于缓存的被动更新而言,可能出现由于主从数据库数据同步的延迟而产生的数据一致性问题,所以本策略同时也加入了缓存主动更新策略,用来缓解由于延迟而产生的缓存命中率降低从而增加对数据库的压力。
[0033]2、缓存主动更新与缓存被动更新的失效时间确定
[0034]对于主动更新缓存而言,可能会由于数据并发而产生缓存未被正确写入,所以对于主动更新下的缓存失效时间不能设置很长,因为一旦将主动更新下的缓存失效时间过长,如果出现由于数据并发导致的数据未完整的更新至缓存,而缓存的失效时间很长,则需要等待很久的时间,使得用户所访问到的数据都不是真正主库中的数据(数据写入数据库会有单独的技术处理并发性)。所以主动更新缓存的失效时间一般为主库和从库数据同步的延迟时间。这样可以 在主库将数据同步给从库之前用户依旧可以命中缓存来获得数据。
[0035]而对于被动更新缓存的失效时间则可以设置得相对长些,由于被动更新的数据来自于从库,可以保证较高的数据一致性,从而设置相对长的缓存时间可以在避免出现数据库缓存数据不一致的情况下增加缓存的命中率,从而减少用户的访问响应时间。
[0036]图4为本发明的实施例的在主从数据库分离+缓存的网站架构中更新缓存的方法流程图,该方法能够解决数据并发性和一致性问题。如图4所示,该一种网站中更新缓存服务器的方法的流程包括如下步骤:
[0037]步骤1:主数据库接收用户更新的数据;
[0038]步骤I’:缓存服务器(如memcache)接收所述用户针对更新的数据发出的多个并发的主动更新请求,并缓存所述多个并发的主动更新请求中携带的用户更新的数据;步骤I与步骤I’可视为同时执行。
[0039]步骤2:主数据库将接收到的用户更新的数据同步到从数据库;
[0040]步骤3:从数据库将从主数据库同步过来的用户更新的数据写入缓存服务器,之后缓存服务器在主动更新请求下缓存的用户更新的数据失效。
[0041]其中步骤1、2、3相当于是被动更新缓存的方式,步骤I’是主动更新缓存的方式,本实施例是采用主动更新缓存与被动更新缓存相结合的方式。
[0042]较佳地,缓存服务器在主动更新请求下的缓存失效时间长度小于从该从数据库同步过来的缓存失效时间长度。
[0043]较佳地,缓存服务器在主动更新请求下的缓存失效时间长度为该主数据库和从数据库执行数据同步的延迟时间长度之和。
[0044]进一步地,图4所示方法还包括步骤5:从数据库在数据同步完成且主动更新请求下的缓存失效时,响应用户的访问请求并提供待查询的数据。用户查询数据时,如果判断命中缓存则执行步骤4,否则执行步骤5。
[0045]相应地,根据上述方法,本发明的实施例还提供了一种网站中更新缓存服务器的系统,其包括:
[0046]主数据库,用于接收用户更新的数据,以及将接收到的用户更新的数据同步到从数据库;
[0047]缓存服务器,用于接收所述用户针对更新的数据发出的多个并发的主动更新请求,并缓存所述多个并发的主动更新请求中携带的用户更新的数据;以及在从数据库将从主数据库同步过来的用户更新的数据写入本缓存服务器之后,在主动更新请求下缓存的用户更新的数据失效;
[0048]所述从数据库,用于将从主数据库同步过来的用户更新的数据写入所述缓存服务器。
[0049]其中,该缓存服务器在主动更新请求下的缓存失效时间长度小于从所述从数据库同步过来的缓存失效时间长度。优选地,该缓存服务器在主动更新请求下的缓存失效时间长度为所述主数据库和所述从数据库执行数据同步的延迟时间长度之和。
[0050]该从数据库,还用于在数据同步完成且主动更新请求下的缓存失效时,响应用户的访问请求并提供待查询的数据。
[0051]其中,该缓存服务器包括memcachd分布式的内存对象缓存系统)服务器。
[0052]该系统的工作过程已在前面方法实施例中描述,故在此不再赘述。
[0053]与现有技术相比,本申请的技术方案的优点在于:
[0054]本发明的实施例通过合理的策略制定,巧妙地提高了缓存的命中率,减少了响应时间,同时也通过相应的策略解决了数据并发时的数据处理问题,从而使得缓存和数据库中的数据尽可能地处于最终的一致。
[0055]本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
[0056]以上所述的【具体实施方式】,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的【具体实施方式】而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种网站中更新缓存服务器的方法,其特征在于,包括: 主数据库接收用户更新的数据,以及缓存服务器接收所述用户针对更新的数据发出的多个并发的主动更新请求,并缓存所述多个并发的主动更新请求中携带的用户更新的数据; 所述主数据库将接收到的用户更新的数据同步到从数据库; 所述从数据库将从主数据库同步过来的用户更新的数据写入所述缓存服务器,之后所述缓存服务器在主动更新请求下缓存的用户更新的数据失效。2.根据权利要求1所述的方法,其特征在于,所述缓存服务器在主动更新请求下的缓存失效时间长度小于从所述从数据库同步过来的缓存失效时间长度。3.根据权利要求2所述的方法,其特征在于,所述缓存服务器在主动更新请求下的缓存失效时间长度为所述主数据库和所述从数据库执行数据同步的延迟时间长度之和。4.根据权利要求1所述的方法,其特征在于,所述方法还包括: 所述从数据库在数据同步完成且主动更新请求下的缓存失效时,响应用户的访问请求并提供待查询的数据。5.根据权利要求1所述的方法,其特征在于,所述缓存服务器包括分布式的内存对象缓存系统memcache服务器。6.一种网站中更新缓存服务器的系统,其特征在于,包括: 主数据库,用于接收用户更新的数据,以及将接收到的用户更新的数据同步到从数据库; 缓存服务器,用于接收所述用户针对更新的数据发出的多个并发的主动更新请求,并缓存所述多个并发的主动更新请求中携带的用户更新的数据;以及在从数据库将从主数据库同步过来的用户更新的数据写入本缓存服务器之后,在主动更新请求下缓存的用户更新的数据失效; 所述从数据库,用于将从主数据库同步过来的用户更新的数据写入所述缓存服务器。7.根据权利要求6所述的系统,其特征在于,所述缓存服务器在主动更新请求下的缓存失效时间长度小于从所述从数据库同步过来的缓存失效时间长度。8.根据权利要求7所述的系统,其特征在于,所述缓存服务器在主动更新请求下的缓存失效时间长度为所述主数据库和所述从数据库执行数据同步的延迟时间长度之和。9.根据权利要求6所述的系统,其特征在于,所述从数据库,还用于在数据同步完成且主动更新请求下的缓存失效时,响应用户的访问请求并提供待查询的数据。10.根据权利要求6所述的系统,其特征在于,所述缓存服务器包括分布式的内存对象缓存系统memcache服务器。
【专利摘要】本发明实施例提供一种网站中更新缓存服务器的方法及系统,该方法包括:主数据库接收用户更新的数据,以及缓存服务器接收所述用户针对更新的数据发出的多个并发的主动更新请求,并缓存所述多个并发的主动更新请求中携带的用户更新的数据;所述主数据库将接收到的用户更新的数据同步到从数据库;所述从数据库将从主数据库同步过来的用户更新的数据写入所述缓存服务器,之后所述缓存服务器在主动更新请求下缓存的用户更新的数据失效。本发明的实施例通过合理的策略制定,采用主动更新缓存与被动更新缓存相结合的方式,巧妙地提高了缓存的命中率,减少了响应时间,同时也通过相应的策略解决了数据并发时的数据处理问题,从而使得缓存和数据库中的数据尽可能地处于最终的一致。
【IPC分类】G06F17/30
【公开号】CN104881444
【申请号】CN201510244009
【发明人】韦昌佗
【申请人】微梦创科网络科技(中国)有限公司
【公开日】2015年9月2日
【申请日】2015年5月14日
转载请注明原文地址:https://www.famiwei.com/read-8138631.html

最新回复(0)