首页 >> 大全

大型网站技术架构核心原理剖析

2022-07-12 大全 115 作者:考证青年

什么是软件架构

维基百科定义:软件架构是指对软件整体结构和组件的抽象描述,用于指导大型软件系统各个方面的设计。

软件架构的五个要素:

大型网站技术架构核心原理剖析

可以通过检查这五个要素来衡量软件架构设计的优缺点。

高性能

网站性能是一个客观指标,具体体现在响应时间、吞吐量等技术指标上。

性能优化的最终目标:提升用户体验。

网站性能测试是性能优化的前提和基础,也是性能优化结果的检验和衡量标准。

让我们从三个角度来看看网站性能的不同标准:

用户视角

网站响应的速度(通信时间、处理时间、解析响应数据的时间)。

开发者视角

关注程序本身及其相关子系统的性能,包括响应延迟、系统吞吐量、并发处理能力、系统稳定性等技术指标。

运营商视角

重点关注基础设施性能和资源利用率,如网络运营商的带宽能力、服务器硬件配置、数据中心网络架构、服务器资源利用率和网络带宽等。

性能测试指标

网站性能测试的主要指标有:

性能测试方法

性能测试是不断增加对系统的访问压力,以获得系统性能指标、最大负载能力和最大压力承受能力的过程。性能测试主要包括以下几种方法:

性能分析与优化

排查网站性能瓶颈的方法:查看请求处理的各个环节的日志,分析哪个环节响应时间不合理,超出预期;然后查看监控数据,分析影响性能的主要因素是内存、磁盘、网络还是CPU、次数?问题是架构设置不合理,或者系统资源确实不足。

定位具体性能问题后,根据性能原因进行性能优化。性能优化主要从三个方面进行优化:

性能优化策略

网页前端优化

1. 浏览器访问优化

2. CDN 加速

CDN(, )是指将数据缓存在离用户最近的地方,使用户能够以最快的速度获取数据,提高网页的打开速度。

CDN适用于缓存静态资源,如图片、文件、CSS、脚本、静态文件等。

3. 反向代理

反向代理是指服务器根据客户端的请求,从与其关联的一组或多组后端服务器中获取资源,然后将这些资源返回给客户端。客户端只知道反向代理的 IP 地址。不知道代理服务器背后的具体真实服务器的存在。

反向代理的作用:

应用服务器优化

1. 分布式缓存

网站性能优化第一定律:优先使用缓存来优化性能。

原理:将数据存储在访问速度快的存储介质中,以加快访问速度。

缓存作用:

明智地使用缓存:

2. 异步操作

使用消息队列进行异步调用以提高网站性能。

使用消息队列后,将用户请求的数据发送到消息队列并立即返回,然后消息队列的消费者从消息队列中获取数据,然后进行逻辑处理(如写入数据库) )。

3. 使用集群

使用负载均衡技术为应用构建多台服务器组成的服务器集群,将并发访问请求分发到多台服务器处理,避免单台服务器因负载压力过大而响应缓存,减少用户请求响应延迟,提高用户经验 。

4. 代码优化

代码优化主要集中在以下几个方面:

存储性能优化

磁盘是系统最严重的瓶颈。

1. 硬盘和固态硬盘

在网站应用中,大多数应用随机访问数据,机械硬盘由于需要移动磁头臂而性能较差。SSD 具有更好的性能。

2. B+ 树 & LSM 树

为了提高数据访问特性,文件系统或数据库系统通常对数据进行排序和存储以加快检索速度,因此需要保证数据在不断更新、插入和删除后仍然有序。

传统的关系数据库使用B+树,它是一种针对磁盘优化的N元排序树。加载到内存中并继续搜索,直到找到所需的数据。

LSM树是N阶的合并树,数据的插入、修改和删除都是在内存中进行的,并且会创建一条新的记录。这些数据在内存中以树状结构排序。当数据量超过设定的阈值时,将与磁盘上最新的排序树进行比较。合并。在合并过程中,旧数据将被最新更新的数据覆盖。读操作从内存中的排序树开始搜索,如果没有找到,则从磁盘上的排序树开始搜索。

LSM树上的一次数据更新不需要磁盘访问,可以在内存中完成,比B+树快很多。

对于写入较多且最近写入的数据被密集读取的场景,使用LSM树可以大大减少磁盘访问次数,加快访问速度。

3. RAID 和 HDFS

袭击

廉价磁盘冗余阵列主要是为了改善磁盘的访问延迟,增强磁盘的可用性和容错性。

多盘采用RAID技术,实现多盘数据的并发读写和数据备份。

常见的 RAID 技术:

高密度文件系统

系统在整个存储集群的多台服务器上进行并发的数据读写和备份。HDFS 以块为单位管理文件内容。一个文件被分成多个块。当应用程序写入文件时,HDFS 会在写入一个块后自动将其复制到其他两台机器,确保 3 个副本。(默认)。在处理一个文件( )时,可以同时启动多个任务,并行读取文件的不同块,并发处理,提高读取效率。

HDFS配置等并行计算框架处理大数据时,可以在整个集群上同时读写所有磁盘,无需RAID支持。

高可用性

网站的可用性描述了可以有效访问的网站的特征。

可用性指标:服务7*24可用,可用性超过99.99%。

网站不可用时间(故障时间) = 故障修复时间点 - 故障发现(报告)时间点网站年度可用性指标=(1-网站不可用时间/年度总时间)*100%

