参考文献

名词解释

CSRF

  • CSRF(Cross-Site Request Forgery),中文名称为跨站请求伪造,是一种网络攻击方式.攻击者利用用户在其他网站已经登录的身份,来伪造用户向特定网站发送请求,从而实现非法操作.
  • 攻击方式通常包括以下几个步骤:
    1. 攻击者在自己的网站上放置一个钓鱼网页,利用某些方法(如诱导点击链接、通过广告等方式)诱导用户访问该网页.
    2. 该钓鱼网页中会包含一个针对受害者网站的请求,这个请求通常是一个表单提交或者图片链接等.
    3. 如果用户访问了该钓鱼网页,并且在自己的电脑上同时也登录了受害者网站,那么当用户提交表单时,攻击者就可以利用用户的身份,伪造一个请求,将数据提交到受害者网站上.
    4. 受害者网站会认为该请求是合法的,因为请求中带有用户的身份认证信息,于是就会执行该请求.
  • 为了防止 CSRF 攻击,网站需要采取相应的安全措施.其中比较常见的措施包括使用 CSRF token 防御、检查 Referer 头信息等.此外,用户也应该注意不要随意点击来历不明的链接,以免成为 CSRF 攻击的受害者.

IOPS

  • IOPSInput/Output Operations Per Second)指的是每秒的输入/输出操作次数.它是衡量存储设备(如硬盘、固态硬盘等)或存储系统的性能指标之一.
  • IOPS表示在一秒钟内,存储设备或存储系统能够处理的读取和写入操作的总次数.较高的IOPS值通常表示设备或系统具有更快的响应速度和更高的性能.
  • IOPS的值可以受到多个因素的影响,其中包括存储介质类型(如机械硬盘还是固态硬盘)、存储设备的转速(对于机械硬盘而言)、存储设备的队列深度、读写请求的大小等.固态硬盘通常具有较高的IOPS值,因为它们没有机械部件并且具有更快的访问速度.
  • IOPS是评估存储性能和确定存储需求的重要指标之一.在选择存储设备或配置存储系统时,通常会考虑工作负载的IOPS需求,以确保存储系统可以满足所需的读写操作要求.

Mbps

  • Mbps是计量数据传输速度的单位,表示每秒传输的兆位数(Megabits per second).它用于测量网络传输速度、带宽以及数字通信中的数据传输速率.
  • 一兆位等于1,000,000位,而不是字节.因此,当我们提到Mbps时,我们正在讨论以Mbps为单位的数据速率,而不是以字节为单位的数据量.
  • 举例来说,如果您的网络连接速度是100Mbps,这意味着您的网络能够以每秒传输100兆位的速度进行数据传输.注意,实际可用的吞吐量可能会受到其他因素的限制,例如网络拥塞、设备性能等.
  • 在选择互联网服务提供商(ISP)时,常常会看到以Mbps为单位的宽带速度.较高的Mbps值通常表示更快的下载和上传速度,可以支持更大的数据传输量和更流畅的媒体流媒体播放.
  • 需要注意的是,MbpsMbps(兆字节每秒)是不同的单位.Mbps是指每秒传输的兆字节数,其中1字节等于8位.因此,1Mbps大约等于0.125Mbps.

VPS

  • Virtual Private Server,虚拟专用服务器
  • 传统 VPS 有个缺点,不支持用户自主升降级,它的资源是预先分配的,不易动态调整.举个例子,假设你买了 1c1g 的服务器,想在页面上点点两下升级成 2c2g,这在传统 VPS 里是不支持的.如果给 VPS 加入自主升降级的功能,那它就成了 ECS(Elastic Compute Service,弹性计算服务)

常见的图片格式

JPEG(Joint Photographic Experts Group)

  • JPEG 是一种广泛使用的有损压缩格式,适用于存储照片和彩色图像.它支持将图片压缩为较小的文件大小,但可能会带来一定程度的图像质量损失.

PNG(Portable Network Graphics)

  • PNG 是一种无损压缩格式,适用于存储图标、透明图像以及需要保留细节和边缘清晰度的图像.PNG 支持透明通道,可以制作带有透明背景的图像.

GIF(Graphics Interchange Format)

  • GIF是一种支持动画的格式,适用于简单的动画图像和低色彩数的图像.GIF 使用 LZW 压缩算法进行数据压缩,但由于颜色索引限制,对于复杂、高质量的图像来说,其颜色表可能有限.

BMP(Bitmap)

  • BMP 是一种无损的位图格式,适用于存储原始的像素数据.它可以保存不同位深度和压缩方式的图像,但文件大小较大.

TIFF(Tagged Image File Format)

  • TIFF 是一种无损压缩格式,适用于存储高质量的图像和专业印刷用途.TIFF 文件可以包含图像的元数据和多个图层,但相对于其他格式,文件大小通常较大.

使用场景

  • 对于存储照片和彩色图像,通常使用 JPEG 格式;
  • 对于需要保留细节和透明背景的图像,使用 PNG 格式;
  • 对于简单的动画图像,使用 GIF 格式;
  • 对于存储原始像素数据或专业印刷用途,使用 BMPTIFF 格式可能更合适.

微服务

限流

  • 顾名思义,限流就是限制流量,通常情况下,系统能够承载的流量根据集群规模的大小是固定的,可以称之为系统的最大容量.当真实流量超过了系统的最大容量后,就会导致系统响应变慢,服务调用出现大量超时,反映给用户的感觉就是卡顿、无响应.所以,应该根据系统的最大容量,给系统设置一个阈值,超过这个阈值的请求会被自动抛弃,这样的话可以最大限度地保证系统提供的服务正常.

