大型网站架构要素
在给系统做架构设计时,除了要考虑功能需求以外,还需要关注性能、可用性、伸缩性、扩展性和安全性这5个要素,可通过这些要素来衡量一个软件架构设计的优劣,判断其是否满足需求。
性能
性能是网站非常重要的指标,很多时候因为网站性能的问题而驱动了网站架构的升级优化,所以在架构设计时,必须考虑网站性能。
性能优化:
- 浏览器端:浏览器缓存,页面压缩,合理布局页面,减少Cookie传输数据等。
- 使用CDN,动静分离,将靖态资源布署到离用户最近的网络提供商服务上。
- 使用服务器本地缓存和分布式缓存,增加热点数据的处理能力。
- 通过消息中间件,异步操作,请求直接返回响应给用户,任务异常处理。
- 使用应服务器布署集群,提高整体处理能力,改善性能。
- 代码层面,使用多线程提高CPU使用率,改善内存管理等。
- 数据库:索引,缓存,SQL优化,搜索引擎等。
网站性能指标:RT
(响应时间:处理一次请求所需要的平均处理时间),QPS
(每秒处理完请求的次数),TPS
(每秒处理完的事务次数),用户并发量(系统能同时处理的请求数)等。
可用性
可用性线上站点系统几乎是 7 x 24运行,但难免出现一些故障,扣除故障时间,就是网站的总可用时间。大型网站可以做到4个9以上的可用性,就是可用性超过99.99%。
提高可用性,主要手段是冗余,相同应用部署多份,通过负载均衡组件组成一个集群共同对外提供服务;数据库可搭建主从热备服务器,出些故障时自动热切换。
伸缩性
指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。
衡量标准有是否可用多用服务器构建集群,是否容易向集群中添加新的服务器,加入的新服务器是否提供和原来的服务器无差别的服务。集群中可容纳的服务器总数是否有限制。
扩展性
扩展性主要关注网站的功能需求,系统是否容易增加新的业务产品,新的功能模块,是否实现对现有产品透明无影响,是不少耦合。
主要手动有微服务分布式部署,事件驱动架构(利用消息队列实现)。
安全性
主要是对数据进行加密,防各种潜在攻击和窃密。
现在的云服务提从商已有提供安全检测的服务,安全风险通知提醒等。