CN107995264B - 一种基于消息队列的cdn服务验证码分发方法和系统 - Google Patents
一种基于消息队列的cdn服务验证码分发方法和系统 Download PDFInfo
- Publication number
- CN107995264B CN107995264B CN201711157421.5A CN201711157421A CN107995264B CN 107995264 B CN107995264 B CN 107995264B CN 201711157421 A CN201711157421 A CN 201711157421A CN 107995264 B CN107995264 B CN 107995264B
- Authority
- CN
- China
- Prior art keywords
- verification code
- message queue
- cdn node
- verification
- cache region
- 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
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种基于消息队列的CDN服务验证码分发方法和系统。该方法接收验证码生成服务器生成的验证码,并将验证码存入消息队列中;然后通过所述消息队列将验证码分发给各CDN节点,各CDN节点通过环形缓存区接收并存储分发的验证码。各CDN节点持续从所述消息队列获取验证码以更新环形缓存区的内容,环形缓存区的数据通过覆盖写入的方式进行更新。该系统包括验证码生成服务器、消息队列服务器和若干CDN节点。本发明通过消息队列将多个生产者产生的验证码无重复的发送到各个CDN节点,以减少CDN节点的资源消耗,降低响应时延。
Description
技术领域
本发明属于信息技术领域,具体涉及一种基于消息队列的CDN服务验证码分发方法和系统。
背景技术
随着互联网的发展,互联网服务成为人们日常生活的一部分。HTTP协议使通过网络传输包含文字、图片和音像信息的服务成为可能。众多购物,新闻,娱乐等网站通过HTTP协议提供服务。HTTP协议包含客户端和服务器,由客户端发起请求,服务器根据请求内容提供所需内容。随着服务范围和容量的增多,HTTP协议的一些弱点暴露出来:当客户端与服务器接入的是不同地域或运营商的网络,则会产生较大的时延或无法连接错误;同时,当用户量变大时造成HTTP服务器负载升高和负载不均匀等问题。
CDN(Content Delivery Network,内容分发网络)服务应运而生。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。CDN的目的是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。CDN通过在不同地域和运营商网络部署大量带有负载均衡和缓存作用的反向代理服务器,保证客户端可以选择最快捷的CDN节点发起请求,同时CDN节点对网页内容进行合理的缓存,大大减少了HTTP服务器的负载,CDN节点可以按照一定侧路将请求分发到不同的HTTP服务器实现负载均衡。
验证码(CAPTCHA)是“Completely Automated Public Turing test to tellComputers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。验证码是目前最有效的人机识别手段,包括图片声音以及互动操作等方式,能够区分是否是人工操作,防范通过自动化工具发起的恶意访问和攻击行为。与普通HTTP服务器相比,CDN服务器的分布范围广且经常受到恶意攻击,对验证码用量大,速度要求高。传统验证码生成和分发主要有两种方式:由服务器实时生成和使用资源池。
1)由服务器实时生成,即在CDN节点需要是由当前CDN服务器计算生成验证码。这种方案的缺点是:在用户访问过程中增加了生成验证码的计算过程,增加了用户响应的时延,降低了用户体验。CDN节点经常面对大规模访问有时甚至是专门针对验证码生成过程的攻击,这种情况下会短时间生成大量验证码,使用实时计算生成方式会消耗大量的计算资源,严重情况下会造成资源耗尽引发的服务中断。
2)使用资源池。使用资源池是实时生成方式的一种改进,能够防止在大量需求时造成系统资源耗尽,同时减少用户访问过程中的时延。资源池方式是开辟出一部分存储空间,将预先生成好的验证码存储在上述存储空间中。对于这部分资源的使用又两种形式:一是重复使用,每次从资源池随机选取一个使用;另一种是非重复使用,每次从资源池中选取一个使用,使用后从资源池中丢弃,另外的生产者根据情况向资源池投放新的验证码。使用资源池的方式存在以下缺点:
a)对于重复使用的方法,面临被破解的风险。由于资源池中的数据量有限,如果某个验证码被人工识别并记录,下次出现将可以被机器自动识别。目前已经出现拉取验证码分发给大量人员进行人工识别的工具和组织,对这种重复使用验证码的方式构成了严重威胁。即使只破击资源池中少量数据,通过大量机器进行攻击访问仍然能造成较高的通过数量,使得验证码失去保护功能。比如:人力破解资源池1%的数据,利用1000台机器每秒每台请求1000次,每秒的通过量在10000次左右。
b)对于使用非重复方式的,验证码不存在重复使用,被破解的风险大幅度降低,然而面对攻击时可能产出缓存资源耗尽的问题。当攻击者发出大量拉取验证码请求时,资源池迅速耗尽,由于拉取的速度远高于生成的速度,造成资源池中验证码耗尽,服务中断。
发明内容
本发明针对上述问题,提供一种基于消息队列的CDN服务验证码分发方法和系统,通过消息队列将多个生产者产生的验证码无重复的发送到各个CDN节点,以减少CDN节点的资源消耗,降低响应时延。
本发明采用的技术方案如下:
一种基于消息队列的CDN服务验证码分发方法,包括以下步骤:
1)接收验证码生成服务器生成的验证码,并将验证码存入消息队列中;
2)通过所述消息队列将验证码分发给各CDN节点,以便各CDN节点通过环形缓存区接收并存储分发的验证码。
进一步地,所述消息队列将验证码不重复地分发给各CDN节点,每个验证码只分发一次且只分发给一个CDN节点。
一种基于消息队列的CDN服务验证码接收方法,包括以下步骤:
1)在CDN节点上部署环形缓存区;
2)CDN节点接收通过消息队列分发的验证码,并存入所述环形缓存区中。
进一步地,每个CDN节点部署一个环形缓存区,各CDN节点持续从所述消息队列获取验证码以更新环形缓存区的内容,环形缓存区的数据通过覆盖写入的方式进行更新。
进一步地,所述覆盖写入的方式为:新获取的验证码存入一个CDN节点的环形缓存区时,覆盖该环形缓存区当前存储的验证码中最早进入该环形缓存区的验证码。
进一步地,CDN节点使用验证码时从环形缓存区逐个读取,读取后不删除验证码,再读取时直接读取下一个验证码。
一种消息队列服务器,其包括:
验证码接收模块,用于接收验证码生成服务器生成的验证码;
消息队列模块,用于提供消息队列服务,并将接收的验证码存入消息队列中;
验证码发送模块,用于通过消息队列将验证码分发给各CDN节点,以便各CDN节点通过环形缓存区接收并存储分发的验证码。
一种CDN节点,其包括:
验证码接收模块,用于接收消息队列服务器分发的验证码;
环形缓存区,用于存储验证码并通过覆盖写入的方式进行更新。
验证码读取模块,用于从环形缓存区逐个读取验证码。
一种基于消息队列的CDN服务验证码分发系统,包括验证码生成服务器、消息队列服务器和若干CDN节点;所述验证码生成服务器生成验证码并将验证码发送到所述消息队列服务器;所述消息队列服务器上部署消息队列服务,用于接收验证码生成服务器发送的验证码,并通过消息队列将验证码分发给各CDN节点;所述CDN节点上部署环形缓存区,通过所述环形缓存区接收并存储所述消息队列服务器分发的验证码。
进一步地,所述消息队列服务器支持动态添加和删除验证码生成服务器,并支持动态添加和删除CDN节点。
本发明的有益效果如下:
1、CDN节点不需要实时生成验证码,减少了节点的资源消耗,降低了用户响应时延;
2、消息队列支持动态添加和删除CDN节点和验证码生成节点,可根据实际需要部署,不浪费计算资源;
3、通过消息队列对CDN节点数据进行不间断更新,同时每个验证码只分发给一个CDN节点一次,任一个验证码都会在一段时间后被从缓存中删除,使得通过人工破解后进行批量访问攻击很难奏效;
4、CDN节点使用环形缓存区,在短时间有大量验证码需求时,不会出现无验证码可用造成服务中断的现象。
附图说明
图1是本发明的基于消息队列的验证码分发系统的架构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图,对本发明做进一步详细说明。
本发明提出的基于消息队列的验证码分发系统,通过消息队列将多个生产者产生的验证码无重复的发送到各个CDN节点,各个CDN节点使用一个大小为N的环形缓存区。环形缓存区(ring buffer)是一种固定尺寸、逻辑顺序首尾相连的缓存区,当数据读写到最后一个位置时继续从第一个位置开始读写。
本方案使用一种支持多个消费者和多个生成者的消息队列用于验证码的发布,验证码使用单独的生成者采用专用服务器生产,放入消息队列中,之后由消息队列分发到每个CDN节点,消息队列保证每个验证码只发给一个CDN节点一次。通过专用服务器生成验证码避免了实时生成验证码造成的CDN节点的资源消耗。
每个CDN节点包含一个环形缓存区,CDN节点会持续从消息队列消费数据(即获取验证码)以更新环形缓存区的内容,保证节点的验证码缓存区是不断变化的。CDN节点使用验证码时从环形缓存区依次取用。由于缓存区是不断更新的而且不同节点使用消费到的验证码是不同的,所以正常情况下CDN节点使用的验证码是不重复的。在极端情况下,攻击者大量拉取验证码,由于缓存区是环形的,不会出现验证码耗尽的情况,同时由于缓存区是不断更新的,使得试图通过人工破解而后通过自动化工具发起拒绝攻击很难奏效。
图1展示了本方案的一种部署方法,图中只展示了有两个验证码生成服务器和3个CDN节点的情况,事实上本方案支持部署任意多个(大于等于1)验证码生成服务器和CDN节点。
验证码生成服务器(验证码生成节点)用于生成验证码并发送到消息队列,每次只发送一个验证码,不间断的生成。
消息队列服务器上部署消息队列服务,用于接收验证码生成服务器集群上传的验证码,并分发给各个CDN节点。消息队列可以连通多个机房的CDN节点,支持动态添加和删除验证码生成节点,同时也支持动态添加和删除CDN节点。消息队列可以保证每个消息只发送给一个CDN节点一次。
CDN节点是验证码的使用者,不断的接收消息队列分发的验证码。在每个CDN节点内部都有一个可以存储N个验证码的环形缓存区,每次新分配来的数据会覆盖最老的数据,即新获取的验证码存入一个CDN节点的环形缓存区时,覆盖该环形缓存区当前存储的验证码中最早进入该环形缓存区的验证码。CDN在使用验证码时会从环形缓存区逐个读取,读取后并不删除数据,下次需要直接读取下一个,缓存区的数据通过覆盖写入的方式进行更新。
本发明的另一实施例提供一种消息队列服务器,其包括:验证码接收模块,用于接收验证码生成服务器生成的验证码;消息队列模块,用于提供消息队列服务,并将接收的验证码存入消息队列中;验证码发送模块,用于通过消息队列将验证码分发给各CDN节点,以便各CDN节点通过环形缓存区接收并存储分发的验证码。
本发明的另一实施例提供一种CDN节点,其包括:验证码接收模块,用于接收消息队列服务器分发的验证码;环形缓存区,用于存储验证码并通过覆盖写入的方式进行更新;验证码读取模块,用于从环形缓存区逐个读取验证码。
本发明的另一实施例提供一种基于消息队列的CDN服务验证码分发系统,包括验证码生成服务器、消息队列服务器和若干CDN节点;所述验证码生成服务器生成验证码并将验证码发送到所述消息队列服务器;所述消息队列服务器上部署消息队列服务,用于接收验证码生成服务器发送的验证码,并通过消息队列将验证码分发给各CDN节点;所述CDN节点上部署环形缓存区,通过所述环形缓存区接收并存储所述消息队列服务器分发的验证码。
本发明中消息队列服务器可以是一台单独的机器,也可以是由分布在不同机房的多台服务器组成的集群。消息队列会为每个输入的验证码添加一个全局唯一的标识(通常是序列号),当CDN节点读取验证码时,消息队列会从未被使用的验证码选取一个发送,之后将这个标识所代表的验证码从消息队列中删除,保证这个验证码只被一个节点使用。使用网络连接向消息队列发送或从消息队列接收消息。
本发明除适用于CDN网络外,同样适用于其他需要使用验证码的大型分布式网络应用,包括但不限于电子商务,网络游戏等。
本发明中验证码生成、消息队列与CDN功能均是单独的服务程序,在合理配置的前提下可以将多个服务程序部署在同一台实体服务器上。
本发明还可以在验证码中增加强度信息(越难用机器识别的强度越高),同时可以根据不同强度在CDN节点部署多个环形队列(环形缓存区),根据需要从不同的环形队列选择验证码。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (6)
1.一种基于消息队列的CDN服务验证码分发方法,其特征在于,包括以下步骤:
1)接收验证码生成服务器生成的验证码,并将验证码存入消息队列中;
2)通过所述消息队列将验证码分发给各CDN节点,以便各CDN节点通过环形缓存区接收并存储分发的验证码;所述消息队列将验证码不重复地分发给各CDN节点,每个验证码只分发一次且只分发给一个CDN节点;每个CDN节点部署一个环形缓存区,各CDN节点持续从所述消息队列获取验证码以更新环形缓存区的内容,环形缓存区的数据通过覆盖写入的方式进行更新,保证CDN节点的环形缓存区是不断变化的、不断更新的。
2.一种基于消息队列的CDN服务验证码接收方法,其特征在于,包括以下步骤:
1)在CDN节点上部署环形缓存区;
2)CDN节点接收通过消息队列分发的验证码,并存入所述环形缓存区中;所述消息队列将验证码不重复地分发给各CDN节点,每个验证码只分发一次且只分发给一个CDN节点;每个CDN节点部署一个环形缓存区,各CDN节点持续从所述消息队列获取验证码以更新环形缓存区的内容,环形缓存区的数据通过覆盖写入的方式进行更新,保证CDN节点的环形缓存区是不断变化的、不断更新的。
3.如权利要求1或2所述的方法,其特征在于,所述覆盖写入的方式为:新获取的验证码存入一个CDN节点的环形缓存区时,覆盖该环形缓存区当前存储的验证码中最早进入该环形缓存区的验证码。
4.如权利要求1或2所述的方法,其特征在于,CDN节点使用验证码时从环形缓存区逐个读取,读取后不删除验证码,再读取时直接读取下一个验证码。
5.如权利要求1或2所述的方法,其特征在于,在验证码中增加强度信息,根据不同强度在CDN节点部署多个环形缓存区,根据需要从不同的环形缓存区选择验证码。
6.一种采用权利要求1~5中任一权利要求所述方法的基于消息队列的CDN服务验证码分发系统,其特征在于,包括验证码生成服务器、消息队列服务器和若干CDN节点;所述验证码生成服务器生成验证码并将验证码发送到所述消息队列服务器;所述消息队列服务器上部署消息队列服务,用于接收验证码生成服务器发送的验证码,并通过消息队列将验证码分发给各CDN节点;所述CDN节点上部署环形缓存区,通过所述环形缓存区接收并存储所述消息队列服务器分发的验证码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711157421.5A CN107995264B (zh) | 2017-11-20 | 2017-11-20 | 一种基于消息队列的cdn服务验证码分发方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711157421.5A CN107995264B (zh) | 2017-11-20 | 2017-11-20 | 一种基于消息队列的cdn服务验证码分发方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107995264A CN107995264A (zh) | 2018-05-04 |
CN107995264B true CN107995264B (zh) | 2021-03-30 |
Family
ID=62030381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711157421.5A Active CN107995264B (zh) | 2017-11-20 | 2017-11-20 | 一种基于消息队列的cdn服务验证码分发方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107995264B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109525552B (zh) * | 2018-10-11 | 2021-08-31 | 平安科技(深圳)有限公司 | 动态码同步进程扩容方法、动态码生成器及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
MY180093A (en) * | 2007-08-06 | 2020-11-21 | Monseignat Bernard De | System and method for authentication, data transfer, and protection against phishing |
US10079740B2 (en) * | 2014-11-04 | 2018-09-18 | Fermi Research Alliance, Llc | Packet capture engine for commodity network interface cards in high-speed networks |
CN104506504B (zh) * | 2014-12-16 | 2017-12-26 | 成都驰通数码系统有限公司 | 一种无卡终端涉密信息的存储方法及安全装置 |
CN104700022B (zh) * | 2015-03-31 | 2018-08-07 | 北京奇艺世纪科技有限公司 | 一种动态验证码生成方法及装置 |
CN105871982A (zh) * | 2015-12-07 | 2016-08-17 | 乐视云计算有限公司 | 内容推送的方法、装置以及系统 |
CN105760221B (zh) * | 2016-02-02 | 2018-12-07 | 中博信息技术研究院有限公司 | 分布式计算框架的任务调派系统 |
CN106412063B (zh) * | 2016-09-29 | 2019-08-13 | 赛尔网络有限公司 | 教育网内cdn节点检测与资源调度系统及方法 |
CN106534216B (zh) * | 2016-12-30 | 2019-12-10 | 上海幻电信息科技有限公司 | 一种服务器部署系统 |
CN107357662A (zh) * | 2017-07-21 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种服务端信息采集任务的负载均衡方法及系统 |
-
2017
- 2017-11-20 CN CN201711157421.5A patent/CN107995264B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107995264A (zh) | 2018-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103329113B (zh) | 配置用于分级高速缓存的代理服务器以及动态站点加速和自定义对象和相关的方法 | |
CN102263828B (zh) | 一种负载均衡分配方法及设备 | |
EP3156911B1 (en) | Content management | |
CN107707943B (zh) | 一种实现云服务融合的方法及系统 | |
US20140280606A1 (en) | Method and Apparatus for Content Management | |
US7676812B2 (en) | Large scale event notification system | |
EP2787742B1 (en) | Method and system for transmitting network video | |
US20040236869A1 (en) | Parallel information delivery method based on peer-to-peer enabled distributed computing technology and the system thereof | |
US20100037225A1 (en) | Workload routing based on greenness conditions | |
CN101848137B (zh) | 一种应用于三层网络的负载均衡方法和系统 | |
CN108390881A (zh) | 一种分布式高并发实时消息推送方法及系统 | |
CN102638561B (zh) | 使用http资源的高速缓存间通信 | |
EP2880839B1 (en) | Web caching method and system for content distribution network (cdn) | |
CN109068153A (zh) | 视频播放方法、装置和计算机可读存储介质 | |
CN111355986B (zh) | 一种直播间中的消息处理方法、装置和存储介质 | |
CN103179148A (zh) | 一种在互联网中分享附件的处理方法和系统 | |
CN106027555B (zh) | 一种采用sdn技术改善内容分发网络安全性的方法及系统 | |
CN105893429A (zh) | 用于优化web缓存的方法及系统 | |
US20220012110A1 (en) | Networking-related system call interception and modification | |
CN107995264B (zh) | 一种基于消息队列的cdn服务验证码分发方法和系统 | |
JP6712744B2 (ja) | ネットワークシステム、キャッシュ方法、キャッシュプログラム、管理装置、管理方法及び管理プログラム | |
CN113596105B (zh) | 内容的获取方法、边缘节点及计算机可读存储介质 | |
CN105187518B (zh) | 一种cdn内容分发方法及系统 | |
Urayama et al. | Virtual network construction with K‐shortest path algorithm and optimization problems for robust physical networks | |
Chen et al. | Using service brokers for accessing backend servers for web applications |
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 | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: Room 301, Unit 1, 3rd Floor, Building 15, No.1 Courtyard, Gaolizhang Road, Haidian District, Beijing, 100080 Patentee after: BEIJING KNOW FUTURE INFORMATION TECHNOLOGY CO.,LTD. Address before: 100102 room 112102, unit 1, building 3, yard 1, Futong East Street, Chaoyang District, Beijing Patentee before: BEIJING KNOW FUTURE INFORMATION TECHNOLOGY CO.,LTD. |