【大型网站技术架构】读书笔记之核心架构要素

架构决定了项目未来发展的方向和最终的结果,除了系统的功能需求外,还有几个要素,设计架构过程中需要平衡他们之前的关系来实现需求和架构目标

性能

性能是网站架构设计的一个重要方面,优化网站性能的方式也有很多

1.在浏览器端,可以通过浏览器缓存,使用页面压缩,合理布局页面,减少cookie传输来改善性能;还可以使用CDN,将网站静态内容分发至离用户最近的网络服务商机房,使用户通过最短访问路径获取数据,可以在网站机房部署反向代理服务器,缓存热点文件,加快请求响应速度,减轻应用服务器负载压力

2.在应用服务器端,可以使用服务器本地缓存和分布式缓存,通过缓存在内存中的热点数据处理用户请求,加快请求处理过程,减轻数据库负载压力;还可以通过异步操作将用户请求发送至消息队列等待后续任务处理,而当前请求直接返回响应给用户

3.在网站高并发请求的情况下,可以将多台应用服务器组成一个集群共同对外服务,提高整体处理能力

4.代码上,可以使用多线程,改善内存管理等手段优化性能

5.数据库服务器端,可以通过索引、缓存、SQL优化进行性能优化

衡量性能的重要指标有响应时间、TPS、系统性能计数器等,通过监听这些指标可以分析系统瓶颈,预测网站容量,并对异常指标进行报警,保障系统可用性

可用性

衡量一个系统架构设计是否满足高可用的目标,就是在存在服务器宕机的情况下,以及出现各种不可预期的问题,系统整体是否依然可用。网站高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份,任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失。

1.对于应用服务器而言,多台应用服务器通过负载均衡设备组成一个集群共同对外提供服务,任何一台服务器宕机,只需把请求切换到其他服务器就可以实现应用的高可用,但是前提是应用服务器不能保存请求的会话信息

2.对于存储服务器而言,需要对数据进行实时备份,当服务器宕机时需要将数据访问转移到可用的服务器上,并进行数据恢复以保证继续有服务器宕机的时候数据可用 

3.除了运行环境,网站的高可用还需软 件开发过程的质量保证,通过预发布验证,自动化测试,自动化发布,灰度发布等,减少将故障引入线上环境的可能,避免故障范围扩大

伸缩性

伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求,衡量架构伸缩性的主要标准就是是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器,加入新的服务器后是否可以提供和原来的服务器无差别的服务,集群中可容纳的总的服务器数量是否有限制

1.对于应用服务器集群,只要服务器上不保存数据,所有服务器都是对等的,通过使用合适的负载均衡设备就可以向集群中不断加入服务器

2.对于缓存服务器集群,加入新的服务器可能会导致缓存路由失效,进而导致集群中大部分缓存数据无法访问,如果应用已经严重依赖缓存,可能会导致整个网站崩溃,需要改进缓存路由算法保证缓存数据的可访问性

3.关系数据库支持数据复制,主从热备等,但是很难做到大规模集群的可伸缩性,所以关系型数据库的集群伸缩性方案必须在数据库之外实现,通过路由分区等手段将部署有多个数据库的服务器组成一个集群

4.非关系型数据库对伸缩性支持非常好,可以做到在较少运维参与的情况下实现集群规模的线性伸缩

扩展性

扩展性关注网站的功能需求,衡量网站架构扩展性好坏的主要标准就是在网站增加新的业务产品时,是否可以实现对现有产品透明无影响,其他产品和功能不需要受牵连进行改动或改动很少;第三方开发者使用网站服务的主要途径是大型网站提供的平台接口。网站可伸缩架构的主要手段是事件驱动架构和分布式服务 

1.事件驱动架构在网站通常利用消息队列实现,将用户请求和其他业务事件构造成消息发布到消息队列,消息的处理者作为消费者从消息队列中获取消息进行处理,通过这种方式将消息产生和消息处理分离开来,可以透明地增加新的消息生产者任务或者新的消息消费者任务

2.分布式服务是将业务和可复用服务分离开来,通过分布式服务框架调用,新增产品可以通过调用可复用的服务实现自身的业务逻辑,而对现有产品没有任何影响,可复用服务升级变更的时候,也可以通过提供多版本服务对应用实现透明升级,不需要强制应用同步变更

安全性

网站的安全架构就是保护网站不受恶意访问和攻击,保护网站的重要数据不被窃取。衡量网站安全架构的标准就是针对现存和潜在的各种攻击手段,是否有可靠的应对策略

猜你喜欢

转载自www.cnblogs.com/icy88/p/12470047.html