面试题答案
一键面试缓存架构选择
- 分布式缓存:选用如 Redis Cluster 这样的分布式缓存方案。它可以通过分片将数据分散存储在多个节点上,提高缓存的容量与读写性能,同时具备高可用性,部分节点故障时系统仍能运行。但节点间数据同步和一致性维护会消耗一定网络资源,影响性能。应对措施是合理设置节点数量与分片规则,减少不必要的数据迁移,并采用异步复制等方式降低对主节点写性能的影响。
- 多级缓存:采用二级缓存架构,如本地缓存(如 Caffeine)结合分布式缓存。本地缓存用于快速处理频繁访问的数据,减少对分布式缓存的请求压力。但本地缓存与分布式缓存数据一致性维护较复杂,可能出现数据不一致问题。通过设置合理的缓存过期时间以及使用缓存更新策略(如读写锁、发布 - 订阅模式)来解决。
数据加密方式
- 对称加密:在数据写入缓存前,使用对称加密算法(如 AES)对敏感数据进行加密。对称加密速度快,适合高并发场景下对性能要求较高的情况。但密钥管理是关键,需确保密钥安全存储与定期更新。可使用硬件安全模块(HSM)来管理密钥,提高安全性。
- 非对称加密:在密钥交换等场景下,结合非对称加密(如 RSA)。它可用于安全地传输对称加密的密钥。然而,非对称加密计算开销大,会影响性能。因此仅在必要场景使用,如初始密钥分发,平时数据加解密仍用对称加密。
验证机制
- 身份验证:对访问缓存的客户端进行身份验证,如使用令牌(Token)机制。客户端在请求缓存服务时携带 Token,缓存服务端通过与认证中心交互验证 Token 的有效性。这增加了系统复杂性与额外的网络请求开销。可通过缓存认证结果(如在本地缓存 Token 有效性)来减少重复验证次数。
- 数据完整性验证:使用消息认证码(MAC),如 HMAC。在数据写入缓存时,根据数据和密钥生成 MAC 值并一同存储。读取数据时重新计算 MAC 值并与存储的对比,确保数据未被篡改。这会增加一定计算量,但可通过优化算法实现(如采用更高效的哈希算法)来降低对性能的影响。