# 《Seckill秒杀系统》第28章:混合型缓存架构设计与技术选型

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/12ii6kRbb (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★★☆☆
  • 本章重点:全面阐述本地缓存+分布式缓存的混合型缓存的架构设计,并对缓存的技术选型和缓存数据的刷新机制,以及数据一致性保证进行详细的阐述,以便让大家知其然,更知其所以然。
  • 课程视频:https://t.zsxq.com/12ii6kRbb (opens new window)

大家好,我是冰河~~

缓存不仅仅可以用来缓存数据,以提供系统的读写性能,缓存经过精心的架构设计后,也能够为系统抗住大部分并发流量,使得系统能够承载更高的并发,承接更高的流量。

# 一、前言

缓存是秒杀系统必不可少的组成部分,在我们实现的秒杀系统中,整个秒杀系统前置的流量管控、流量清洗和限流等措施是秒杀系统流量洪峰的第一道防线,本地缓存是抗流量洪峰的第二道防线,分布式缓存是第三道防线。也就是说,除了前置的流量管控、流量清洗和限流等措施外,本地缓存会抗大部分并发流量,其次是分布式缓存,最终进入数据库的流量就比较少了。

# 二、本章诉求

缓存是需要经过精心设计的,如果缓存事先没有经过精心的设计,或者在实现过程中使用不当,可能会带来适当其反的效果。一个典型的场景就是:使用缓存后,缓存中的数据与数据库数据一致性的问题如何保证。解决这些问题的方案不少,关键还是要结合具体的业务场景来分析找出最佳解决方案。

本章,就从混合型缓存架构设计、缓存技术选型、缓存生命周期和数据一致性保证等方面简单聊聊秒杀系统的混合型缓存设计。

# 三、混合型缓存架构设计

在介绍混合型缓存架构设计时,将会集群模式架构设计和单机模型架构设计两个方面进行阐述。

# 3.1 集群模式架构设计

从缓存集群模式的角度去分析,每台服务器甚至JVM实例都会拥有自己独立的本地缓存,在承载大并发流量时,以本地缓存为主,分布式缓存次之,如图28-1所示。


可以看到,从缓存的集群模式角度来看,每台服务器都会自己独立本地缓存,除了前置的流程管控、流量清洗和限流等措施构筑的流量洪峰第一道防线外。本地缓存会承接剩余的大部分流量,构筑成流量洪峰的第二道防线,而分布式缓存则是流量洪峰的第三道防线。并且在缓存的设计上,分布式缓存的作用主要是协调和同步最新数据到本地缓存。

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码