降级

  • 什么是降级呢?在我看来,降级就是通过停止系统中的某些功能,来保证系统整体的可用性.降级可以说是一种被动防御的措施,为什么这么说呢?因为它一般是系统已经出现故障后所采取的一种止损措施.
  • 那么降级一般是如何实现的呢?根据我的实践来看, 一种可行的方案是通过开关来实现.
  • 具体来讲,就是在系统运行的内存中开辟一块区域,专门用于存储开关的状态,也就是开启还是关闭.并且需要监听某个端口,通过这个端口可以向系统下发命令,来改变内存中开关的状态.当开关开启时,业务的某一段逻辑就不再执行,而正常情况下,开关是关闭的状态.
  • 开关一般用在两种地方,一种是新增的业务逻辑,因为新增的业务逻辑相对来说不成熟,往往具备一定的风险,所以需要加开关来控制新业务逻辑是否执行;另一种是依赖的服务或资源,因为依赖的服务或者资源不总是可靠的,所以最好是有开关能够控制是否对依赖服务或资源发起调用,来保证即使依赖出现问题,也能通过降级来避免影响.
  • 在实际业务应用的时候,降级要按照对业务的影响程度进行分级,一般分为三级: 一级降级是对业务影响最小的降级,在故障的情况下,首先执行一级降级,所以一级降级也可以设置成自动降级,不需要人为干预;二级降级是对业务有一定影响的降级,在故障的情况下,如果一级降级起不到多大作用的时候,可以人为采取措施,执行二级降级;三级降级是对业务有较大影响的降级,这种降级要么是对商业收入有重大影响,要么是对用户体验有重大影响,所以操作起来要非常谨慎,不在最后时刻一般不予采用.

熔断

  • 假如服务提供者出现故障,短时间内无法恢复时,无论是超时重试还是双发不但不能提高服务调用的成功率,反而会因为重试给服务提供者带来更大的压力,从而加剧故障.

  • 针对这种情况,就需要服务消费者能够探测到服务提供者发生故障,并短时间内停止请求,给服务提供者故障恢复的时间,待服务提供者恢复后,再继续请求.这就好比一条电路,电流负载过高的话,保险丝就会熔断,以防止火灾的发生,所以这种手段就被叫作“熔断”.

  • 简单来讲,熔断就是把客户端的每一次服务调用用断路器封装起来,通过断路器来监控每一次服务调用.如果某一段时间内,服务调用失败的次数达到一定阈值,那么断路器就会被触发,后续的服务调用就直接返回,也就不会再向服务提供者发起请求了.

  • 熔断中断路器的几种状态:

    • Closed 状态: 正常情况下,断路器是处于关闭状态的,偶发的调用失败也不影响.
    • Open 状态: 当服务调用失败次数达到一定阈值时,断路器就会处于开启状态,后续的服务调用就直接返回,不会向服务提供者发起请求.
    • Half Open 状态: 当断路器开启后,每隔一段时间,会进入半打开状态,这时候会向服务提供者发起探测调用,以确定服务提供者是否恢复正常.如果调用成功了,断路器就关闭;如果没有成功,断路器就继续保持开启状态,并等待下一个周期重新进入半打开状态.

    img

RISC/CISC

  • 精简指令集计算机(RISC), 代表是如今大家熟知的 ARM 芯片,功耗低,运算能力相对较弱.
  • 复杂指令集计算机(CISC), 代表作是 Intel 的 X86 芯片系列,比如奔腾,酷睿,至强,以及 AMD 的 CPU.特点是性能强劲,功耗高.(实际上从奔腾 4 架构开始,对外是复杂指令集,内部实现则是精简指令集,所以主频才能大幅度提高)

性能指标

RT

  • RT = Thread CPU Time + Thread Wait Time
  • RT (Response Time,响应时间) 可以简单地理解为系统从输入到输出的时间间隔.

QPS

服务器的上行带宽及下行带宽详细说明

上行宽带和下行宽带的区分

  • 如何区分?我们以服务器为中心,流量流入服务器为下行,流量流出服务器为上行,场景如下:

    • **上行宽带:**服务器上的内容被访客浏览或者下载是上行宽带.例如:用户访问网站或者下载服务器上的内容到本地,就是上行宽带,上行宽带是需要用户购买的;

    • **下行宽带:**服务器自身下载文件到服务器上是下行宽带.例如:管理员登录到服务器,使用服务器浏览网页或者下载就是下行宽带,一般下行宽带是免费的;

  • 举例:

    • 我们购买阿里云服务器,该服务器的公网宽带指的就是上行宽带,我们在服务器上部署网站后,用户访问或者下载网站上的内容,受限于上行宽带.
    • 假设,我们购买的宽带为1M(上行宽带),那么用户下载速度理论上峰值为128KB/秒,这只是理论上速度,具体速度与用户本地网络状况以及中间传输网络状况有关系.
    • 对服务器而言, 客户端下载资源消耗的是服务器的上行流量,客户端上传资源消耗的是服务器的下行流量,
      通常买的服务器,比如阿里云,一般买的带宽指的是上行带宽,下行通常是不限的.而且流量的计算一般都是以上行的来计算的.
    • 所以,客户端上传资源,对服务器的带宽基本没有影响,因为服务器的下行基本不限的,跟客户端本身网络的带宽有影响;
    • 而客户端下载资源,除了跟服务器的带宽有影响,跟客户端用户本地本身的网络带宽也有影响的.

压测指标

  • 一类是系统类指标,比如机器的 CPU 使用率、内存占用量、磁盘 I/O 使用率以及网卡带宽等;
  • 一类是服务类指标,比如接口响应的平均耗时、P999 耗时、错误率。