0
点赞
收藏
分享

微信扫一扫

Apache DolphinScheduler实战(07)-缓存机制

1 缓存目的

由于M/S调度过程中,会产生大量数据库读操作,如tenant,user,processDefinition等:

  • 对DB产生很大读压力
  • 使整个核心调度流程变慢

考虑这部分业务数据读多写少,引入缓存模块:减少DB读压力,加快核心调度流程。

2 缓存设置

spring:
  cache:
    # default enable cache, you can disable by `type: none`
    type: none
    cache-names:
      - tenant
      - user
      - processDefinition
      - processTaskRelation
      - taskDefinition
    caffeine:
      spec: maximumSize=100,expireAfterWrite=300s,recordStats

缓存模块采用spring-cache机制,可直接在spring配置文件中配置是否开启缓存(默认none关闭), 缓存类型;

采用caffeine缓存管理,可自由设置缓存相关配置,如缓存大小、过期时间等;

3 缓存读取

缓存采用spring-cache的注解,配置在相关mapper层,可参考如:TenantMapper.

4 缓存更新

业务数据的更新来自于api-server, 而缓存端在master-server, 故需要对api-server的数据更新做监听(aspect切面拦截@CacheEvict),当需要进行缓存驱逐时会通知master-server,master-server接收到cacheEvictCommand后进行缓存驱逐;

缓存更新的兜底策略来自于用户在caffeine中的过期策略配置,结合业务配置。

5 时序图

cache-evict

参考: 编程严选网

举报

相关推荐

0 条评论