系统设计中令人困惑的术语:并发

我已经阅读了许多系统设计文档,以下是最容易理解的术语。

系统设计中令人困惑的术语:并发/性能/代理

并发与并行

· 并发是指同时进行多项操作,并不一定要同时执行(但有可能)。

· 并行是关于同时执行多件事。

例如:

系统设计中令人困惑的术语:并发/性能/代理

第一种情况:两个队列都在进行中,但只有一台自动售货机,所以不能同时喝咖啡;第二种情况,两个队列都在进行中,每个队列中的一个人可以同时喝咖啡 。

在计算世界中,并发可以在具有有效时间共享的单处理器系统上发生,但并行性只能在多核CPU / GPU上发生。

性能与可扩展性

· 性能与速度有关,它可以处理请求的速度。

· 可伸缩性与系统处理大量用户/数据/流量的能力有关。

让我们以上面的示例为例,我们有一个自动售货机,它可以非常快速地以大约每秒一秒钟的速度煮咖啡。 如果每秒只有不到一位消费者去自动售货机,他们显然可以在一秒钟内拿到咖啡。

如果每秒有两个消费者去自动售货机:

· 在第一秒:第一位消费者和第二位消费者来喝咖啡。 第一位消费者在1秒内拿到咖啡,第二位消费者将在2秒内拿到咖啡,因为他需要等待第一位消费者。

· 在第二个秒:第二个消费者开始流程之后,第三个和第四个消费者就来了。 第三位消费者必须等待2秒钟才能喝咖啡,因为他需要等待1秒钟才能让第二位消费者喝完咖啡。 第四个消费者需要等待3秒。

· 在第三秒:第五和第六位消费者来了。 他们需要分别等待3秒和4秒才能喝咖啡。

· 而且,随着时间的推移,消费者使用自动售货机的时间越长,他们等待的时间就越长……

系统设计中令人困惑的术语:并发/性能/代理

我们不太在乎自动售货机制作一杯咖啡的速度,但我们关心的是消费者平均需要等待多长时间。 如您所见,当消费者以更快的速度进入自动售货机时,消费者需要等待的时间显着增加。

系统设计中令人困惑的术语:并发/性能/代理

在这种情况下,整个系统是不可扩展的,如果我们要拥有一个高度可扩展的系统,则无论有多少用户进入,我们都需要确保性能恒定。

代理与反向代理

系统设计中令人困惑的术语:并发/性能/代理

转发代理(通常简称为"代理"):

· 客户端将请求发送到代理,然后将请求转发到目标服务器。

· 它代表客户端,并向服务器隐藏客户端的身份。 服务器仅知道转发代理ip,而对真实客户端一无所知。

· 通常用于绕过网络块。 VPN是一个很好的例子。

反向代理:

· 它接受来自客户端的请求,将其转发到可以满足要求的服务器,然后将服务器的响应返回给客户端。

· 它代表服务器,并隐藏服务器的身份。 客户端仅知道反向代理ip,而对真实服务器一无所知。

· 它提供对专用网络上服务器的控制访问。 反向代理可以执行身份验证任务,以及缓存或解密数据。

(本文翻译自Tuan Nhu Dinh的文章《Confusing terms in system design: concurrency vs parallelism, performance vs scalability, proxy vs reverse proxy.》,参考:https://medium.com/swlh/confusing-terms-in-system-design-concurrency-vs-parallelism-performance-vs-scalability-proxy-vs-e3717b3bd81e)


分享到:


相關文章: