一种缓存的处理方法及装置制造方法及图纸

技术编号:24293741 阅读:32 留言:0更新日期:2020-05-26 20:56
本发明专利技术实施例提供一种缓存的处理方法及装置,其中,所述方法包括:通过消息转换程序将缓存处理请求放入本地内存队列,按批次将本地内存队列中的缓存处理请求发送到分布式流平台Kafka;获取Kafka的客户端程序Agent管理的集群虚拟IP;通过Agent从Kafka中读出缓存处理请求,并将缓存处理请求发送至集群虚拟IP;通过所述集群虚拟IP将缓存处理请求转发至后端真实服务器以该缓存处理请求的缓存内容。通过采取全新的技术考量和全新的方案设计,使逻辑更简单,同时存入数据库的方式变更为消息队列的方式,通过内存队列更快的写入和读取数据,并且各个环节都可以采用分布式的方式,保证高可用。

A cache processing method and device

【技术实现步骤摘要】
一种缓存的处理方法及装置
本专利技术涉及计算机
,具体涉及一种缓存的处理方法及装置。
技术介绍
内容分发网络CDN是为了用户能就近访问在服务器端做了缓存,在没有到缓存过期时及时清除CDN缓存;或是为了用户能就近访问在服务器端做了缓存,在用户访问之前在服务器端提前缓存。现有技术处理缓存主要是通过把用户请求通过超文本传输协议HTTP接口鉴权后存储至数据库,每台管理设备再通过Agent去访问数据库读取数据,读取数据后写入本地文件,然后通过多个脚本相互嵌套读取文件内容发送处理请求给反向代理nginx,nginx通过hash算法转给后端缓存程序ATS,ATS接口接收请求后,删除或预热相应的缓存文件在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:现有技术中,因为每条请求都要存入数据库,数据库在存数据时候写入硬盘的压力会很大,在很大并发的情况下,数据写入及读取都会有很大延迟,导致处理缓存不及时。
技术实现思路
本专利技术实施例提供一种缓存的处理方法及装置,通过采取全新的技术考量和全新的方案设计,使逻辑更简单,同时存入数据库的方式变更为消息队列的方式,通过内存队列更快的写入和读取数据,并且各个环节都可以采用分布式的方式,保证高可用。为达到上述目的,一方面,本专利技术实施例提供了一种缓存的处理方法,所述方法包括:通过消息转换程序将缓存处理请求放入本地内存队列,按批次将本地内存队列中的缓存处理请求发送到分布式流平台Kafka;确定Kafka的客户端程序Agent管理的集群虚拟IP;通过Agent从Kafka中读出缓存处理请求,并将缓存处理请求发送至集群虚拟IP;通过所述集群虚拟IP将缓存处理请求转发至后端真实服务器以处理该缓存处理请求对应的缓存内容。另一方面,本专利技术实施例提供了一种缓存的处理装置,所述装置包括:请求获取单元,用于通过消息转换程序将缓存处理请求放入本地内存队列,按批次将本地内存队列中的缓存处理请求数据发送到分布式流平台Kafka;IP获取单元,用于确定Kafka的客户端程序Agent管理的集群虚拟IP;请求发送单元,用于通过Agent从Kafka中读出缓存处理请求,并将缓存处理请求发送至集群虚拟IP;请求处理单元,用于通过所述集群虚拟IP将缓存处理请求转发至后端真实服务器以处理该缓存处理请求对应的缓存内容。上述技术方案具有如下有益效果:本申请技术方案通过采取全新的技术考量和全新的方案设计,使逻辑更简单,同时存入数据库的方式变更为消息队列的方式,本身数据的索引放在内存中,通过内存队列更快的写入和读取数据,方案的Agent可以兼容多种数据源并且各个环节都可以采用分布式的方式,保证高可用。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例一种缓存的处理方法的流程图;图2是本专利技术实施例一种缓存的处理装置的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。如图1所示,是本专利技术实施例一种缓存的处理方法的流程图,所述方法包括:S101:通过消息转换程序将缓存处理请求放入本地内存队列,按批次将本地内存队列中的缓存处理请求发送到分布式流平台Kafka。对于消息的接入,在此之前,获取缓存处理请求的超文本传输协议HTTP,所述HTTP包括处理对象的统一资源定位符URL、鉴权编号kid及鉴权秘钥key;判段所述kid及key是否正确以及所述URL是否具有刷新权限;若判定所述kid及key正确以及所述URL具有刷新权限,则将所述缓存处理请求转发给所述消息转换程序。具体地,用户通过页面或者特定的软件sdk发送HTTP请求至api接口,请求的body需要带着要刷新的url,kid,key,api接收请求后去验证kid和key是否正确,以及是否有url的刷新权限,通过则转发消息至nginx端口,否则直接报错返回用户信息。反向代理Nginx监听HTTP端口,通过nginx的upstream模块负载均衡后,转发至其中一台存活的后端消息转换程序Agent的端口,Agent接收请求后直接放入本地内存队列,按时间或者数据字节大小(其中一项符合即可发送),按批次发送数据至kafka。S102:确定Kafka的客户端程序Agent管理的集群虚拟IP。对于集群虚拟IP的确定,优选地,每个Agent上报心跳至调度接口,调度接口根据上报的心跳周期判断Agent是否存活,如否,则把该判断为死亡的Agent管理的集群分配给其他Agent,计算完成每个存活的Agent管理的集群列表后将集群虚拟IP放入内存,对接至api接口保证随时可查。S103:通过Agent从Kafka中读出缓存处理请求,并将缓存处理请求发送至集群虚拟IP。Agent的reader模块通过经过sasl认证后连接至kafka,对应kafka的队列topic,读取消息至Agent内存中,并且定时上报每次读取消息的位置offset至kafka,然后把消息转至parser模块,进入处理阶段。优选地,在Agent启动时申请数据处理队列;通过数据处理队列存储从Kafka中读出的缓存处理请求;从数据处理队列中读出缓存处理请求,经过防盗链规则的约束后,在缓存处理请求的URL中增加参数args,或者在缓存处理请求的HTTP中增加请求头requestheader,然后将缓存处理请求发送至集群虚拟IP。优选地,对于缓存删除请求,Agent在启动时申请了4个队列为:LocalQueue、SleepQueue、ExecQueue和LimitQueue;以及,所述四个数据处理队列之间相互控制关联限速,具体包括:(1).LocalQueue:将从kafka读取的缓存处理请求放入LocalQueue,队列写满后阻塞,不再从kafka读取;LocalQueue为本地队列,例如长度设置为100万。(2).SleepQueue:当从LocalQueue读出缓存处理请求后,在SleepQueue中写入1,队列写满后阻塞,以防止本地sleep的任务占内存太大,导致程序失控;SleepQueue为休眠队列,例如长度设置为30万。(3).当从LocalQueue读出缓存处理请求后,在SleepQueue中写入1时,同时把缓存处理请求写入ExecQueue,队列写满后阻塞,当从ExecQueue读出缓存处理请求时,同时从SleepQu本文档来自技高网...

