自顶向下的性能优化与架构设计

1.电子商务网站主搜索页,与主交易系统各自独立。由交易系统把商品定时全量同步给主搜,同时商品变更时做增量通知。
2.交易系统,垂直按业务分库:订单库、商品库、用户库。每个库一个应用,提供基础业务dubbo服务。由pc和无线的展现层去调用。
3.各个库都做读写分离:在从库读,主库写。主从同步。
4.前后端分离,开发和部署都是分离的。开发时约定好后端拍给前端的数据格式。且图片等静态内容可以利用cdn加速。
5.水平分库:比如商品库的商品主表和其子表(库存表等)的数据量太大。
两台以上数据库ID生成服务器,每个服务器各有一个sequence序列,但是id的增长步长是服务器的数量,比如3台,则步长都为3,并且每台的起始值都依次错开,这样就把ID的生成散列到了每个服务器节点上。
6.热数据的读取,加缓存。可以在数据更新时用mq通知缓存失效。这样在数据库已变更而缓存还未刷新的期间,获取到的是旧数据。所以如果是像价格库存这种数据,还是不能走缓存。其他像标题,商品描述等,可以走缓存。
如果由于访问频率太高一定要走缓存的话,可以在数据库操作上用乐观锁,比如查库存同时拿到旧版本号,去下单之前,要先扣库存,则update这张表的时候where条件里传入这个版本号,看跟数据库里现在的值是否相同,如果不同则更新失败。本次下单返回错误信息。
7.在缓存失效瞬间,如果流量特大,可能同时读缓存读不到而去访问数据库的线程就有很多,这个瞬间的压力可能导致故障。
因此可以在缓存失效时get一个锁,拿到锁的线程才可以去访问数据库,其他线程sleep等着。这样虽然会导致此时的请求都响应缓慢,但至少防止了雪崩发生的可能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值