三、大型网站核心架构要素

  一般来说,除了当前的系统功能需求外,软件架构还需要关注性能、可用性、伸缩性、扩展性和安全性这5个架构要素。

  3.1 性能

    性能是网站的一个重要指标,任何软件架构设计档案都必须考虑可能会带来的性能问题。

    优化网站性能的手段非常多,从用户浏览器到数据库,影响用户请求的所有环节都可以进行性能优化。

    在浏览器端,可以通过浏览器缓存、使用页面压缩、合理布局页面、减少 Cookie传输等手段改善性能。

    还可以使用 CDN,将网站静态内容分发至离用户最近的网络服务商机房,使用户通过最短访问路径获取数据。可以在网站机房部署反向代理服务器,缓存热点文件,加快请求响应速度,减轻应用服务器负载压力。

    在应用服务器端,可以使用服务器本地缓存和分布式缓存,通过缓存在内存中的热点数据处理用户请求,加快请求处理过程,减轻数据库负载压力。

    也可以通过异步操作将用户请求发送至消息队列等待后续任务处理,而当前请求直接返回响应给用户。

    在网站有很多用户高并发请求的情况下,可以将多台应用服务器组成一个集群共同对外服务,提高整体处理能力,改善性能。

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

    在数据库服务器端,索引、缓存、SQL优化等性能优化手段都已经比较成熟。NoSQL数据库通过优化数据模型、存储结构、伸缩特性等手段在性能方面的优势也日趋明显。

    衡量网站性能有一系列指标,重要的有响应时间、TPS、系统性能计数器等,通过测试这些指标以确定系统设计是否达到目标。这些指标也是网站监控的重要参数,通过监控这些指标可以分析系统瓶颈,预测网站容量,并对异常指标进行报警,保障系统可用性。

    对于网站而言,性能符合预期仅仅是必要条件,因为无法预知网站可能会面临的访问压力,所以必须要考察系统在高并发访问情况下,超出负载设计能力的情况下可能会出现的性能问题。网站需要长时间持续运行,还必须保证系统在持续运行且访问压力不均匀的情况下保持稳定的性能特性。

    

  3.2 可用性

   对于大型网而言,特别是知名网站,网站宕掉、服务不可用是重大事故。几乎所有网站都承诺 7*24 可用,但事实上任何网站都不可能达到完全的 7*24 可用,总会有一些故障时间,扣除这些故障时间,就是网站的总可用时间,这个时间可以换算成网站的可用性指标,以此衡量网站的可用性,一些知名大型网站可以做到 4个9以上的可用性,也就是可用性超过 99.99%。

   网站高可用的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份,任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失。

   对于应用服务器而言,多台应用服务器通过负载均衡设备组成一个集群共同对外提供服务,任何一台服务器宕机,只需把请求切换到其他服务器就可实现应用的高可用,前提条件是应用服务器不能保存请求的会话信息。否则服务器宕机,会话丢失,即使将用户请求转发到其他服务器上也无法完成业务处理。

   对于存储服务器,由于其上存储着数据,需要对数据进行实时备份,当服务器宕机时需要将数据访问转移到可用的服务器上,并进行数据恢复以保证继续有服务器宕机的时候数据依然可用。

   除了运行环境,网站的高可用还需要软件开发过程的质量保证。通过预发布验证、自动化测试、自动化发布、灰度发布等手段,减少将故障引入线上环境的可能,避免故障范围扩大。

   衡量一个系统架构设计是否满足高可用的目标,就是假设系统中任何一台或者多台服务器宕机时,以及出现各种不可预期的问题时,系统整体是否依然可用。

  3.3 伸缩性

    大型网站通过集群的方式将多台服务器组成一个整体共同提供服务。所谓伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。

    衡量架构伸缩性的主要标准就是是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器后是否可以提供和原来的服务器无差别的服务。集群中可容纳的总的服务器数量是否有限制。

    对于应用服务器集群,只要服务器不保存数据,所有服务器都是对等的,通过使用合适的负载均衡设备就可以向集群中不断加入服务器。

    对于缓存服务器集群,加入新的服务器可能会导致缓存路由失效,进而导致集群中大部分缓存数据都无法访问。虽然缓存的数据可以通过数据库重新加载,但是如果应用已经严重依赖缓存,可能会导致整个网站崩溃。需要改进缓存路由算法保证缓存数据的可访问性。

    关系数据库虽然支持数据复制,主从热备等机制,但是很难做到大规模集群的可伸缩性,因此关系数据库的集群伸缩性方案必须在数据库之外实现,通过路由分区等手段将部署有多个数据库的服务器组成一个集群。

    至于大部分 NoSQL数据库产品,由于其先天就是为海量数据而生,因此其对伸缩性的支持通常都非常好,可以做到在较少运维参与的情况下实现集群规模的线性伸缩。

  

  3.4 扩展性

    不同于其他架构要素主要关注非功能性需求,网站的扩展性架构直接关注网站的功能需求。网站快速发展,功能不断扩展,如何设计网站的架构使其能够快速响应需求变化,是网站可扩展架构主要的目的。

    衡量网站架构扩展性好坏的主要标准就是在网站增加新的业务产品时,是否可以实现对现有产品透明无影响,不需要任何改动或者很少改动既有业务功能就可以上线新产品。不同产品之间是否很少耦合,一个产品改动对其他产品无影响,其他产品和功能不需要受牵连进行改动。

    网站可伸缩架构的主要手段是事件驱动架构和分布式服务。

    事件驱动架构在网站通常利用消息队列实现,将用户请求和其他业务事件构造成消息发布到消息队列,消息的处理者作为消费者从消息队列中获取消息进行处理。通过这种方式将消息产生和消息处理分离开来,可以透明地增加新的消息生产者任务或者新的消息消费者任务。

    分布式服务则是将业务和可复用服务分离开来,通过分布式服务框架调用。新增产品可以通过调用可复用的服务实现自身地业务逻辑,而对现有产品没有任何影响。可复用服务升级变更的时候,也可以通过提供多版本服务对应用实现透明升级,不需要强制应用同步变更。

    大型网站为了保持市场地位,还会吸引第三方开发者,调用网站服务,使用网站数据开发周边产品,扩展网站业务。第三方开发者使用网站服务的主要途径是大型网站提供的开放平台接口。

  

   3.5 安全型

      互联网是开放的,任何人在任何地方都可以访问网站。网站的安全架构就是保护网站不受恶意访问和攻击,保护网站的重要数据不被窃取。

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

    小结:性能、可用性、伸缩性、扩展性和安全性是网站架构最核心的几个要素,这几个问题解决了,大型网站架构设计的大部分挑战也就克服了。

      

      

