第十四章 典型电商应用与缓存
-
及时响应性的用户需求
-
数据准确行需求
-
平台海量请求的诉求
-
高可用诉求
14.1 电商类一个你用的挑战及特点
-
稳定性决定服务能力
-
高并发场景(Scale Out 加机器、Scale Up 提升单机性能)
-
业务发展性能也得发展
-
产品快速试错
14.2 应用数据静态化架构高性能单页Web应用
-
CMS系统:
-
使用URL作为key,没有url使用id或者生成一个url作为key
-
多版本使用redis的hash结构存储,字段按照维度存储:
-
正式:www.baidu.com/{时间戳}
-
预发布:www.baiducom/predeploy=true
-
灰度:www.baidu.com/abVersion=true
-
-
14.3 应用多级缓存模式支撑海量读服务
-
Nignx服务器一般采用轮询算法或一致性hash算法
-
不过期的缓存机制
-
适用于用户、分类、商品、价格、订单等,当缓存满了可以考虑LRU机制;同时,缓存定期同步Mysql的binlog实现缓存同步
-
-
维度增量缓存
-
大vaule缓存:使用多线程缓存(Memcached);对value进行压缩;Value拆分
-
热点缓存:多缓存节点作缓存负载均衡;几秒的本地缓存。
-
缓存负载均衡:应用Nginx在负载降低时使用一致性哈希访问服务器;负载较高时,使用服务器轮询;秒杀类商品等某些热点数据可以直接推入接入层Nginx。
-
热点数据与更新缓存
-
单击全量缓存+主从
-
分布式缓存+应用本地热点
-
实时热点发现系统
-
-
因为本地缓存的存在,要考虑数据一致性问题,即何时失效或更新缓存
-
订阅数据变更消息
-
无法订阅数据或订阅成本较高,且对一致性要求不严格,则可以设置合理过期时间
-
秒杀类的活动,可以订阅活动开启消息,将相关数据提前推送到前端应用,并将负载均衡机制降级为轮询。
-
建立实时热点系统来对热点进行统一推送和更新
-
-
更新缓存的原子性:版本号机制;使用如canal订阅binlog;多个队列单线程更新;分布式锁
14.4 构建需求响应亿级商品详情页
-
单品页技术架构发展
-
16 新的旅程