面试题答案
一键面试缓存更新时机策略
- 实时更新
- 策略描述:当配置在配置中心发生变化时,立即同步更新缓存中的配置。
- 优点:能保证缓存中的配置始终与配置中心最新值一致,应用获取到的配置是最新的,对配置变化响应极快。
- 缺点:每次配置变化都触发更新操作,可能会对缓存系统造成较大压力,尤其在配置频繁变更场景下,可能导致缓存服务性能下降。
- 适用场景:对配置实时性要求极高的场景,如金融交易配置、安全策略配置等,配置的任何变化都需要立即生效。
- 定时更新
- 策略描述:按照预设的时间间隔,定期从配置中心拉取最新配置并更新缓存。
- 优点:降低了对缓存系统的更新频率,减少了因频繁更新带来的性能开销。同时,实现相对简单,易于维护。
- 缺点:配置更新存在一定延迟,在两次更新间隔内,即使配置中心配置已变化,缓存中的配置也不会改变,可能导致应用使用旧配置。
- 适用场景:对配置实时性要求不是特别高的场景,如一些非关键业务的配置,像页面展示文案配置等,配置变化后几分钟内应用更新配置也不会造成严重影响。
- 事件驱动更新
- 策略描述:配置中心在配置发生变化时,通过消息队列等机制发送事件通知。应用接收到事件后,再更新本地缓存。
- 优点:既能够相对及时地响应配置变化,又不像实时更新那样对缓存造成过大压力。解耦了配置中心和应用缓存更新,提高系统的可扩展性。
- 缺点:依赖消息队列等中间件,增加了系统的复杂性和维护成本。如果消息传递出现问题,可能导致缓存更新不及时。
- 适用场景:适用于中等实时性要求且系统架构中已存在消息队列等组件的场景,如电商促销活动配置,活动开始、结束等配置变化通过消息通知应用更新缓存。
缓存失效机制策略
- 绝对过期
- 策略描述:为缓存中的每个配置项设置一个固定的过期时间,时间一到,该配置项缓存自动失效,下次获取配置时会从配置中心重新拉取。
- 优点:实现简单,能有效保证缓存数据定期更新,避免长时间使用旧数据。
- 缺点:如果过期时间设置不合理,可能导致频繁从配置中心拉取数据影响性能,或者长时间使用旧数据。
- 适用场景:配置相对稳定,变化频率较低的场景,如数据库连接池大小等基础配置,过期时间可设置较长。
- 相对过期
- 策略描述:根据配置项的访问情况设置过期时间,如某个配置项长时间未被访问,则使其缓存失效。
- 优点:能根据实际使用情况动态管理缓存,对于不常用的配置及时释放缓存空间,提高缓存利用率。
- 缺点:需要额外记录配置项的访问时间等信息,增加了缓存管理的复杂度。
- 适用场景:配置众多且部分配置使用频率差异较大的场景,如多租户应用中某些租户特有的不常用配置。
- 主动失效
- 策略描述:当配置中心配置变化时,除了更新缓存,还主动标记旧缓存失效,确保应用不会获取到旧数据。
- 优点:能精准控制缓存失效,保证应用获取到最新配置,避免新旧数据混淆问题。
- 缺点:需要配置中心和应用缓存之间有良好的协调机制,实现较为复杂。
- 适用场景:对数据一致性要求极高,不允许出现新旧数据同时存在情况的场景,如支付配置等关键业务配置。