spinnaker缓存机制

目录

1、spinnaker缓存代理类相关解析

2、spinnaker缓存

2.1、缓存数据构建executeAgentWithoutStore

2.2、数据存储storeAgentResult

3、核心方法详解

3.1、putCacheResult详解

3.2、数据存储详解mergeItems

3.3、数据删除evictAll


1、spinnaker缓存代理类相关解析

(以TencentImageCachingAgent类为例)

缓存接口

1.1、缓存代理类提供两种数据类型AUTHORITATIVE、INFORMATIVE,详见com.netflix.spinnaker.cats.agent.AgentDataType.Authority。

数据类型为AUTHORITATIVE时,则从云上查询出来结果集被认为是一个完整体,以此结果集为准修改缓存中的关系数据(relationship)

数据类型为INFORMATIVE时,则无需关注缓存中数据的准确性,不会去删除关系数据(relationship)

1.2、缓存结构任一资源下都包括attributes(当前资源的详细信息)、relationships(当前资源与其他资源的关系)、hash、members、relationship(资源关系标识集合)。

attributes、relationships由代理类提供,hash、members、relationship由缓存机制生成提供。

hash: 根据每个资源的属性值计算其hash值,用于对资源的增删改

members:  查询时的桥表,与提高查询效率

relationships:当前资源与其他资源的联系,比如,acs application下有哪些cluster、loadbalancers、serverGroups等等,方便后面组装数据

2、spinnaker缓存

缓存机制依赖于agent机制触发 CachingAgent#executeAgent

2.1、缓存数据构建executeAgentWithoutStore

以TencentImageCachingAgent类为例,loadData方法中进行的以下几步:

1、拉取云平台镜像资源

2、获取缓存中进行资源

3、比对过滤出淘汰的数据

4、构建缓存对象(缓存对象包括有效数据和已淘汰待清理数据)

2.2、数据存储storeAgentResult

1、获取代理类AUTHORITATIVE类型数据

2、根据缓存匹配的key筛选缓存members中AUTHORITATIVE类型已过期的数据

3、缓存操作

 

3、核心方法详解

3.1、putCacheResult详解

  1. 从缓存中查询AUTHORITATIVE类型的关系数据(relationships)
  2. 数据存储
  3. 过滤失效数据
  4. 删除过期数据

3.2、数据存储详解mergeItems

调用链 com.netflix.spinnaker.cats.provider.DefaultProviderCache#putCacheResult -> cacheDataType -> backingStore.mergeAll -> mergeItems方法

1、合并数据操作

hash检测会检测历史数据与最新数据的hash值,如果hash存在则表示历史数据已存在,跳过当前数据存储

relationships同理

2、数据存储

3.3、数据删除evictAll

调用链com.netflix.spinnaker.cats.provider.DefaultProviderCache#putCacheResult -> evictDeletedItems -> backingStore.evictAll

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值