结合“微服务(Microservice)”和“缓存(Cache)”的核心,“微缓架构”可缩写为:MC Architecture(全称:Microservice-Cache Architecture)。
若需更简洁的纯缩写形式,也可写作 MCA(Microservice-Cache Architecture 的首字母组合)。
在设计数据架构时,结合“微服务”思想(“微缓架构”可理解为“微服务+缓存”的协同架构),核心思路是将数据层拆分为松耦合的服务单元,同时通过缓存提升性能与灵活性。以下是具体的架构思路:
-
按业务域拆分数据微服务
• 拆分原则:以业务域为边界(如用户服务、订单服务、商品服务),每个微服务独立管理自身数据(数据库、缓存),避免跨服务的数据依赖。
• 优势:服务内数据模型可灵活迭代,故障域隔离,避免“一损俱损”。
-
分层缓存策略
(1)客户端缓存
• 对静态资源(如图片、JS)在客户端设置缓存过期时间,减少重复请求。
(2)服务端本地缓存
• 每个微服务内部通过本地缓存(如Caffeine、Guava)存储高频访问的热点数据(如商品基础信息),降低对分布式缓存的依赖。
• 注意:本地缓存需设置过期时间,避免数据不一致。
(3)分布式缓存
• 用Redis等分布式缓存存储跨服务共享数据(如用户会话、全局配置),支持集群部署保证高可用。
• 策略:
◦ 缓存更新:采用“更新数据库后删除缓存”(避免脏写),或结合消息队列异步更新缓存。
◦ 缓存穿透:用布隆过滤器过滤不存在的键,或返回空值并设置短期过期。
◦ 缓存雪崩:设置随机过期时间,避免缓存同时失效;使用集群分片存储。
-
数据一致性设计
• 最终一致性:微服务间通过事件驱动(如Kafka消息)同步数据变更(如订单创建后同步库存扣减事件),缓存随事件异步更新。
• 缓存与数据库一致性:
◦ 写操作:先更新数据库,再删除缓存(避免缓存中残留旧数据)。
◦ 读操作:先查缓存,缓存未命中时查数据库并回写缓存。
-
可观测性与监控
• 对缓存命中率、响应时间、异常(如缓存击穿)进行监控,结合Prometheus+Grafana可视化。
• 日志记录缓存读写、更新操作,便于排查数据不一致问题。
-
弹性与扩展性
• 缓存集群支持动态扩缩容(如Redis Cluster),应对流量波动。
• 微服务数据层独立扩容,避免因某一服务数据压力影响全局。
通过这种“微服务拆分+多层缓存协同”的架构,既能保证数据层的灵活性和独立性,又能通过缓存提升系统性能,同时通过一致性策略和监控机制保障可靠性。