CN113014683B - 请求处理方法、装置、电子设备及存储介质 - Google Patents
请求处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113014683B CN113014683B CN201911330516.1A CN201911330516A CN113014683B CN 113014683 B CN113014683 B CN 113014683B CN 201911330516 A CN201911330516 A CN 201911330516A CN 113014683 B CN113014683 B CN 113014683B
- Authority
- CN
- China
- Prior art keywords
- domain name
- configuration information
- service request
- cache
- lrucache
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 44
- 238000003860 storage Methods 0.000 title claims abstract description 22
- 238000000034 method Methods 0.000 claims abstract description 97
- 230000008569 process Effects 0.000 claims abstract description 72
- 238000012545 processing Methods 0.000 claims abstract description 30
- 238000009826 distribution Methods 0.000 claims abstract description 9
- 238000004590 computer program Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003238 somatosensory effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5053—Lease time; Renewal aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种请求处理方法、装置、电子设备及计算机可读存储介质。该方法应用于内容分发网络的节点设备,包括:接收客户端发送的第一服务请求,其中,所述第一服务请求中携带所述客户端的域名;通过本地进程查询所述进程内的Lrucache缓存中与所述域名对应的信息;在查询到的与所述域名对应的信息为所述域名的配置信息的情况下,响应所述第一服务请求;在查询到的与所述域名对应的信息为未配置配置信息的情况下,拒绝响应所述第一服务请求。本发明可以减少内容分发网络的节点设备的CPU消耗。
Description
技术领域
本发明涉及软件技术领域,尤其涉及一种请求处理方法、装置、电子设备及存储介质。
背景技术
现有的CDN(Content Delivery Network,内容分发网络)架构普遍采用反向代理+cache(缓存)的架构,即CDN的节点设备采用反向代理+cache(缓存)的架构,反向代理一般采用开源软件nginx。为了做到多进程模型的nginx的配置实时下发实时生效,配置要在nginx实现共享内存,由各个进程之间共享并进行进程间通讯。但是由于共享内存是在进程之间共享,因此每一个进程对共享内存都是可读可写的,为了保持文件的原子性,共享内存会加上锁。当存在多个向CDN网络的配置查询请求时,多进程之间会出现抢锁现象。
为避免上述抢锁问题,目前采用的方案是使用Openresty提供的进程内部的容器Lrucache。Lrucache是使用LRU缓存策略的缓存,LRU是最近最少使用到的(least recentlyused),就是当超出缓存容量的时候,优先淘汰链表中最近最少使用的那个数据。Lrucache位于每一个进程内部,由每个进程单独维护,各个进程互不影响,互不感知,所以使用Lrucache缓存,单进程内部就不会出现抢锁问题。
然而,相关技术的方案中,通过增加一层Lrucache,当存在请求时,先查询Lrucache中是否存在该请求对应的配置,Lrucache中没查到,再查询共享内存,如果共享内存查到了,再将查询到的配置写进Lrucache,缓存一段时间,在Lrucache缓存的这段时间内直接使用Lrucache内缓存的数据,Lrucache过期后缓存的内容会丢弃。如果在共享内存中也查询不到该请求对应的配置就返回失败。如此会导致出现每一条请求都会查询共享内存。
此外,Lrucache和共享内存的同步方式是配置更新后只会主动的更新到共享内存的对应加速的域名(host),Lrucache不会主动更新,Lrucache会设置一个周期的过期时间(例如30s),以保持配置更新速度。
这种情况下,随着CDN服务客户的增多,要求加速的域名也越来越多,虽然加了一层进程内的缓存Lrucache,但Lrucache过期的时候,同一时刻还是会出现大量的共享内存查询造成抢锁现象,消耗内容分发网络的节点设备的CPU。
发明内容
本发明的目的在于提供一种请求处理方法、装置、电子设备及计算机可读存储介质,以降低内容分发网络的节点设备的CPU消耗。
根据本发明的第一方面,提供了一种请求处理方法,应用于内容分发网络的节点设备,所述方法包括:
接收客户端发送的第一服务请求,其中,所述第一服务请求中携带所述客户端的域名;
通过本地进程查询所述进程内的Lrucache缓存中与所述域名对应的信息;
在查询到的与所述域名对应的信息为所述域名的配置信息的情况下,响应所述第一服务请求;
在查询到的与所述域名对应的信息为未配置配置信息的情况下,拒绝响应所述第一服务请求。
可选的,所述Lrucache缓存被设置为永不过期。
可选的,在接收客户端发送的第一服务请求之前,所述方法还包括:
接收所述客户端发送的第二服务请求,所述第二服务请求中携带所述客户端的域名;
通过本地进程查询所述Lrucache缓存中是否存在与所述域名对应的配置信息;
在所述Lrucache缓存中查询不到所述域名的配置信息的情况下,查询本地共享内存;
在所述本地共享内存中查询不到所述域名的配置信息的情况下,将用于指示所述域名未配置配置信息的信息写入所述Lrucache缓存中;
在所述本地共享内存中查询到所述域名的配置信息的情况下,将所述域名的配置信息写入所述Lrucache缓存中。
可选的,所述方法还包括:
判断所述域名的配置信息是否发生更新;
在判断所述域名的配置信息发生更新时,将存储在所述Lrucache缓存中的所述域名的原有配置信息删除。
可选地,判断所述域名的配置是否发生更新包括:
查询本地增量内存中是否存在所述域名;其中,在查询结果为存在所述域名的情况下,所述域名的配置信息发生了更新。
可选的,在将存储在所述Lrucache缓存中的所述域名的原有配置信息删除之后,所述方法还包括:
接收所述客户端发送的第三服务请求,所述第三服务请求中携带所述客户端的域名;
查询本地共享内存以获取所述域名更新后的配置信息;
将获取的所述更新后的配置信息同步到所述Lrucache缓存中。
根据本发明的第二方面,提供了一种请求处理装置,应用于内容分发网络的节点设备,所述装置包括:
第一接收模块,用于接收客户端发送的第一服务请求,其中,所述第一服务请求中携带所述客户端的域名;
第一查询模块,用于通过本地进程查询所述进程内的Lrucache缓存中与所述域名对应的信息;
响应模块,用于在查询到的与所述域名对应的信息为所述域名的配置信息的情况下,响应所述第一服务请求;以及用于在查询到的与所述域名对应的信息为未配置配置信息的情况下,拒绝响应所述第一服务请求。
可选的,所述装置还包括:
第二接收模块,用于在接收客户端发送的第一服务请求之前,接收所述客户端发送的第二服务请求,所述第二服务请求中携带所述客户端的域名;
第二查询模块,用于通过本地进程查询所述Lrucache缓存中是否存在与所述域名对应的配置信息;以及用于在所述Lrucache缓存中查询不到所述域名的配置信息的情况下,查询本地共享内存;
写入模块,用于在所述本地共享内存中查询不到所述域名的配置信息的情况下,将用于指示所述域名未配置配置信息的信息写入所述Lrucache缓存中;以及用于在所述本地共享内存中查询到所述域名的配置信息的情况下,将所述域名的配置信息写入所述Lrucache缓存中。
根据本发明的第三方面,提供了一种电子设备,此电子设备包括:
根据本发明第二方面所述的请求处理装置;或者,
处理器和存储器,存储器用于存储可执行的指令,所述指令用于控制处理器执行根据本发明第一方面所述的请求处理方法。
根据本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现根据本发明第一方面所述的请求处理方法。
根据本发明实施例,在接收到客户端发送的服务请求后,通过查询Lrucache缓存中与该服务请求携带的域名对应的信息,在信息为所述域名的配置信息时,响应服务请求,在信息为未配置配置信息时,拒绝该服务请求,即不管域名有没有配置配置信息,在Lrucache缓存中都尽可能缓存,进而在请求到CDN节点设备时,能够尽可能在Lrucache缓存中命中域名对应的配置信息,从而可以减少对CDN节点设备共享内存的查询次数,避免多进程之间发生抢锁问题,降低了CDN节点设备的CPU消耗。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1为可用于实现本发明实施例的服务器的硬件配置结构方框图。
图2为本发明第一实施例的请求处理方法流程图。
图3为本发明第二实施例的请求处理方法流程图。
图4为本发明第三实施例的请求处理方法示例流程图。
图5为本发明第四实施例的请求处理方法示例流程图。
图6为本发明实施例的Lrucache缓存的配置同步流程图。
图7为本发明实施例的请求处理装置的结构方框图。
图8为本发明实施例的请求处理装置的配置同步模块的结构方框图。
图9为本发明实施例的电子设备的结构方框图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人物已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1是示出可以实现本发明的实施例的服务器1000的硬件配置的框图。服务器1000可以是整体式服务器或是跨多计算机或计算机数据中心的分散式服务器。服务器可以是各种类型的,例如但不限于,内容分发网络的服务器、分布式系统的存储服务器、云数据库服务器、云计算服务器、云管理服务器、网络服务器、新闻服务器、邮件服务器、消息服务器、广告服务器、文件服务器、应用服务器、交互服务器、存储服务器、数据库服务器或代理服务器等。在一些实施例中,每个服务器可以包括硬件,软件,或用于执行服务器所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。例如,服务器例如刀片服务器、云端服务器等,或者可以是由多台服务器组成的服务器群组,可以包括上述类型的服务器中的一种或多种等等。
如图1所示,服务器1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400,或者还可以包括显示装置1500、输入装置1600等等。其中,处理器1100可以是中央处理器CPU、微处理器MCU等,用于执行计算机程序。该计算机程序可以采用比如x86、Arm、RISC、MIPS、SSE等架构的指令集编写。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、耳机接口等。通信装置1400例如能够利用光纤或电缆进行有线通信,或者无线通信,具体地可以包括WiFi通信、蓝牙通信、2G/3G/4G/5G通信等。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘、体感输入等。
图1所示的服务器仅仅是说明性的并且决不意味着对本发明、其应用或使用的任何限制。应用于本发明的实施例中,服务器1000例如可以为本发明实施例的请求处理装置,其可以包括存储器1200和处理器1100,存储器1200用于存储指令,所述指令用于控制所述处理器1100进行操作以执行本发明实施例提供的任意一项请求处理方法。本领域技术人员应当理解,尽管在图1中对服务器1000示出了多个装置,但是,本发明可以仅涉及其中的部分装置,例如服务器1000可以只涉及处理器1100和存储装置1200。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
在本发明一个实施例中,提供一种请求处理方法应用于内容分发网络(CDN)的节点设备。
本发明的请求处理方法可用来查询请求在CDN节点设备加速的域名(host)的配置信息,CDN节点设备按照每一个域名存储相应的配置,CDN服务非常多的客户,不同的域名代表不同的客户,因每个客户需要的特定服务不一样,因为不同客户的配置是不同的。
CDN节点设备多进程的共享内存和每个进程内的Lrucache缓存中存储的数据是以key:value(键:值)的形式,每一个域名为key,这个域名下面的所有的配置是一个value。
当存在CDN内容服务的请求时,从CDN节点设备的处理该请求的进程内的Lrucache缓存或者节点设备的多进程的共享内存中查找到对应的域名配置,并根据该配置响应所述请求的内容。
本发明实施例的请求处理方法可以是由服务器实施,该服务器例如可以是如图1所示的服务器1000。
图2为本发明第一实施例的请求处理方法流程图,如图2所示,本发明实施例的请求处理方法包括以下步骤:
接收客户端发送的第一服务请求,其中,第一服务请求中携带所述客户端的域名(步骤2)。
第一服务请求为CDN内容服务请求,在收到服务请求后,首先通过本地进程查询所述进程内的Lrucache缓存中与所述域名对应的信息(步骤4)。CDN是多进程的,一个服务请求仅由一个CDN节点设备内的一个进程负责处理,本地进程为CDN多进程中的一个,处理服务请求的进程是随机分配的,如果请求数量很大,则可以根据负载均衡协调CDN节点设备的各个进程,处理对应的服务请求。
步骤6,在查询到的与所述域名对应的信息为所述域名的配置信息的情况下,响应所述第一服务请求,从而根据从Lrucache缓存查询到的与域名对应的配置信息,向该客户端发送第一服务请求的内容。
步骤8,在查询到的与所述域名对应的信息为未配置配置信息的情况下,拒绝响应所述第一服务请求。
在一个示例中,该域名在进程内的Lrucache缓存中对应的配置信息中value的值为一个特殊值,该特殊值用于表示这个域名未配置配置信息,该特殊值可以理解为上述域名对应的信息。因此,查询到该域名对应信息为未配置配置信息的情况下,拒绝该域名在该进程所属CDN请求加速的服务请求。
在一个示例中,所述Lrucache缓存被设置为永不过期。
需要说明的是,上述Lrucache缓存中预先存储有与域名对应的信息,与域名对应的信息包括域名的配置信息和指示域名未配置配置信息的信息。下面将结合图3对将域名对应的信息是如何被预先存储至Lrucache缓存进行描述,图3为本发明第二实施例的请求处理方法流程图。
该请求处理方法可以是由服务器实施,该服务器例如可以是如图1所示的服务器1000。
如图3所示,该实施例的请求处理方法包括以下步骤:
步骤12,接收所述客户端发送的第二服务请求,所述第二服务请求中携带所述客户端的域名;
步骤14,通过本地进程查询所述Lrucache缓存中是否存在与所述域名对应的配置信息;
步骤16,在所述Lrucache缓存中查询不到所述域名的配置信息的情况下,查询本地共享内存;
步骤18,在所述本地共享内存中查询不到所述域名的配置信息的情况下,将用于指示所述域名未配置配置信息的信息写入所述Lrucache缓存中;
步骤20,在所述本地共享内存中查询到所述域名的配置信息的情况下,将所述域名的配置信息写入所述Lrucache缓存中。
在一个示例中,本发明的请求处理方法还包括以下步骤:
判断所述域名的配置信息是否发生更新;在判断所述域名的配置信息发生更新时,将存储在所述Lrucache缓存中的所述域名的原有配置信息删除。
其中,判断所述域名的配置是否发生更新包括:查询本地增量内存中是否存在所述域名;其中,在查询结果为存在所述域名的情况下,所述域名的配置信息发生了更新。
在一个示例中,在将存储在所述Lrucache缓存中的所述域名的原有配置信息删除之后,本发明的请求处理方法还包括:
接收所述客户端发送的第三服务请求,所述第三服务请求中携带所述客户端的域名。然后,查询本地共享内存以获取所述域名更新后的配置信息,并将获取的所述更新后的配置信息同步到Lrucache缓存中。
下面将结合图4和图5的实施例,分别对本发明图2和图3实施例的请求处理方法展开进行详细描述。图4为本发明第三实施例的请求处理方法示例流程图。该请求处理方法可以是由服务器实施,该服务器例如可以是如图1所示的服务器1000。
该第三实施例与图3的第二实施例对应,在该实施例中,主要描述了将域名对应的信息(域名的配置信息和指示域名未配置配置信息的信息)预先存储至Lrucache缓存中的过程。
如图4所示,该实施例的请求处理方法包括以下步骤:
接收客户端发送的服务请求A,服务请求A中携带所述客户端的域名(步骤102)。
在收到服务请求A后,首先查询Lrucache缓存中是否存在与所述域名对应的配置信息(步骤104)。服务请求A为CDN内容服务请求。
在Lrucache缓存中查询到与所述域名对应的配置信息时,响应所述服务请求A返回结果到客户端,即根据查询到的域名配置信息返回服务请求A请求的对应内容(步骤112)。
步骤106,若进程内部的Lrucache缓存查询不到该服务请求A对应域名的配置信息,则继续向CDN节点设备的共享内存中进行查询,以确定共享内存中是否存在与所述域名对应的配置信息。
步骤110,CDN节点设备的共享内存中若存在该域名的配置信息,则将查询到的域名对应配置信息(key:value)写入Lrucache缓存。其中,设置lrucache缓存永不过期。
步骤108,若共享内存中查询不到该域名的配置信息,则将用于指示所述域名未配置配置信息的信息写入Lrucache缓存中。
步骤112,响应服务请求A返回结果,返回结果存在两种情况,在步骤108将指示所述域名未配置配置信息的信息写入Lrucache缓存中之后,会向服务请求A发出拒绝请求状态码;步骤110将共享内存中查询的域名配置信息写入Lrucache缓存中之后,会根据查询的域名配置信息向服务请求A返回对应的内容。
如上文所述,这种情况下该域名在进程内的Lrucache缓存中对应的配置信息中value的值为一个特殊值,该特殊值用于表示这个域名未配置配置信息。
在拒绝所述服务请求A的情况下,则将拒绝请求的状态码作为响应客户端服务请求A的结果返回(步骤112)。
下面参考图5,图5为本发明第四实施例的请求处理方法示例流程图。该请求处理方法可以是由服务器实施,该服务器例如可以是如图1所示的服务器1000。
该第四实施例与图2的第一实施例对应,在该实施例中,主要描述了在域名对应的信息预先存储至Lrucache缓存后,处理客户端服务请求的过程。如图5所示,该实施例的请求处理方法包括以下步骤:
步骤122,接收客户端发送的服务请求B,服务请求B中携带所述客户端的域名;服务请求B为CDN内容服务请求。
步骤124,查询Lrucache缓存中是否存在与所述域名对应的信息,这里,域名对应的信息包括预先存储的域名的配置信息和指示域名未配置配置信息的信息。
步骤126,查询到与所述域名对应的信息为域名的配置信息,此时会进入步骤130,根据查询的域名配置信息响应服务请求B返回对应的内容。
步骤128,查询到与所述域名对应的信息为未配置配置信息,此时会进入步骤130,拒绝所述服务请求B,并将拒绝请求的状态码作为结果返回给服务请求B。
在步骤124中,若查询Lrucache缓存中不存在与所述域名对应的信息,即不存在域名的配置信息或指示域名未配置配置信息的信息,则并进入步骤132。
步骤132,步骤132执行上述图4中的步骤106到110相同的步骤,即继续查询共享内存中是否存在与所述域名对应的配置信息,如果存在,则将域名的配置信息写入Lrucache缓存中,如果不存在,将用于指示域名未配置配置信息的信息写入Lrucache缓存中,从而将对应服务请求B的域名对应信息(域名的配置信息或指示域名未配置配置信息的信息)存储到该进程的Lrucache缓存中。
之后,进入步骤130,该步骤与图4实施例的步骤112相同,根据步骤106对应的具体查询情况响应服务请求B返回结果。
不论是在当前处理服务请求进程内部的Lrucache缓存还是在CDN节点设备多进程的共享内存中能够查找到所述域名的配置信息,还是Lrucache缓存和共享内存中都查找不到所述域名的配置信息(即,服务请求的域名不在当前CDN节点设备加速)时,都需要进一步将所述域名对应的信息(配置信息或未配置配置信息的信息)保存到处理该服务请求的Lrucache缓存中。
在一个示例中,可以同时设置该Lrucache缓存永不过期,如此区别于现有技术Lrucache缓存的配置信息仅缓存一段时间后就会视为过期丢弃,在本发明中Lrucache缓存中保存的域名的配置信息不会过期和丢弃。
将Lrucache缓存或共享内存可以查询到host配置信息以(key:value)的形成保存到处理该服务请求的当前进程内部的Lrucache缓存中,这样做的目的是,以后再有这个host的访问只要查询该进程内部的Lrucache缓存即可查询得到对应的host配置信息,不需要再查询共享内存。
同样地,在Lrucache缓存和共享内存都查询不到的host对应的配置信息时,也以(key:value)特殊值的形式将表示该域名未配置配置信息的信息保存到当前进程内部的Lrucache缓存中。这样做的目的是,以后再有这个host(域名)的访问,只要查询Lrucache缓存即可以获得该host对应的信息,即特殊值就能够直接拒绝该host的访问,如此就不需要再继续查询共享内存。
通过上述实施例可知,对于每一个域名若未预先存储其对应信息时,需要查询共享内存的次数等于进程数(每个进程查一次共享内存,然后写入该进程的Lrucache缓存,其中包括共享内存没有查询到的host对应指示该域名未配置配置信息的信息也会写入Lrucache)。
根据本发明的请求处理方法,在每次收到host的服务请求后,负责处理这条请求的进程会查询配置先查询Lrucache缓存得到host配置信息,若Lrucache缓存查询不到配置信息,再查共享内存。无论共享内存是否查询到该host的配置信息,都会将这个host的相关信息存入本进程的Lrucache缓存中。在进一步将Lrucache设置成永不过期的情况下,以后只要是这个host的后续请求,都会在该进程的Lrucache缓存中命中。
现有技术对于每一个请求到CND节点设备的服务请求,包括不是在此CDN节点设备加速的域名,对每一条请求都会查询共享内存。这样导致查询共享内存的次数增大,对于CDN节点设备的CPU消耗也愈加明显。
根据本发明实施例,在接收到客户端发送的服务请求后,通过查询Lrucache缓存中与该服务请求携带的域名对应的信息,在信息为所述域名的配置信息时,响应服务请求,在信息为未配置配置信息时,拒绝该服务请求,即不管域名有没有配置配置信息,在Lrucache缓存中都尽可能缓存,进而在请求到CDN节点设备时,能够尽可能在Lrucache缓存中命中域名对应的配置信息,从而可以减少对CDN节点设备共享内存的查询次数,避免多进程之间发生抢锁问题,降低了CDN节点设备的CPU消耗。
关于本发明的查询方法与现有技术的查询方法优化效果,下面举例说明:
假设CDN节点设备一共服务100000个域名,CDN节点设备为多进程,进程数是n。
则利用本发明请求处理方法对应的优化效果如下:
优化前(利用现有技术请求处理方法)
每一天,查询共享内存的次数是:n*100000*24*3600/30。
优化后(利用本发明请求处理方法)
启动第一天查询共享内存的次数:100000+n*24*3600/30;
后续每天查询共享内存的次数:n*24*3600/30,其中查询次数下降和CDN节点设备服务的域名数量成正比。
因此,本发明的CDN请求处理方法,可以在host请求服务时大幅减少查询CDN节点设备共享内存的次数,这样也很大程度地降低了CDN节点设备的CPU消耗。
如上文所述,本发明在保存host配置信息时同时设置配置信息在Lrucache缓存中永不过期,这样就会出现配置同步问题。
下面将结合图6的实施例,对本发明的CDN请求处理方法的配置同步作出说明,图6为本发明实施例的Lrucache缓存的配置同步流程图。
如图6所示,步骤202中,在CDN节点设备中增加一个增量内存,增量内存用于记录配置发生更新的域名:增加一个共享内存成员,可定义为增量内存,增量内存为CDN节点设备的多进程之间通讯的共享内存。增量内存负责记录在一定周期内配置信息发生过更新的域名名称,增量内存存储的内容是所有在预定周期发生过配置信息修改的host,存储格式也是key:value的形式,其中key是固定的,value表示一个个的域名名称。当配置信息发生改变时,通过增量内存可以使得每个共享该增量内存的进程都能够感知到。
步骤204,预定周期检查增量内存中是否记录有域名:在CDN节点设备中每一个进程增加一个定时器,每一个周期检查一下增量内存是否记录有域名。
在增量内存中,所有的配置信息发生变更的host组成的一个链表。增量内存中没有域名host的记录,说明这个周期内该域名的配置信息没有发生过变更(步骤206)。增量内存中记录的域名,说明这个周期内该域名的配置信息发生过变更(步骤208)。
也就是说,增量内存中记录的那些host,表示其对应服务请求的当前进程lrucahce缓存中的配置信息已经是脏数据,则在步骤210中,删除本进程Lrucache缓存中对应增量内存中记录的host的配置信息。下一次再有这些host的访问,即再次收到当前进程的服务请求时,由于该host的配置信息作为脏数据已在Lrucache缓存中删除,对于本次服务请求Lrucache缓存将查询不到,此时会再查共享内存以获取该host的更新配置信息(步骤212)。最后,将该host的更新配置信息同步到本进程内部的Lrucache缓存中(步骤214)。
在同步host配置信息的情况下,会存在共享内存的再次查询。还是假设CDN节点设备一共服务100000个域名,CDN服务器为多进程,进程数是n,每天更新的域名是20个。此时,利用本发明请求处理方法优化后,后续每天查询共享内存的次数为:n*24*(3600/30)+20。相比现有技术,本发明查询共享内存的次数也是明显减少。
不在CDN节点设备加速的host如果访问到这个CDN节点设备,Lrucache缓存和共享内存中没有记录该host的配置信息,因此不会查询到对应的配置信息。根据本发明的请求处理方法,即使共享内存查询不到,初次查询请求时,Lrucache缓存也会写入一份指示该域名未配置配置信息的信息来记录该域名不在当前CDN节点设备加速的情况,下次这个域名再向CDN节点设备进行加速请求时,根据Lrucache中记录的指示该域名未配置配置信息的信息对该请求直接拒绝。
因此,相比现有技术对于每一条这种请求都会先查一遍本进程的Lrucache缓存,然后在查询一遍CDN节点设备的共享内存的情况,本发明能够在请求到CDN节点设备时,尽可能在Lrucache缓存中命中域名对应的配置信息,会减少对CDN节点设备共享内存的查询次数,降低CDN节点设备的CPU消耗,避免多进程之间发生抢锁问题。
在本发明另一个实施例中,还提供了一种请求处理装置2000,图7为本发明实施例的请求处理装置2000的结构方框图。
如图所示,请求处理装置2000包括第一接收模块2020、第一查询模块2040以及响应模块2060。第一接收模块2020用于接收客户端发送的第一服务请求,其中,所述第一服务请求中携带所述客户端的域名。第一查询模块2040用于通过本地进程查询所述进程内的Lrucache缓存中与所述域名对应的信息,响应模块2060用于在查询到的与所述域名对应的信息为所述域名的配置信息的情况下,响应所述第一服务请求;以及用于在查询到的与所述域名对应的信息为未配置配置信息的情况下,拒绝响应所述第一服务请求。
在本发明的一个示例中,所述装置2000还包括:第二接收模块(图中未示出)、第二查询模块(图中未示出)及写入模块(图中未示出)。
第二接收模块,用于在接收客户端发送的第一服务请求之前,接收所述客户端发送的第二服务请求,所述第二服务请求中携带所述客户端的域名,接收的第二服务请求为对应域名的初次查询请求时。
第二查询模块,用于通过本地进程查询所述Lrucache缓存中是否存在与所述域名对应的配置信息;以及用于在所述Lrucache缓存中查询不到所述域名的配置信息的情况下,查询本地共享内存;
写入模块,用于在所述本地共享内存中查询不到所述域名的配置信息的情况下,将用于指示所述域名未配置配置信息的信息写入所述Lrucache缓存中;以及用于在所述本地共享内存中查询到所述域名的配置信息的情况下,将所述域名的配置信息写入所述Lrucache缓存中。
现在参考图8的实施例,该实施例中,请求处理装置还包括配置同步模块,用于根据域名配置的更新或变化对存储在对应Lrucache缓存中的所述域名的原有配置信息进行同步。
图8为本发明实施例请求处理装置的配置同步模块的结构方框图。
在本示例中,请求处理装置2000的配置同步模块包括:
判断模块2220,用于判断所述域名的配置信息是否发生更新;
删除模块2240,用于在判断模块2220判断所述域名的配置信息发生更新时,将存储在Lrucache缓存20中的所述域名的原有配置信息删除。
在一个示例中,在删除模块2240将存储在Lrucache缓存20中的所述域名的原有配置信息删除之后,配置同步模块还包括:
第三接收模块2250,用于接收所述客户端发送的第三服务请求,所述第三服务请求中携带所述客户端的域名;
第三查询模块2260,用于查询共享内存30以获取所述域名的更新配置数据;以及
同步模块2280,用于将第三查询模块2260获取的所述域名的更新配置数据同步到Lrucache缓存20中。
在一个示例中,判断模块2220判断所述域名的配置信息是否发生更新可以通过查询本地增量内存10中是否存在所述域名;其中,在查询结果为存在所述域名的情况下,所述域名的配置信息发生了更新。
在CDN节点设备中增加一个增量内存10,用于记录配置信息发生更新的域名,判断模块2220检测所述增量内存10中是否记录有域名,并将记录在所述增量内存中的域名判断为配置发生更新。
根据本发明的再一个实施例,还提供了一种电子设备,该电子设备3000可以是图1所示的服务器1000。图9为本发明实施例的电子设备的结构方框图。
一方面,该电子设备3000可以包括前述的请求处理装置2000,用于实施本发明任意实施例的请求处理方法。
另一方面,如图9所示,电子设备3000可以包括存储器3200和处理器3400,存储器3200用于存储可执行的指令;该指令用于控制处理器3400执行前述的请求处理方法。
在本实施例中,电子设备3000可以是图1中的服务器1000,也可以是其他终端设备,在此不做限定。
最后,根据本发明的又一个实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序在被处理器执行时实现根据本发明任意实施例所述的请求处理方法。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人物来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人物来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人物能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。
Claims (8)
1.一种请求处理方法,应用于内容分发网络的节点设备,其特征在于,包括:
接收客户端发送的第一服务请求,其中,所述第一服务请求中携带所述客户端的域名;
通过本地进程查询所述进程内的Lrucache缓存中与所述域名对应的信息;
在查询到的与所述域名对应的信息为所述域名的配置信息的情况下,响应所述第一服务请求;
在查询到的与所述域名对应的信息为未配置配置信息的情况下,拒绝响应所述第一服务请求;
在所述 接收客户端发送的第一服务请求之前,所述方法还包括:接收所述客户端发送的第二服务请求,所述第二服务请求中携带所述客户端的域名;通过本地进程查询所述Lrucache缓存中是否存在与所述域名对应的配置信息;在所述Lrucache缓存中查询不到所述域名的配置信息的情况下,查询本地共享内存;在所述本地共享内存中查询不到所述域名的配置信息的情况下,将用于指示所述域名未配置配置信息的信息写入所述Lrucache缓存中;在所述本地共享内存中查询到所述域名的配置信息的情况下,将所述域名的配置信息写入所述Lrucache缓存中。
2.根据权利要求1所述的方法,其特征在于,所述Lrucache缓存被设置为永不过期。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
判断所述域名的配置信息是否发生更新;
在判断所述域名的配置信息发生更新时,将存储在所述Lrucache缓存中的所述域名的原有配置信息删除。
4.根据权利要求3所述的方法,其特征在于,判断所述域名的配置是否发生更新包括:
查询本地增量内存中是否存在所述域名;其中,在查询结果为存在所述域名的情况下,所述域名的配置信息发生了更新。
5.根据权利要求3所述的方法,其特征在于,在将存储在所述Lrucache缓存中的所述域名的原有配置信息删除之后,所述方法还包括:
接收所述客户端发送的第三服务请求,所述第三服务请求中携带所述客户端的域名;
查询本地共享内存以获取所述域名更新后的配置信息;
将获取的所述更新后的配置信息同步到所述Lrucache缓存中。
6.一种请求处理装置,应用于内容分发网络的节点设备,其特征在于,包括:
第一接收模块,用于接收客户端发送的第一服务请求,其中,所述第一服务请求中携带所述客户端的域名;
第一查询模块,用于通过本地进程查询所述进程内的Lrucache缓存中与所述域名对应的信息;
响应模块,用于在查询到的与所述域名对应的信息为所述域名的配置信息的情况下,响应所述第一服务请求;以及用于在查询到的与所述域名对应的信息为未配置配置信息的情况下,拒绝响应所述第一服务请求;
第二接收模块,用于在接收客户端发送的第一服务请求之前,接收所述客户端发送的第二服务请求,所述第二服务请求中携带所述客户端的域名;
第二查询模块,用于通过本地进程查询所述Lrucache缓存中是否存在与所述域名对应的配置信息;以及用于在所述Lrucache缓存中查询不到所述域名的配置信息的情况下,查询本地共享内存;
写入模块,用于在所述本地共享内存中查询不到所述域名的配置信息的情况下,将用于指示所述域名未配置配置信息的信息写入所述Lrucache 缓存中;以及用于在所述本地共享内存中查询到所述域名的配置信息的情况下,将所述域名的配置信息写入所述Lrucache缓存中。
7.一种电子设备,其特征在于,包括:
根据权利要求6所述的请求处理装置;或者,
处理器和存储器,所述存储器用于存储可执行的指令,所述指令用于控制所述处理器执行根据权利要求1至5中任一权利要求所述的请求处理方法。
8.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1至5中任一权利要求所述的请求处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911330516.1A CN113014683B (zh) | 2019-12-20 | 2019-12-20 | 请求处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911330516.1A CN113014683B (zh) | 2019-12-20 | 2019-12-20 | 请求处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113014683A CN113014683A (zh) | 2021-06-22 |
CN113014683B true CN113014683B (zh) | 2022-07-19 |
Family
ID=76382163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911330516.1A Active CN113014683B (zh) | 2019-12-20 | 2019-12-20 | 请求处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113014683B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013139337A2 (en) * | 2012-03-05 | 2013-09-26 | Netiter Aps | SYSTEM AND METHOD FOR DATA COMMUNICATION BETWEEN A FIRST INTERNET PROTOCOL VERSION (IPv4) AND A SECOND INTERNET PROTOCOL VERSION (IPv6) |
CN103973820A (zh) * | 2013-01-28 | 2014-08-06 | 深圳市快播科技有限公司 | 一种域名系统的优化方法、一种优化的域名系统 |
CN108509586A (zh) * | 2018-03-29 | 2018-09-07 | 努比亚技术有限公司 | 缓存管理的方法、装置及计算机可读存储介质 |
-
2019
- 2019-12-20 CN CN201911330516.1A patent/CN113014683B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013139337A2 (en) * | 2012-03-05 | 2013-09-26 | Netiter Aps | SYSTEM AND METHOD FOR DATA COMMUNICATION BETWEEN A FIRST INTERNET PROTOCOL VERSION (IPv4) AND A SECOND INTERNET PROTOCOL VERSION (IPv6) |
CN103973820A (zh) * | 2013-01-28 | 2014-08-06 | 深圳市快播科技有限公司 | 一种域名系统的优化方法、一种优化的域名系统 |
CN108509586A (zh) * | 2018-03-29 | 2018-09-07 | 努比亚技术有限公司 | 缓存管理的方法、装置及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113014683A (zh) | 2021-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11526291B2 (en) | Integrated hierarchical storage management | |
US10061852B1 (en) | Transparent proxy tunnel caching for database access | |
US20210132849A1 (en) | Data migration method and apparatus | |
US9847907B2 (en) | Distributed caching cluster management | |
US10462250B2 (en) | Distributed caching cluster client configuration | |
RU2629448C2 (ru) | Система и способ управления и организации кэша веб-браузера | |
CN110235118B (zh) | 通过存根化优化内容存储 | |
JP5701398B2 (ja) | 計算機システム、データ管理方法及びプログラム | |
CN110765036B (zh) | 在控制设备处管理元数据的方法和设备 | |
CN112882647B (zh) | 存储和访问数据的方法、电子设备和计算机程序产品 | |
EP3049940B1 (en) | Data caching policy in multiple tenant enterprise resource planning system | |
US9529772B1 (en) | Distributed caching cluster configuration | |
US10585970B2 (en) | Managing dynamic webpage content | |
CN113271359A (zh) | 刷新缓存数据的方法、装置、电子设备和存储介质 | |
CN114064668A (zh) | 用于存储管理的方法、电子设备和计算机程序产品 | |
US9460137B2 (en) | Handling an increase in transactional data without requiring relocation of preexisting data between shards | |
US9213673B2 (en) | Networked applications with client-caching of executable modules | |
CN113014683B (zh) | 请求处理方法、装置、电子设备及存储介质 | |
CN111031126A (zh) | 集群缓存共享方法、系统、设备及存储介质 | |
JP2013250762A (ja) | 文書管理サーバ、コンピュータプログラム、文書管理方法 | |
US20220237176A1 (en) | Method and system for managing changes of records on hosts | |
US11663211B2 (en) | Data retrieval systems and methods | |
CN114117280A (zh) | 页面静态资源使用方法、装置、终端设备及存储介质 | |
CN110851192B (zh) | 一种响应降级开关配置的方法和装置 | |
US11327963B2 (en) | Data retrieval systems and methods |
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 |