一、大型网站的特点
- 用户多,分布广
- 大流量,高并发
- 海量数据
- 服务高可用
- 安全环境恶劣,易受攻击
- 功能多,变更快,频繁发布
二、大型网站架构目标
- 高性能:快速访问。
- 高可用:服务一直可以正常访问。
- 可伸缩:通过增加/减少硬件,提高/降低处理能力。
- 扩展性:方便增加、减少功能或者模块。
- 安全性:提供安全访问和安全存储等策略。
三、大型网站架构模式
-
分层
合理规划层次边界和接口,禁止跨层调用。分层可以清晰的展现软件逻辑结构,便于开发维护,更是高并发向分布式发展的重要基础。一般分为应用层,服务层,数据层,管理层,分析层。
-
分割
分层是将软件在横向方面进行切分,分割是在纵向方向进行切割。一般是在功能上进行,可按照业务/模块/功能特点进行划分。
-
分布式
分层和分割的主要目的是为了切分后的模块便于分布式部署。将应用分开部署,通过远程调用协同工作。
-
集群
多台服务器部署相同的应用/模块/功能构成一个集群,通过负载均衡统一对外提供服务。
-
负载均衡
-
缓存
CDN,反向代理,本地缓存,分布式缓存。数据访问热点不均衡,在某个时间段内有效,不会很快过期。将数据放在离用户最近的位置,加快访问速度。
-
异步
降低耦合。消息队列可提高系统可用性,加快响应速度,消除并发访问高峰。
-
冗余
冷备份,热备份,灾备数据中心。增加副本,提高可用性,安全性,性能。
-
安全
XSS、注入攻击、CSRF; 单向加密、对称加密、非对称加密。
四、性能
- 性能指标
响应时间、吞吐量、TPS。
- 浏览器优化
减少Http请求数,使用浏览器缓存,启用压缩,减少Cookie传输;CDN加速,反向代理;
- 应用层优化
缓存,异步,集群
- 代码优化
多线程,资源复用(对象池,即连接池,线程池等),良好的数据结构,JVM调优,单例,Cache等;
- 存储优化
缓存,固态硬盘,光纤传输,优化读写,磁盘冗余,分布式存储(HDFS),NOSQL等;
五、可用
在任何时候都可以正常提供服务。
网站高可用的主要手段是冗余备份及失效转移。应用部署在多台服务器上同时对外提供访问,数据存储在多台服务器上互相备份。
- 应用层
设计为无状态的。一般使用负载均衡技术(需解决Session同步问题)实现高可用。
- 服务层
负载均衡,分级管理,快速失败(设置超时),异步调用,服务降级,幂等设计等。
- 数据层
冗余备份(冷备,热备[同步,异步],温备),失效转移(确认,转移,恢复)。数据高可用的理论基础是CAP理论(持久性,可用性,数据一致性[强一致,用户一致,最终一致])
六、伸缩
伸缩性是指在不改变原有架构的基础上,通过添加/减少服务器的方式,提高/降低系统的处理能力。
是否可以用多台服务器构建集群,是否容易向集群中添加新机器。加入新的服务器后是否可以提供和原来无差别服务的能力。
- 应用层:
对应用进行垂直或水平切分。然后针对单一功能进行负载均衡(DNS,HTTP[反向代理],IP,链路层)。
- 服务层:
与应用层类似;
- 数据层:
读写分离,分库,分表,分区,NOSQL等。
七、扩展
可以方便的进行功能模块的新增/移除,提供代码/模块级别的可扩展性。
快速响应需求变化,是可扩展的主要目的。
衡量网站扩展性好坏的标准就是在网站增加新的业务产品时,是否可以实现对现有产品透明无影响,不需要任何改动或者改动很少现有的业务功能就可以上线新产品。
可扩展架构的主要手段是事件驱动架构和分布式服务。
- 事件驱动架构,通常利用消息队列实现。
- 分布式服务,则是将业务和可复用服务分离,通过分布式服务框架调用。
模块化,组件化:高内聚,低耦合,提高复用性,扩展性。
稳定接口:定义稳定的接口,在接口不变的情况下,内部结构可以“随意”变化。
设计模式:应用面向对象思想,原则,使用设计模式,进行代码层面的设计。
消息队列:通过消息队列进行交互,解耦模块之间的依赖。
分布式服务:公用模块服务化,供其他系统使用,提高可重用性,扩展性。
扩展性是系统架构设计层面的开闭原则(对扩展开放,对修改关闭)。
八、安全
对已知问题有有效的解决方案,对未知/潜在问题建立发现和防御机制。
攻击类型
- XSS攻击【跨站脚本攻击(Cross Site Script)】
跨站点脚本攻击,指通过篡改网页,注入恶意的HTML脚本,在用户浏览网页时,控制用户浏览器进行操作。
防范手段:消毒(XSS攻击者一般都是通过在请求中嵌入恶意脚本达到攻击的目的,这些脚本是一般用户输入中不使用的,如果进行过滤和消毒处理,即对某些html危险字符转译,如“>”转译为“& gt;”);HttpOnly(防止XSS攻击者窃取Cookie)。 - 注入攻击:SQL注入和OS注入
SQL防范:预编译语句PreparedStatement; ORM;避免密码明文存放;处理好相应的异常。 - CSRF(Cross Site Request Forgery,跨站点请求伪造)。XSS利用的是站内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的网站。
防范:httpOnly;增加token;通过Referer识别。 - 文件上传漏洞
- DDos攻击
加密技术
- 单项散列加密:MD5, SHA
- 对称加密:DES,RC,AES
- 非对称加密:RSA
非对称加密常用于建立信息安全传输,数字签名等场景。
HTTPS传输中浏览器使用的数字证书实质上是经过权威机构认证的非对称加密的公钥。
参考
《大型网站技术架构 核心原理与案例分析 --李智慧》
标签:XSS,缓存,架构,--,扩展性,案例,模块,加密 From: https://blog.csdn.net/shuz0612/article/details/142442321