j360-redis-async-db
j360-redis-async-db copied to clipboard
j360系列 - 缓存异步写数据库的框架
j360-redis-async-db
j360系列 - 缓存异步写数据库的框架
===v1.0功能实现===
- 针对统计类的接口缓存(pv、uv等)信息后,需要异步将数据同步到持久层,先想几天再码代码
##相关前置说明##
- 依赖Spring配置
- 依赖redis读写接口
- 需要另外存储redis对象(key、value)
- 写数据库默认mysql(未来支持mongodb、es等)
##异步写策略##
- 1.达到方法调用次数增量(可配置,默认100),触发同步数据库事件
- 2.超过方法调用的时间增量(可配置,默认30s),触发同步数据库事件
- 3.方法调用后会补一条异步触发消息(可配置,默认30s),满足条件(1.2未执行)触发同步数据库事件
##同步数据库##
- 1.单条数据同步:立即执行
- 2.批量执行同步:按照以下策略
##批量同步数据库策略##
- 1.时间增量(可配置,默认3s)
- 2.内容增量(可配置,默认1000条,请根据数据库性能配置)
##分布式支持##
- 1.批量更新:单个jvm使用原子类锁进行队列执行
- 2.分布式环境默认使用单条数据同步,批量同步需要依赖分布式队列框架(activemq、rabbitmq、kafka等)进行id分片策略同步(v2.0支持)
- 3.id分片下的无状态集群需要抢分布式锁执行同步功能(redis、zk)
##简单版本定时策略##
- 使用异步写3,通过队列定时30S后消费,消费时判断上一次同步时间是否超出30S,否则消费丢弃