由于分布式缓存需要网络调用,在某些情况下直接从数据库中读取不是更好吗?
As distributed caching requires network call, isn't it beneficial to read directly from the DB in some cases?
我想了解 运行 单独服务器上的内存中缓存实例在分布式缓存中查找数据的好处是什么。应用程序服务器必须进行网络调用才能从缓存中获取数据。读取数据时网络调用不会增加延迟吗?直接从数据库实例获取数据不是更有意义吗?
网络调用比磁盘查找快一个数量级(数据中心内的 RTT 不到 100 微秒)。从内存中查找也相当快(每次读取 10-20 微秒)。另一方面,数据库通常需要从磁盘读取,并且它们维护额外的事务元数据和锁。
所以缓存提供了更高的吞吐量以及更好的延迟。最终设计取决于数据库类型和数据访问场景。
我想了解 运行 单独服务器上的内存中缓存实例在分布式缓存中查找数据的好处是什么。应用程序服务器必须进行网络调用才能从缓存中获取数据。读取数据时网络调用不会增加延迟吗?直接从数据库实例获取数据不是更有意义吗?
网络调用比磁盘查找快一个数量级(数据中心内的 RTT 不到 100 微秒)。从内存中查找也相当快(每次读取 10-20 微秒)。另一方面,数据库通常需要从磁盘读取,并且它们维护额外的事务元数据和锁。
所以缓存提供了更高的吞吐量以及更好的延迟。最终设计取决于数据库类型和数据访问场景。