大型网站核心架构要素
- 性能
- 可用性
- 伸缩性
- 扩展性
- 安全性
性能
-
浏览器端:浏览器缓存,页面压缩,优化页面布局,减少cookie传输;CDN和反向代理
-
应用服务器:本地缓存和分布式缓存,异步消息队列,集群
-
代码层面: 多线程、改善内存管理
-
数据库:索引,缓存,SQL,NoSQL
衡量指标:响应时间、TPS、系统性能计数器等
可用性
网站高可用的主要手段是冗余。
伸缩性
衡量架构伸缩性的主要标准:是否可以使用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器后是否可以提供与原来无差别的服务。集群中可容纳的总的服务器数量是否有限制。
-
应用服务器集群:负载均衡
-
缓存服务器集群,新加入的服务器可能导致缓存路由失效,进而导致集群中大部分缓存数据都无法访问。需要改进缓存路由算法。
-
关系型数据库支持数据复制,主从热备等机制,但很难做到大规模集群伸缩性。因此必须在数据库外实现,通过路由分区等手段将部署有多个数据库的服务器组成集群。
-
NoSQL数据库产品通常对伸缩性支持都比较好
扩展性
衡量网站架构扩展性好坏的主要标准:在网站增加新的业务产品时,是否可以实现对现有产品透明无影响,不需要任何改动或者很少改动既有业务功能就可以上线新产品。
网站可扩展架构的主要手段:
- 事件驱动架构,也就是消息队列
- 分布式服务
安全性
衡量网站安全架构的标准:针对现存和潜在的各种攻击与窃密手段,是否有可靠的应对策略。
网友评论