【技术保护点】
1.一种缓存的处理方法,其特征在于,所述方法包括:/n通过消息转换程序将缓存处理请求放入本地内存队列,按批次将本地内存队列中的缓存处理请求发送到分布式流平台Kafka;/n确定Kafka的客户端程序Agent管理的集群虚拟IP;/n通过Agent从Kafka中读出缓存处理请求,并将缓存处理请求发送至集群虚拟IP;/n通过所述集群虚拟IP将缓存处理请求转发至后端真实服务器以处理该缓存处理请求对应的缓存内容。/n

【技术特征摘要】
1.一种缓存的处理方法,其特征在于,所述方法包括:
通过消息转换程序将缓存处理请求放入本地内存队列,按批次将本地内存队列中的缓存处理请求发送到分布式流平台Kafka;
确定Kafka的客户端程序Agent管理的集群虚拟IP;
通过Agent从Kafka中读出缓存处理请求,并将缓存处理请求发送至集群虚拟IP;
通过所述集群虚拟IP将缓存处理请求转发至后端真实服务器以处理该缓存处理请求对应的缓存内容。


2.如权利要求1所述的缓存的处理方法,其特征在于,在所述通过消息转换程序将缓存处理请求放入本地内存队列之前,所述方法还包括:
获取缓存处理请求的超文本传输协议HTTP,所述HTTP包括处理对象的统一资源定位符URL、鉴权编号kid及鉴权秘钥key;
判段所述kid及key是否正确、以及所述URL是否具有刷新权限;
若判定所述kid及key正确、且所述URL具有刷新权限,则将所述缓存处理请求转发给所述消息转换程序。


3.如权利要求2所述的缓存的处理方法,其特征在于,所述确定Kafka的客户端程序Agent管理的集群虚拟IP,包括:
每个Agent上报心跳至调度接口,调度接口根据上报的心跳周期判断Agent是否存活,如否,则把该判断为死亡的Agent管理的集群分配给其他Agent,计算完成每个存活的Agent管理的集群列表后将集群虚拟IP放入内存。


4.如权利要求3所述的缓存的处理方法,其特征在于,所述通过Agent从Kafka中读出缓存处理请求,并将缓存处理请求发送至集群虚拟IP,包括:
在Agent启动时申请数据处理队列;
通过数据处理队列存储从Kafka中读出的缓存处理请求;
从数据处理队列中读出缓存处理请求,经过防盗链规则的约束后,在缓存处理请求的URL中增加参数args,或者在缓存处理请求的HTTP中增加请求头requestheader,然后将缓存处理请求发送至集群虚拟IP。


5.如权利要求4所述的缓存的处理方法,所述缓存处理请求包括缓存删除请求和缓存预热请求,其特征在于,
对于缓存删除请求,所述数据处理队列为:LocalQueue、SleepQueue、ExecQueue和LimitQueue;以及,所述四个数据处理队列之间相互控制关联限速,具体包括:
将从kafka读取的缓存处理请求放入LocalQueue,队列写满后阻塞;
当从LocalQueue读出缓存处理请求后,在SleepQueue中写入1,队列写满后阻塞;
当从LocalQueue读出缓存处理请求后,在SleepQueue中写入1时,同时把缓存处理请求写入ExecQueue,队列写满后阻塞;
当从ExecQueue读出缓存处理请求时,同时从SleepQueue中读出1,当ExecQueue队列的内容全部读取完成后阻塞;
当从ExecQueue读出缓存处理请求进行处理时,同时在limitQueue中写入1,每处理完成一条缓存处理请求后从limitQueue中读出1;
对于缓存预热请求,所述数据处理队列为:ExecQueue和LimitQueue;以及,所述两个数据处理队列之间相互控制关联限速,包括:
将从kafka读取的缓存处理请求放入ExecQueue,同时在limitQueue中写入1;
当从ExecQueue读出缓存处理请求进行处理时,同时在limitQueue中写入1,每处理完成一条缓存处理请求后从limitQueue中读出1。

【专利技术属性】
技术研发人员:马涛
申请(专利权)人:新浪网技术中国有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1