AMOS 架构笔记
2021-11-28 16:46:48 9 举报
多级缓存设计;github think-cola模块划分草图
作者其他创作
大纲/内容
think-infrastructure
网关
query
负责处理Query请求
gateway
写操作接口
think-domain
短链接服务缓存架构
convertor
不同对象之间的互转
service
负责响应请求,facade
缓存服务本地缓存内存占用过高,触发LRU缓存淘汰
validator
负责参数校验
2
缓存服务
本地缓存
返回前端
领域网关,解耦利器
3
用户
config
配置信息
否
DB 服务
6
获取店铺信息
本地缓存中是否存在
Nginx
不同对象之间的互转 Entity <---> DO
COLA 架构
entity 1
领域实体(也可以是一组实体的聚合)
rpc
RPC 数据通道
gatewayimpl
数据通道
4
Infrastructure Module
读
command
负责处理Command请求
GatewayImpl
写Redis分布式缓存&& 写本地缓存&& 返回前端
think-client
Domain Module
common
通用类
search
搜索 数据通道
写
发布信息 变更通知
写回本地缓存&& 返回前端
获取商品等信息
cola-component-dto
商品信息服务
店铺信息服务
7
App Module
Gateway
assembler
不同对象之间的互转 Entity <---> DTO
短链接可以设置失效时间,通过redis zset来实现。zset的score设置为过期时间,每次扫描的时候,把小于当前时间的数据干掉就好了。应该要用到定时任务,这里把时间粒度暂时设置为1分钟吧。定时任务执行频率也是1分钟
1
获取广告信息
数据库
COLA 组件
......
广告信息服务
entity 2
消息队列 MQ
保存url对应信息会入库,这里使用分库分表实现。准备使用sharding-jdbc实现下。同时要避免大量缓存失效,DB服务被打死,可以加hystrix限流、降级、熔断解决。
start
写入读取到的商品等信息
获取商品信息
Redis 分布式缓存
5
tunnel
COLA 架构实践
think-controller
database
数据库 数据通道
Redis内存占用过高触发LRU缓存淘汰
think-app
订阅消息变更通知
没有银弹,把书上的抄下来了,按需取舍吧
interceptor
拦截器模式,切面处理
repository
调用基础设施存取数据
Redis分布式缓存中是否存在
核心模块
Nginx缓存到期清除expires 单位: s/m/h/d
收藏
收藏
0 条评论
下一页