大型网站架构学习笔记(2)

System Load也称为Load,即系统负载,指当前正在被CPU执行和等待被CPU执行的线程数之和,,是反映系统忙闲程度的重要指标。多核CPU下,完美情况应该是所有CPU都在用,没有线程等待处理。Load值低于CPU数目,表示CPU有空闲,资源存在浪费;Load值高于CPU数据,表示进程在等待CPU调度,资源存在浪费

10、浏览器访问优化手段

(1)减少http请求,和并CSS、JS、图片,不要发起多次http请求去拿这些数据

(2)使用浏览器缓存,存储静态资源,Cache-Control、Expires、Pragma、Last_Modified都是和缓存的HTTP HEADER

(3)启用压缩,有效减低通信传输的数据量

(4)CSS放在上面、JS放在下面,因为JS下载会立即执行,可能阻塞页面加载速度

(5)减少Cookie传输

11、缓存使用的几点细节

(1)频繁修改的数据不要写缓存,一般读写比例至少2:1以上才会做缓存,即一次写入至少有两次以上的读取,像新浪微博这种,热门微博,一次写入可能会被读取数百万次,那是大大地合算

(2)如果访问没有热点,大部分数据的访问没有集中在小部分数据上,那么做缓存就没有意义,因为缓存有失效机制,大部分数据还没有被再次访问就被挤出缓存了

(3)容忍一定时间的数据不一致,除非数据更新时立刻通知缓存,不过这也会带来开销与事物一致性的问题

(4)使用分布式缓存集群以提高缓存可用性

(5)新启动的缓存没有任何数据,在重建缓存的过程中,系统性能与数据库负载都不太好,因此要根据项目、根据业务,将一部分数据在启动时就加载好,这就是缓存预热

(6)对缓存做无效参数并设置失效时间,避免不恰当的业务或恶意攻击频繁调用接口查询数据库,一旦某一个Key值数据库里面查不到数据就进入无效缓存,一段时间内再次访问这个Key值无数据返回

12、消息队列具有很好的削峰作用(前面提过),不过注意需要适当修改业务流程进行配合

通过异步处理,将短时间高并发产生的事物消息存储在消息队列中,从而可以削平高峰期的并发事物。不过要注意点,由于数据写入消息队列后立即返回给用户,数据在后续的业务校验、写数据库等操作可能失败,因此在使用消息队列进行业务异步处理后,,需要适当修改业务流程进行配合,如订单提交之后,订单数据写入消息队列,不能立即返回给用户订单提交成功,需要在消息队列的订单消费者进程真正处理完该订单的,甚至商品出库后,再通过电子邮件或者SMS消息通知用户订单成功,避免交易纠纷。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2e14ddf0065f79f7473b734f3b3af05d.html