硬件故障是常态。网站高可用架构设计的主要目的是保证在服务器硬件出现故障时服务仍然可用,数据仍然可以保存和访问。

高可用架构的主要手段:数据和服务的冗余备份和故障转移。

典型的网站设计通常遵循三层架构模型:

高可用应用

应用程序的显着特征:无状态。

无状态应用是指应用服务器不保存业务的上下文信息,只根据每个请求提交的数据进行相应的业务逻辑处理。多台服务器强度完全相等,将请求提交到任意一台服务器,处理结果完全一样。

通过负载均衡对无状态服务进行故障转移

通过负载均衡的方式,将流量和数据平均分配到集群组成的多台服务器上,提高系统的整体负载处理能力。

应用服务器集群管理

管理的意思:

1. 复制应用服务器开启web容器的复制功能,在集群中的多台服务器之间同步对象,让每台服务器保存所有用户的信息,这样任何机器宕机都不会造成任何宕机。数据丢失。适用于小规模集群。当集群比较大时,集群服务器之间需要大量的通信进行复制,会占用大量的服务器和网络资源。

2. 绑定使用负载均衡的源地址Hash算法实现。负载均衡服务器总是将来自同一个IP的请求分发到同一个服务器,也可以根据信息将来自同一个用户的请求分发到同一个服务器。在同一台机器上,使得所有没有用户的请求在整个会话期间都在同一台服务器上处理,即绑定到特定的服务器上,也称为会话粘性。

缺点:不满足系统高可用的要求。如果服务器出现故障,机器上的数据将会丢失。很少使用。

3. 漏洞利用记录

利用浏览器支持的记录。每次发出请求,都会在请求中发送给服务器,服务器在处理完请求后将修改后的响应发送给客户端。

缺点:受大小限制,记录信息有限;每个请求都需要传输,影响性能;如果用户关闭,访问将异常。

4. 服务器

通过对独立部署的服务器集群的统一管理,应用服务器每次读写都会访问服务器。

应用服务器的状态分为无状态应用服务器和有状态服务器,其架构是根据这两种服务器的不同特点设计的。

服务器实现:分布式缓存、数据库等

高可用服务

高可用服务模块为业务产品提供基础公共服务,一般独立部署。

高可用服务策略:

1. 负载平衡

高可用性是通过负载平衡故障转移策略实现的。

2. 分级管理

根据应用和服务的重要性进行分级管理。不同重要程序的服务使用不同的硬件资源,越重要的服务使用的硬件资源越好。核心服务和数据部署在不同地区的数据中心。

3. 超时设置

设置服务调用的超时时间。一旦超时,通信框架会抛出异常,应用程序根据服务调度策略选择继续重试或将请求转移到同一服务的另一台服务器。

4. 异步调用

应用程序对服务的调用是通过消息队列等异步方式完成的,从而避免了一个服务的失败和整个应用请求的失败。

5. 服务降级

在网站访问高峰期,可能会因为大量并发调用导致服务性能下降,严重时服务可能会宕机。为保证核心应用和功能的正常运行,对服务进行降级。

降级的意思:

6. 幂等设计

服务层必须保证重复调用和一次调用产生相同的结果,即服务是幂等的。

高可用数据

1. 上限

为了保证数据的高可用性,会牺牲数据的一致性。

高可用数据含义:

CAP原理:一个提供数据服务的存储系统不能满足数据一致性()、数据可用性()、分区容限(系统具有跨网络分区的可扩展性)三个条件。

在大型网站应用中,数据的规模总是在快速扩展,因此可扩展性,即分区容错性是必不可少的。规模变大之后,机器的数量也会变得巨大,这就是网络故障和服务器故障的频发。为了保证应用程序的可用性,必须保证分布式处理系统的高可用性。因此,在大型网站中,通常选择加强分布式存储系统的可用性(A)和可扩展性(P),同时在一定程度上放弃一致性(C)。

数据不一致的原因:系统并发写操作高或集群状态不稳定(故障恢复、集群扩容)。

数据一致性分为:

确保数据存储高可用性的手段:

2. 数据备份

保证数据有多个副本,任何一个副本失败都不会导致数据永久丢失,从而实现数据的完全持久化。

数据备份方法:

3. 故障转移机制

保证当一个数据副本不可访问时,可以快速切换其他数据副本,保证系统可用。

故障转移操作包括:

高可用性网站的软件质量保证

为确保在线系统的可用性而采取的一些质量保证措施:

网站运行监控

监测数据收集

监控管理

需要根据实时监控数据进行风险预警,并对服务器进行故障转移和自动负载调整,以最大限度地利用集群中的所有机器资源。

可调节的

可扩展性是指通过不断向集群添加服务器来缓解用户不断上升的并发访问压力和对大数据存储日益增长的需求。

衡量架构可扩展性的指标:

网站可扩展性设计分类

网站的可扩展性设计主要分为以下两类:

1. 物理分离功能实现缩放

通过物理分离不同的网站功能,实现网站可扩展性的手段可以用于网站开发的任何阶段。不同的服务器部署不同的服务,提供不同的功能。

主要有两种分离方式:

2. 单个函数在集群中扩展

随着网站访问量的逐渐增加,单台服务器也不能满足业务规模的要求。需要使用服务器集群,将相同的服务部署在多台服务器上,形成一个集群,作为一个整体对外提供服务。

应用服务器集群的可扩展性设计

负载均衡技术

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了