大型网站技术架构——核心原理与案例分析(二)

简介: 网站高性能架构一、性能测试指标 1.1、响应时间1.2、并发数   指系统能够同时处理请求的数目,反映了系统的负载特性1.3、吞吐量  TPS(每秒事务数) HPS(每秒HTTP请求数) QPS(每秒查询数)等1.

网站高性能架构

一、性能测试指标 

1.1、响应时间

1.2、并发数   指系统能够同时处理请求的数目,反映了系统的负载特性

1.3、吞吐量  TPS(每秒事务数) HPS(每秒HTTP请求数) QPS(每秒查询数)等

1.4、性能计数  包括System Load、对象与线程数、内存使用、CPU使用、磁盘与网络I/O等指标

二、性能测试方法

2.1、性能测试 与初期规划的性能指标为预期目标,不断施加压力,验证是否在可接受范围,性能是否能达到性能预期

2.2、负载测试  不断地增加并发请求以增加系统压力,直到系统的某项或是多项性能指标大致安全临界值

2.3、压力测试   超过安全负载的情况下,对系统继续施加压力,直到系统崩溃或不能再处理任何请求,以此获得系统最大压力承受能力。

2.4、稳定性测试

三、性能优化

  根据网站分层架构,可分为Web前端性能优化、应用服务器性能优化、存储服务器性能优化。

3.1、Web前端性能优化

3.1.1 浏览器访问优化

A、减少http请求  HTTP每次都要建立通信链路,进行数据传输,服务端,会启动独立的线程去处理,这些开销都很昂贵,减少HTTP请求的数据目可以有效提高访问性能。主要手段:合并CSS、合并JavaScript、合并图片

B、使用浏览器缓存 对静态资源文件可以缓存在浏览器中,通过设置HTTP头中的Cache-Control和Expires属性,可以设置浏览器缓存,针对JavaScript可以通过改变文件名实现,浏览器缓存策略在更新静态资源 时,应采用批量更新的方法,不宜一次全部更新

C、启用压缩,在服务器端对文件进行压缩,在浏览器端对文件解压,一般采用GZip压缩可达80%的压缩率

D、CSS文件放在页面最上面、JavaScript放在页面最下面(这一点深有体会)

E、减少Cookie传输

3.1.2 CDN加速

3.1.3 反向代理 除了安全功能、代理服务器也可能通过配置缓存功能加速Web请求

3.2 应用服务器性能优化

3.2.1 分布式缓存  缓存的本质是一个内存Hash表,缓存主要存放那些读写比很高、很少变化的热数据。网站数据访问一般遵循二八定律、即80%的访问落在20%的数据上,将这20%的数据缓存起来,可以很好的地改善系统性能。提高数据读取速度 、降低存储访问压力

使用缓存时要注意缓存穿透(恶意的) 目前成熟的缓存产品有Memcached、Redis

3.2.2 异步操作   任何可以晚点做的事情都应该晚点再做

3.2.3 使用集群

3.2.4 代码优化 

    A、使用多线程

    B、资源复用 单例  对象池

   C、数据结构  如Time33可以很好的解决hash冲突

   D、垃圾回收  垃圾回收可能会对系统的性能特性产生巨大影响,理解垃圾回收机制有助于程序优化和参数调优。

3.3 存储性能优化  

3.3.1 机械硬盘 VS 固态硬盘 

3.3.2 B+树 VS LSM树

       传统机械磁盘具有快速顺序读写、慢速随机读写的访问特性,这个特性对磁盘存储结构和算法的选择影响很大。

       传统的关系型数据库使用的是B+树。

       目前许多NoSQL采用的LSM树

什么是LSM树:核心思想的核心就是放弃部分读能力,换取写入的最大化能力。LSM Tree ,这个概念就是结构化合并树的意思,它的核心思路其实非常简单,就是假定内存足够大,因此不需要每次有数据更新就必须将数据写入到磁盘中,而可以先将最新的数据驻留在磁盘中,等到积累到最后多之后,再使用归并排序的方式将内存内的数据合并追加到磁盘队尾(因为所有待排序的树都是有序的,可以通过合并排序的方式快速合并到一起)。

3.3.3 RAID(廉价磁盘冗余阵列) VS HDFS

RAID的技术有(以下假设有N块磁盘)

RAID0、将数据分成N份,同时并发写N块磁盘,是一块磁盘的N倍,缺点,不做备份,一块磁盘出损坏,数据完整性被破坏

RAID1 写入时将数据同时写入两块磁盘,

RAID10 结合RAID0 RAID1 缺点 对磁盘的利用率不高

RAID3 将数据分成N-1份,并发写入N-1块磁盘,在第N块磁盘记录校验数据,作何一块磁盘损坏,可以利用其他N-1块磁盘的数据修复。缺点,任何修改都会导致第N块磁盘重写校验数据,N磁盘容易损坏。RAID3很少在实践中使用

RAID5 与RAID3原理类似,但被更多使用,原因校验数据不是写入第N块磁盘,而是螺旋式地写入到所有的磁盘中,这样校验数据的修改被平均到所有磁盘上。

RAID6 与 RAID5类似,但是数据只写入N-2块磁盘,并螺旋式地在两块磁盘中写入校验信息


HDFS,以块为单位管理文件,当应用程序写文件时,每写完一个Block,HDFS就将其自动复制到另外两台机器上,保证每个Block有三个副本。

HDFS两个重要的服务器角色NameNode(只部署一个)、DataNode


性能优化的最终目的是改善用户体验,让他们感觉网站很高。

目录
相关文章
|
10天前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
24天前
|
人工智能 前端开发 编译器
【AI系统】LLVM 架构设计和原理
本文介绍了LLVM的诞生背景及其与GCC的区别,重点阐述了LLVM的架构特点,包括其组件独立性、中间表示(IR)的优势及整体架构。通过Clang+LLVM的实际编译案例,展示了从C代码到可执行文件的全过程,突显了LLVM在编译器领域的创新与优势。
46 3
|
27天前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
61 1
|
3天前
|
机器学习/深度学习 存储 人工智能
基于AI的实时监控系统:技术架构与挑战分析
AI视频监控系统利用计算机视觉和深度学习技术,实现实时分析与智能识别,显著提升高风险场所如监狱的安全性。系统架构包括数据采集、预处理、行为分析、实时决策及数据存储层,涵盖高分辨率视频传输、图像增强、目标检测、异常行为识别等关键技术。面对算法优化、实时性和系统集成等挑战,通过数据增强、边缘计算和模块化设计等方法解决。未来,AI技术的进步将进一步提高监控系统的智能化水平和应对复杂安全挑战的能力。
|
23天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
27天前
|
监控 持续交付 API
深入理解云计算中的微服务架构:原理、优势与实践
深入理解云计算中的微服务架构:原理、优势与实践
38 0
|
1月前
|
API 持续交付 网络架构
深入解析微服务架构:原理、优势与实践
深入解析微服务架构:原理、优势与实践
32 0
|
21天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
1月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
43 3
|
1月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####

热门文章

最新文章