大型网站技术架构笔记二

第三章

性能,可用性,伸缩性,扩展性 和 安全性

浏览器缓存,页面压缩,合理页面布局,减少Cookie传值等改善性能

响应时间,TPS,系统性能计数器

网站高可用主要手段是冗余,部署在多台服务器上提供访问,数据存储在多台服务器上互相备份,

任何一台服务器宕机都不会影响整体的可用性,也不会导致数据丢失。

前提条件是应用服务器不保存会话信息,否则会话丢失,请求转移到其他服务器也无法完成业务。

伸缩性:是指通过不断的向集群中加入服务器的手段来缓解不断上升的并发访问压力和不断增长的数据存储需求。

扩展性:新增业务时,是否可以对现有产品透明无影响,不需改动或很少改动既有业务就可以上线新功能,

不同产品之间很少耦合。

网站可扩展主要手段有:事件驱动架构和分布式服务

事件驱动就是利用消息队列。

分布式服务则是将业务和可复用业务分离开来,通过分布式服务框架调用。

第四章

不同视角下的网站性能有着不同的标准,也有不同的优化手段。

用户:浏览器上直观的感受的网站速度响应快还是慢。

优化页面HTML样式,浏览器端的并发和异步,浏览器的缓存策略,CDN服务,反向代理等手段。

开发人员: 程序本身及相关子系统的特性,包括响应延迟,吞吐量,并发处理能力,异步消息加快请求响应及实现消峰。

代码手段改善程序特性。

运维人员:设施性能和资源利用率,宽带能力,服务器硬件配置,数据中心网络架构和网络带宽资源利用率

主要优化手段:优化骨干网络,使用高性价比服务器,利用虚拟化技术优化资源利用率。

响应时间,并发数,吞吐量,性能计数器

吞吐量(请求数/秒,页面数/秒,访问人数/天,处理的业务数/小时,TPS(每秒事务数),HPS(每秒HTTP请求数),QPS(每秒查询数))

性能计数器:SysLoad,对象与线程数,内存使用,CPU,磁盘与网络IO等。

排除网站性能:检查请求各处的日志,分析哪个环境的日志不合理,超过预期,然后检查监控数据,

分析影响性能的主要因素,内存,磁盘,网络,CPU,看是代码还是架构的设计不合理,或系统资源不足。

性能优化,Web前端性能,应用服务器性能,存储服务器性能

Web前端性能优化:浏览器加载,网站视图模型,图片服务,CDN服务 主要优化手段:浏览器访问,反向代理,CDN

减少Http请求数,使用浏览器缓存,启用压缩,CSS放在最前面,javaScript放在下面,减少cookie传输,CDN加速

应用服务器优化:缓存,集群,异步

缓存主要用存放读写比例很高,很少变化的数据。

不适合使用缓存的:频繁修改的数据,没有热点的数据,数据不一致与脏读,

异步操作:

消息队列有很好的消峰作用--即通过异步处理,将短时间高并发的事务消息存储在消息队列中,从而消平高峰期的并发事务。

不能立即返回用户订单提交成功,需要在消息队列的订单消费者进程真正处理完改订单,甚至商品出库后,再通过电子邮件或

SMS消息通知用户订单成功,以免交易纠纷。(任何可以晚点做的事情都应该晚点再做 )

启动线程数 = [任务执行时间/(任务执行时间-IO等待时间)] * CPU内核数

最佳启动线程数与CPU内核成正比,与IO等待时间成反比

编程上解决线程安全的手段有:

设置成无状态的对象

使用局部对象

并发访问时使用锁

资源复用:单例和对象池

B+树与LSM树

归根结底,技术是为业务服务的,技术选型和架构决策依赖于业务规划乃至企业战略规划,离开业务的发展与支持和驱动,

技术走不远,甚至会迷路。

你可能感兴趣的:(大型网站技术架构笔记二)