📜  分布式系统的性能优化

📅  最后修改于: 2022-05-13 01:56:14.624000             🧑  作者: Mango

分布式系统的性能优化

术语“分布式系统”是指一组位于不同机器上的几个组件,这些组件交互和协调动作,在最终用户看来是一个单一的系统。本文将详细介绍如何优化分布式系统的性能的概念。

分布式系统的性能优化:

以下是在分布式系统中优化性能时应注意的参数:

分布式系统的性能优化

  • 同时服务多个请求:当服务器等待暂时不可用的资源时,主要问题是延迟。服务器调用需要大量计算或具有显着传输延迟的远程函数。为了避免这种情况,多线程可以接受和处理其他请求。
  • 减少服务器的每次调用工作量:服务器的性能会很快受到大量客户端请求的影响。每个请求都需要服务器进行大量处理。因此,请保持请求简短,并且服务器必须为每个请求执行的工作量降至最低。使用与任何一种状态无关的服务器,即使用无状态服务器。
  • 幂等远程过程的回复缓存:如果服务器由于它们之间的速度差异而无法处理客户端请求。请求到达的速度高于服务器可以处理的速度。结果,由于未处理的客户端请求以相同的速度开始积压。因此,在这种情况下,服务器使用其回复缓存来发送响应。
  • 应谨慎选择超时值: “太小”的超时可能会过于频繁地过期,从而导致不必要的重传。如果通信真的丢失,“太大”的超时设置将导致不必要的长时间延迟。
  • RPC 协议规范的适当设计:协议规范应该经过精心设计,以降低通过网络传输的数据量以及发送数据的速率(频率)。
  • 使用 LRPC(轻量级远程过程调用)进行跨域消息传递: LRPC(轻量级远程过程调用)工具在微内核操作系统中用于提供跨域(调用和被调用进程都在同一台机器上)通信。它采用以下方法来提高使用远程过程调用的旧系统的性能:
  • 简单控制转移:在这种方法中,使用控制转移过程,指的是客户端线程在服务器域中执行请求的过程。它采用切换调度,其中从客户端线程到服务器线程的直接上下文切换发生。在对服务器进行第一次调用之前,客户端绑定到它的接口,然后,它向服务器提供参数堆栈及其执行线程以捕获内核。现在,内核检查调用者并创建调用链接,并将客户端的线程直接发送到服务器,服务器反过来激活服务器执行。调用过程完成后,控制和结果从调用它的内核返回。
  • 简单数据传输:在这种方法中,使用共享参数堆栈来避免重复数据复制。共享只是指客户端和服务器的使用。因此,在 LRPC 中,相同的参数只从客户端的堆栈复制一次到共享参数堆栈。它带来了成本效益,因为数据传输在从一个域移动到另一个域时创建的数据副本很少。
  • 简单存根:由于上述机制,使用 LRPC 可以生成高度优化的存根。调用存根与客户端的域相关联,而入口存根与服务器的域相关联,在每个过程中都有一个入口存根。每个过程的 LRPC 接口都遵循三层通信协议:
    • 端到端:按照调用约定的定义进行通信
    • 存根到存根:需要使用存根
    • 域到域:需要内核实现
  • 使用 LRPC 存根的好处是可以降低中间层的成本,因为它会使边界变得模糊。一个简单的 LRPC 中的唯一要求是对客户端存根的一次正式过程调用和一次从服务器过程和客户端存根的返回。
  • 并发设计:为了在高调用吞吐量和低调用延迟方面实现高性能,多个处理器与共享内存一起使用。此外,通过消除不必要的锁争用和减少共享数据结构的利用率可以提高吞吐量,同时通过减少上下文切换的开销来降低延迟。使用 LRPC 实现了 3 倍的性能。跨域通信所涉及的成本也降低了。