济南达内培训的老师说,缓存集群:由代理层和存储层组成,为应用客户端提供统一的分布式缓存服务入口;
基础组件: etcd 集群、 Apollo 配置中心,为 TMC 提供“集群推送”和“统一配置”能力;
3-2-2. 基本流程
1) key 值获取
Java 应用调用 Jedis-Client 接口获取key的缓存值时,Jedis-Client 会询问 Hermes-SDK 该 key 当前是否是 热点key;
对于 热点key ,直接从 Hermes-SDK 的 热点模块 获取热点 key 在本地缓存的 value 值,不去访问 缓存集群 ,从而将访问请求前置在应用层;
对于非 热点key ,Hermes-SDK 会通过Callable回调 Jedis-Client 的原生接口,从 缓存集群 拿到 value 值;
对于 Jedis-Client 的每次 key 值访问请求,Hermes-SDK 都会通过其 通信模块将 key访问事件 异步上报给 Hermes服务端集群 ,以便其根据上报数据进行“热点探测”;
2)key值过期
Java 应用调用 Jedis-Client 的set() del() expire()接口时会导致对应 key 值失效,Jedis-Client 会同步调用 Hermes-SDK 的invalid()方法告知其“ key 值失效”事件;
对于 热点key ,Hermes-SDK 的 热点模块 会先将 key 在本地缓存的 value 值失效,以达到本地数据强一致。同时 通信模块 会异步将“ key 值失效”事件通过 etcd集群 推送给 Java 应用集群中其他 Hermes-SDK 节点;
其他Hermes-SDK节点的 通信模块 收到 “ key 值失效”事件后,会调用 热点模块 将 key 在本地缓存的 value 值失效,以达到集群数据最终一致;
3)热点发现
Hermes服务端集群 不断收集 Hermes-SDK上报的 key访问事件,对不同业务应用集群的缓存访问数据进行周期性(3s一次)分析计算,以探测业务应用集群中的热点key列表;
对于探测到的热点key列表,Hermes服务端集群 将其通过 etcd集群 推送给不同业务应用集群的 Hermes-SDK 通信模块,通知其对热点key列表进行本地缓存;
以上就是济南达内培训给大家做的内容详解,更多关于IT的学习,请继续关注济南达内培训