数据中心内的延迟是多少?我问这个假设有数量级的差异

Nee*_*rka 19 cache

我试图找出一些我无法找到好的答案的东西。

如果我说一个位于数据中心的 REDIS 缓存(或一些外部内存缓存)和位于同一数据中心的应用服务器,那么读取数据的网络连接速度(延迟、吞吐量)是多少这两台机器之间?

例如,网络“速度”是否仍然比从 REDIS 上的缓存中寻找我的数据的 RAM 速度至少高一个数量级?

我的最终问题是——将这一切都放在 REDIS 的内存中实际上是否提供了任何实用程序?与 REDIS 是否将所有内容缓存到 SSD 相比?内存很贵。如果网络确实不是数据中心内的瓶颈,那么内存就有价值。否则,它不会。

我想我的一般问题是,尽管数据中心存在巨大的未知数并且无法概括以及差异,但我们是否在谈论计算机系统中的内存延迟与甚至是内存的 DC 内部的最佳网络之间的足够数量级减少延迟并没有显着提高性能?我知道有很多变量,但它有多接近?这些变量真的很重要吗?例如,对它采取双曲线立场,磁带驱动器比网络慢得多,因此磁带不是缓存的理想选择。

ETL*_*ETL 22

“每个人都应该知道的延迟图表”有几个版本,例如:

问题是,实际上,不仅仅是延迟。这是多种因素的组合。

那么,数据中心内的网络延迟是多少?延迟,我会说它“总是”低于 1 毫秒。它比RAM快吗?不,它接近 RAM 吗?我不这么认为。

但问题仍然存在,它是否相关。这是你需要知道的数据吗?你的问题对我来说很有意义。由于一切都有成本,您是否应该获得更多 RAM,以便所有数据都可以保留在 RAM 中,或者可以不时从磁盘读取。

您的“假设”是,如果网络延迟比 SSD 的速度高(慢),您将无法通过将所有数据保存在 RAM 中而获益,因为网络速度会变慢。

它会出现。但是,您还必须考虑并发性。如果一次收到1000个数据请求,磁盘能做1000个并发请求吗?当然不是,那么处理这 1,000 个请求需要多长时间?与内存相比?

很难将其归结为单一因素,例如重载。但是,是的,如果您只进行一次操作,那么网络的延迟会导致您可能不会注意到 SSD 与 RAM 的区别。

就像在 12Gbps 磁盘出现在市场上之前一样,10Gbps 的网络链接不会因单个流而过载,因为磁盘是瓶颈。

但请记住,您的磁盘正在做许多其他事情,您的进程不是机器上唯一的进程,您的网络可能会携带不同的东西,等等。

此外,并非所有磁盘活动都意味着网络流量。从应用程序到数据库服务器的数据库查询只是非常小的网络流量。来自数据库服务器的响应可能非常小(单个数字)或非常大(具有多个字段的数千行)。要执行该操作,服务器(或不是数据库服务器)可能需要执行多次磁盘搜索、读取和写入操作,但仅通过网络发送回非常少的数据。它绝对不是一对一的网络磁盘RAM。


到目前为止,我避免了您问题的一些细节 - 特别是 Redis 部分。

Redis 是一种开源(BSD 许可)、内存中数据结构存储,用作数据库、缓存和消息代理。- https://redis.io/

好的,这意味着一切都在内存中。抱歉,这个快速的 SSD 驱动器在这里帮不了你。Redis 可以将数据持久化到磁盘,因此可以在重启后加载到 RAM 中。这只是为了不“丢失”数据或在重启后重新填充冷缓存。因此,在这种情况下,无论如何您都必须使用 RAM。您必须有足够的 RAM 来容纳您的数据集。没有足够的内存,我猜你的操作系统会使用swap- 可能不是一个好主意。

  • 很难将其归结为重载的单一因素。但是,是的,如果您只进行一次操作,那么网络的延迟会导致您可能不会注意到 SSD 与 RAM 的区别。就像在 12Gbps 磁盘出现在市场上之前一样,10Gbps 的网络链接不会因单个流而过载,因为磁盘是瓶颈。但请记住,您的磁盘正在做许多其他事情,您的进程不是机器上唯一的进程,等等。 (2认同)
  • 另请注意,除了延迟之外,还有许多其他因素需要考虑,特别是大多数实际服务需要在不同机器上运行服务器程序的多个实例,因此“本地 RAM 中的所有内容”通常根本不是一个实用的选择。 (2认同)