原文地址:https://www.cnblogs.com/veggiegfei/p/10469512.html

时间: 2024-11-12 20:10:12

三、大型网站核心架构要素的相关文章

《大型网站技术架构》读书笔记三:大型网站核心架构要素

一.性能—响应时间决定用户 (1)浏览器端: ①浏览器缓存: ②使用页面压缩: PS:Gzip压缩效率非常高,通常可以达到70%的压缩率,也就是说,如果你的网页有30K,压缩之后就变成了9K左右.想要启用Gzip压缩,提高浏览速度,可以浏览这篇文章:http://www.chinaz.com/web/2012/1017/278682.shtml ③合理布局页面: CSS:把样式表置于顶部:避免使用CSS表达式(expression_r):使用外部JavaScript和CSS:削减JavaScri

大型网站核心架构要素 之一(总览篇)

1.性能,因为用户无法忍受一个响应缓慢的网站. 可以做的优化: A.在浏览器端,可以通过浏览器缓存,使用页面亚索,合理布局页面,减少Cookie传输等手段来改善性能 B.在网络层面,可以使用CDN+反向代理来提升响应速度(主要是一些静态的文件 以及一些热点文件,从而减轻应用服务器负载压力). C.在应用服务器端,可以使用服务器本地缓存和分布式缓存,通过缓存在内存中的热点数据处理用户请求,加快请求处理过程,减轻数据库负载压力.也可以将一些异步操作发送至消息队列等待后续任务处理,而当前请求直接返回响

大型网站技术架构 读书笔记2 大型网站核心架构要素

通常情况下,一个网站的架构出来功能性需求外,还应该考量以下五个方面: 性能 可用性 伸缩性 扩展性 安全性 性能 性能的官方解释,我就不说了.对用户来说,就是系统的反应速度是否快. 对网站来说,性能问题是无处不在的,继而,我们优化性能的手段也有很多. 我们从前到后一个一个来说 在浏览器端,可以通过浏览器缓存,页面压缩,合理布局页面等方式 还可以使用cdn,让一些静态文件放在网络服务商的机房,这样离用户近一些. 也可以使用反向代理,把静态文件存在反向代理服务器上,例如apache 服务器端就是缓存

