内容梳理

  架构,通俗的说法是“最高层次的规划,难以改变的决定”,这些规划和决定奠定了事物未来发展的方向和最终的蓝图。

  软件架构,维基百科定义,“有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计”。

  除了系统功能需求外,软件架构还需要关注性能、可用性、伸缩性、扩展性和安全性这五个架构要素,平衡这五个要素之间的关系以实现需求和架构的目标。

3.1 性能

  性能是网站的一个重要指标,主要通过响应时间、TPS、性能计数器等来衡量网站性能。

  在浏览器端,可以通过浏览器缓存、使用页面压缩、合理布局页面、减少Cookie传输等手段改善性能。还可使用CDN,将静态网站内容分发到离用户最近的网络供应商机房。

  在服务器端,使用服务器本地缓存和分布式缓存,也可通过异步操作将请求发送到消息队列;高并发时,通过集群提高性能。

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

3.2 可用性

  在任何一台服务器宕机的情况下,服务或应用仍然可用。

  主要手段是冗余,应用部署在多台服务器上同时访问,数据在多台存储服务器上互相备份。

3.3 伸缩性

  伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。主要指标是是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。

  对于应用服务器集群,服务器上不保存数据时,所有服务器对等,通过负载均衡设备向集群中加入设备。

  对于缓存服务器集群,加入新的服务器时,需要改进缓存路由算法保证缓存数据的可访问性。

3.4 扩展性

  扩展性指的是网站的架构能够快速响应需求的变化,增加新的业务产品时,对现有产品透明无影响,不需要任何或很少改动已有业务功能就可以上线新产品。

  网站可扩展架构的主要手段是事件驱动架构和分布式服务。事件驱动架构通过消息队列,将消息的产生和处理分离;分布式服务将业务和可复用服务分离开,通过分布式服务框架调用。

3.5 安全性

  保护网站不受恶意访问和攻击,重要数据不被窃取。针对现存和潜在的各种攻击和窃取手段,要有可靠的应对策略。

本章结构

大型网站架构 大型网站架构核心要素_软件架构