大型网站核心架构要素

1.性能——响应时间决定用户

问题本质——用户视角的网站性能:用户的感受包括用户计算机和网站服务器通信的时间,网站服务器处理的时间,用户计算机浏览器构造请求解析响应数据的时间。

即影响用户体验的有用户计算机的性能,网络运营商宽带服务的差异,网站服务器性能(也跟网站代码实现有关),用户使用浏览器解析html的速度

开发人员视角的网站性能指标有:

(1)响应时间:从请求到收到最后响应数据的时间(如果测试的目标程序本身需要花费的时间极少,一般通过测试多次执行需要的总响应时间除以次数)。

(2)并发数:系统同时能够处理请求的数目 ,反映系统的负载特性(通过多线程模拟并发的方式,为了模拟实际用户,两次请求之间加入一个随机等等时间,这个时间间被称作思考时间)。

注:网站系统用户数>>网站在线用户数>>网站并发用户数

(3)吞吐量:单位时间内系统处理的请求数,体现系统的整体处理能力。

注:对于网站,吞吐量的衡量可以用‘请求数/秒’,‘页面数/秒’,‘访问人数/天’,‘处理的业务数/小时’等,常量化指标有:TPS(每秒事务数),HPS(每秒HTTP请求数),QPS(每秒查询数)等。

(4)性能计数器:描述服务器或操作系统性能的一些数据指标,包括System Load、对象与线程数、内存使用、CPU使用、磁盘与网络I/O等,这些指标也是系统监控的重要参数,可以对这些指标设置报警阈值,当监控系统发现性能计数器超过阈值时,就会报警。

注:System Load,即系统负载,指当前被CPU执行和等待被执行的进程数总和,反映系统忙闲程度(多核CPU情况下,完美情况是所有CPU都在使用,没有进程在等待处理,所以Load的理想值是CPU数目,linux系统中用top命令查看,显示的三个浮点数分别表示最近1分钟,10分钟,15分钟的运行队列平均进程数)

性能测试方法:见性能测试

主要优化手段:

(1)浏览器端:

①浏览器缓存;

②使用页面压缩;

③合理布局页面;

④减少Cookie传输;

(2)CDN:将网站静态内容分发至离用户最近的网络服务商机房,让用户通过最短访问路径获取数据。

(3)反向代理服务器:缓存热点文件,加快请求响应速度,减轻应用服务器压力

(4)应用服务器端:

①服务器本地缓存;

②分布式缓存;

③通过异步操作将请求发送至消息队列等待后续处理,加快请求响应及实现削峰;

④集群

(5)代码层面:多线程,改善内存管理等。

(6)数据库服务器端:索引,缓存,SQL优化,另外,方兴未艾的NoSQL数据库通过优化数据模型、存储结构、伸缩性等手段在性能方面的优势日趋明显。

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

对于网站而言,性能符合预期仅仅是必要条件,因为无法预知网站可能会面临的访问压力,所以必须要考察系统在高并发访问情况下,超出负载设计能力的情况下可能会出现的性能问题。

网站需要长时间持续运行,还必须保证系统在持续运行且访问压力不均匀的情况下保持稳定的性能特性。

2.可用性——你能保证几个9?

网站高可用设计的前提是必然会出现服务器宕机,而高可用设计的目标就是当服务器宕机的时候,服务或者应用依然可用。

提高可用性的方法:

(1)主要手段——冗余:

①应用服务器:多台应用服务器通过负载均衡设备组成一个集群共同对外提供服务,任何一台服务器宕机,只需把请求切换即可(前提是应用服务器没保存会话信息)

②存储服务器:对数据进行实时备份,当服务器宕机时将数据访问转移到可用服务器上,并进行数据恢复,以保证其他服务器宕机时数据依然可用

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

3.伸缩性:通过不断向集群中添加服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求

(1)衡量标准:

  ①是否可以多台服务器构建集群?

  ②是否容易向集群中添加新服务器?

  ③加入服务器后是否能提供无差别服务?

④集群中可容纳的服务器数量是否有限制?

(2)主要手段:

  ①应用服务器:使用合适的负载均衡设备(应用服务器上不保存数据);

  ②缓存服务器:加入新服务器可能使缓存路由失效,对严重依赖缓存的应用可能会导致崩溃,所以需要改进缓存路由算法保证缓存数据的可访问性;

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

4.扩展性——不痛不痒新业务就上线了

衡量标准:增加新业务时是否对现有产品透明无影响,不需要任何改动或者很少改动既有业务功能就可以上线新产品。

主要手段:

(1)事件驱动架构:通常利用消息队列实现,将消息产生和消息处理分开,可以透明地增加生产者任务或消费者任务

(2)分布式服务:将业务和可复用服务分离,通过分布式服务框架调用。

5.安全性

安全架构:保护网站不受恶意访问和攻击,保护网站重要数据不被窃取

衡量标准:针对现存和潜在的各种攻击与窃密手段,是否有可靠的应对策略。

原文地址:https://www.cnblogs.com/roggeyue/p/9241395.html

时间: 2024-10-11 00:16:46

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

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

一.性能—响应时间决定用户 (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.在应用服务器端,可以使用服务器本地缓存和分布式缓存,通过缓存在内存中的热点数据处理用户请求,加快请求处理过程,减轻数据库负载压力.也可以将一些异步操作发送至消息队列等待后续任务处理,而当前请求直接返回响

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

一般来说,除了当前的系统功能需求外,软件架构还需要关注性能.可用性.伸缩性.扩展性和安全性这5个架构要素. 3.1 性能 性能是网站的一个重要指标,任何软件架构设计档案都必须考虑可能会带来的性能问题. 优化网站性能的手段非常多,从用户浏览器到数据库,影响用户请求的所有环节都可以进行性能优化. 在浏览器端,可以通过浏览器缓存.使用页面压缩.合理布局页面.减少 Cookie传输等手段改善性能. 还可以使用 CDN,将网站静态内容分发至离用户最近的网络服务商机房,使用户通过最短访问路径获取数据.可以在

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

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

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

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

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

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

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

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

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

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

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

<大型网站技术架构:核心原理与案例分析>笔记01 1.大型网站核心架构要素. 架构:"最高层次的规划,难以改变的决定."从这个角度而言,人生规划也是一种架构.选什么学校.学什么专业.进什么公司.找什么对象,过什么样的生活,都是自己人生的架构. 软件架构:"有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计." 五大要素:性能.可用性.伸缩性.扩展性和安全性. 2.性能测试指标: 响应时间:指应用执行一个操作需要的时间,包括从发出请求开始