《大型网站技术架构》--第三章:大型网站核心架构要素

软件架构需要关注以下部分:1. 性能:2. 可用性:3. 伸缩性:4. 扩展性:5. 安全性 一. 性能 以用户为中心,提供快速的网页访问体验.主要参数有较短的响应时间,较大的并发处理能力,较高的吞吐量,稳定的性能参数. 可分为前端优化,应用层优化,代码层优化,存储层优化. 前端优化:网站业务逻辑之前的部分: 浏览器优化:减少Http请求数,使用浏览器缓存,启用压缩,Css Js位置,Js异步,减少Cookie传输: 缓存:CDN加速,反向代理,服务器本地缓存,分布式缓存: 应用层优化:处理网站

大型网站核心架构要素 之二(细解网站的高性能架构)

一.不同视角下的网站高性能指标,以及其优化 1.开发人员的视角 开发人员关注的主要是应用程序本身及其相关子系统的性能,包括响应延迟.系统吞吐量.并发处理能力.系统稳定性等技术指标.优化网站性能的主要手段包括 使用缓存加速数据读取,使用集群提高吞吐能力,使用异步消息加快请求响应及实现削峰,使用代码优化手段改善网站性能. 2.运维人员视角 运维人员更关注基础设施性能和资源利用率,如网络运营商的宽带能力.服务器硬件的配置.数据中心网络架构.服务器和网络带宽的资源利用率等.主要优化手段有建设优化骨干网.

大型网站核心架构要素

1.性能--响应时间决定用户: 问题本质--用户视角的网站性能:用户的感受包括用户计算机和网站服务器通信的时间,网站服务器处理的时间,用户计算机浏览器构造请求解析响应数据的时间. 即影响用户体验的有用户计算机的性能,网络运营商宽带服务的差异,网站服务器性能(也跟网站代码实现有关),用户使用浏览器解析html的速度 开发人员视角的网站性能指标有: (1)响应时间:从请求到收到最后响应数据的时间(如果测试的目标程序本身需要花费的时间极少,一般通过测试多次执行需要的总响应时间除以次数). (2)并发数

读书笔记3大型网站的架构要素

? 一.大型网站的架构要素 1.性能(体现性能的多个方面 响应时间,TPS,系统性能计算器等.) 2.可用性 3.伸缩性(对于应用服务器,只要服务器上不保存数据,所有服务器都是对等的,无状态性.关系性数据库,通过路由分区等手段实现) 4.扩展性 5.安全性 ? 二.性能-响应时间决定用户 (1)浏览器端: ①浏览器缓存: ②使用页面压缩: ? ?PS:Gzip压缩效率非常高,通常可以达到70%的压缩率,也就是说,如果你的网页有30K,压缩之后就变成了9K左右.想要启用Gzip压缩,提高浏览速度,

《大型网站技术架构:核心原理与案例分析》笔记

目录 · 大型网站软件系统的特点 · 大型网站架构演化发展历程 · 初始阶段的网站架构 · 需求/解决问题 · 架构 · 应用服务和数据服务分离 · 需求/解决问题 · 架构 · 使用缓存改善网站性能 · 需求/解决问题 · 架构 · 使用应用服务器集群改善网站的并发处理能力 · 需求/解决问题 · 架构 · 数据库读写分离 · 需求/解决问题 · 架构 · 使用反向代理和CDN加速网站响应 · 需求/解决问题 · 架构 · 使用分布式文件系统和分布式数据库系统 · 需求/解决问题 · 架构 ·

阅读《大型网站技术架构》 第三章心得

今天阅读了<大型网站技术架构> 的第三章,这一章主要讲解了大型网站核心架构要素,并且概括的讲解了相应的实现方法. 软件架构除了系统功能需求外,还需要关注性能.可用性.伸缩性.扩展性.安全性. 其中性能是网站的重要指标.优化网站性能的手段有很多种其中包括: 1.使用CD和反响代理加快反应速度. 2.在应用服务器端实现本地缓存和分布式缓存. 3.通过异步操作将用户的请求发送至消息队列等待后续任务处理,而当前请求直接返回响应给用户. 4.多台应用服务器组成集群. 5.代码层面使用多线程.改善内存管理