【技术实现步骤摘要】
一种缓存的处理方法及装置
本专利技术涉及计算机
,具体涉及一种缓存的处理方法及装置。
技术介绍
内容分发网络CDN是为了用户能就近访问在服务器端做了缓存,在没有到缓存过期时及时清除CDN缓存;或是为了用户能就近访问在服务器端做了缓存,在用户访问之前在服务器端提前缓存。现有技术处理缓存主要是通过把用户请求通过超文本传输协议HTTP接口鉴权后存储至数据库,每台管理设备再通过Agent去访问数据库读取数据,读取数据后写入本地文件,然后通过多个脚本相互嵌套读取文件内容发送处理请求给反向代理nginx,nginx通过hash算法转给后端缓存程序ATS,ATS接口接收请求后,删除或预热相应的缓存文件在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:现有技术中,因为每条请求都要存入数据库,数据库在存数据时候写入硬盘的压力会很大,在很大并发的情况下,数据写入及读取都会有很大延迟,导致处理缓存不及时。
技术实现思路
本专利技术实施例提供一种缓存的处理方法及装置,通过采取全新的技术考量和全新的方案设计,使逻辑更简单,同时存入数据库的方式变更为消息队列的方式,通过内存队列更快的写入和读取数据,并且各个环节都可以采用分布式的方式,保证高可用。为达到上述目的,一方面,本专利技术实施例提供了一种缓存的处理方法,所述方法包括:通过消息转换程序将缓存处理请求放入本地内存队列,按批次将本地内存队列中的缓存处理请求发送到分布式流平台Kafka;确定Kafka的客户 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。