一、大型网站架构模式:
1、分层 - 横向 如应用层、服务层、数据层
2、分割-纵向 将业务化分为不同粒度的细小的功能和服务 如订单业务、购物车业务、短信业务、邮件业务等
3、分布式-将不现的服务、不同的模块部署在不同的服务器,通过远程调用协同工作,分布式静态资源、分布式数据和存储、分布式计算。注意,会对性能有影响(网络请求开销),分布式事物、数据一致性。
4、集群-用更多服务器提供相同的服务,可以提供很好的并发性,不足以支持访问量时,只需要要向集群中加入新的机器即可。当一台机子不可用时,可通过负载设备或失效转移机制把请求转发到集群的其他服务器。从而 可提升网站的可用性,
5、缓存-改善软件性能的第一手段。
CDN,放在离终端用户最近的网络服务商,用户请求先到网络服务商(缓存网站的一些静态资源,较少变化的数据); 反向代理,用户请求到到中心服务器时,请求最先到达,这里缓存网站的静态资源,用户的请求不需要转发到应用服务器,即可返回,
本地缓存,缓存一些热点数据,无需访问数据库
分布式缓存 :使用前提条件:1、数据访问热点不均衡 2、数据在某个时间段内有效,不会很快过期
缓存的好处:可以加快数据访问速度,还可以减轻后端应用和数据存储的负载压力。
6、异步-降低软件的耦合性,如生产消费者 ,优点:1、可提高系统的可用性 2、加快网站响应速度 3、消除网站并发访问高峰。
7、冗余-主要是针对数据,当服务器宕机时,保证数据不丢失。数据冗余备份。数据库除了定期备份(冷备份),同时要同步热备份(主从复制),同时为了抵御不可抗力(地震、海啸等)还要进行灾备。
8、自动化
自动化代码管理-代码版本控制、代码分支创建;
自动化测试-代码提交,系统自动将代码部署到测试服务器,启动自动化测试用例进行测试
自动化安全检测-安全检测工具对代码静态安全扫描及部署到安全测试环境进行安全攻击测试
自动化部署-将工程代码自动部署到线上生产环境。
自动化监控、自动化报警、自动化失效转移、自动化失效恢复、自动化降级、自动化分配资源。也是对其要求。
9、安全
网站的安全性、防止XSS攻击、SQL注入、编码转换等要对其进行相应的处理。对敏感信息进行过滤,对垃圾信息进行屏蔽。
二、大型网站核心架构要素
1、性能
浏览器端:可通过浏览器缓存、页面压缩、合理布局页面,减少Cookie传输等手段,还可以使用CDN,将静态内容分发至离用户最近的网络服务商机房。可在网站机房部署反向代理服务器,缓存热点文件,加快响应速度,减轻应用服务器负载压力
应用服务器端:使用本地缓存、分布式缓存
性能的衡量指标:重要的有响应时间、TPS、系统性能计数器
2、可用性
7*24小时,高可用的设计目标。网站高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份
3、伸缩性
是否容易向集群中添加新的服务器,加入新的服务器后是否可以提供和原来的服务器无差别的服务,集群中可容纳的总的服务器数量是否有限制。
问题:加入新的服务器后可能会导致缓存路由失效,进而导致集群中的大部分缓存数据都无法访问。
4、扩展性
衡量网站架构扩展性好坏的主要标准就是网站增加新的业务产品时,是否可以实现对现有产品透明无影响。不需要改动或是很少改动既有业务功能就可以上线新的产品。不同的产品之间是否很少耦合
主要手段:事件驱动构架和分布式服务
事件驱动架构通过消息队列实现。
分布式服务则是将业务和可复用的服务分离开来。
5、安全性
网站架构就是保护网站不受恶意访问和攻击,保护网站的重要数据不被窃取。