大型网站架构之大型网站核心架构要素

158 阅读4分钟

大型网站核心架构要素

软件架构指的是,有关软件整体结构与组件的抽象描述,用于指导大型软件系统各方面的设计。
1.性能
在浏览器端
a.通过浏览器缓存、使用页面压缩、合理布局页面、减少Cookie传输等手段改善性能;
b.可以使用CDN,将网站静态内容分发至离用户最近的网络服务商机房,使用户通过最短访问路径获取数据;
c.在网站机房部署反向代理服务器,缓存热点文件,加快请求响应速度,减轻应用服务器负载压力。

在应用程序段
a.使用服务器本地缓存和分布式缓存,通过缓存在内存中的热数据处理用户请求,加快请求处理过程,减轻数据库负载压力。
b.通过异步操作将用户请求发送至消息队列等待后续任务处理,而当前请求直接返回响应给用户。
c.采用分布式集群的方式,利用负载均衡,提高整体处理能力,改善性能。

在代码层面
通过使用多线程、改善内存管理等手段优化性能

在数据层面
使用索引、缓存、SQL优化等手段进行性能优化

2.可用性
几乎所有网站都承诺724可用,但事实上任何网站都不可能达到完全的724可用。
高可用主要手段就是冗余,应用应部署在多台服务器上同时提供访问,数据存储在多台服务器上相互备份,
从而实现任何一台服务器宕机都不影响应用的整体可用,也不会导致数据丢失。

同时可以通过预发布验证、自动化测试、自动化发布、灰度发布等手段,减少将故障引入线上环境的可能,避免故障范围扩大。

3.伸缩性
伸缩性是指通过不断向集群中加入服务器的手段不断上升的用户并发访问压力和不断增长的数据存储需求。
衡量系统伸缩性的标准:
1.是否可以用多台服务器构建集群
2.是否容易向集群中添加新的服务器(加入新节点的平滑性)
3.加入新的服务器是否可以提供和原来的服务器无差别的服务。
4.集群中可容纳的总的服务器数量是否有限制

对于应用服务器集群,只要服务器上不保存数据,所有服务器都是对等的,通过使用合适的负载均衡设备就可以像集群中不断加入服务器。
对于缓存服务器集群,首先要考虑到数据同步问题,以及缓存失效策略,需要改进缓存路由算法保证缓存数据的可访问性。
对于数据库服务器集群:

  • 关系数据库虽然支持数据复制,主从热备等机制,但是其伸缩性只能借助其他工具,通过路由分区等手段形成集群。
  • NoSQL 天生具有良好的伸缩性

4.扩展性
网站的扩展性直接关注网站的功能需求,即添加新功能
衡量系统扩展性的标准:
1.在网站添加新的业务产品时,是否可以实现对现有产品透明无影响
2.是否可以改动很少就可以实现新功能

网站的可扩展的手段主要有

  • 事件驱动架构:利用消息队列,将消息生产和消息处理分离开来,可以透明地增加新的消息生产者任务或者消息消费者任务。
  • 分布式服务:业务之间通过分布式服务框架来进行相互调用,从而降低系统耦合度。

5.安全性
衡量网站安全性的标准:
针对现存和潜在的各种攻击和窃密手段,是否有可靠的应对策略。

在这里插入图片描述