我目前正在观察和研究几种现有的软件架构技术,您可以在开发超大规模应用程序时考虑这些技术。正如他们所说的,网络规模的架构。
我现在了解到,您可以拆分读写模型/数据库。因此,现在我在我的应用程序中构建了一个数据层,它写入RDBMS (SQL服务器),但从Azure Table Storage读取(当适当分区时,它非常快)。
问题是,当读取模型已经非常快时,为什么我要或应该在读取模型之上添加一层缓存层(例如分布式Redis缓存)?将获得什么性能/优势?如果我理解正确的话,它只会增加另一层复杂性,因为您必须处理陈旧的数据。
发布于 2015-10-23 06:35:51
在其他条件相同的情况下,缓存层总是比RDBMS更快,能够处理更高的吞吐量。
基本上,您可以对RDBMS执行更复杂但速度更慢的查询,然后将它们存储在缓存层中,缓存层基本上只是一个用于O(1)访问的键值存储。相比之下,基本上对RDBMS的任何查询都不会那么快。如果你有很多人反复点击相同的查询,这是一个很好的扩展和给你的用户一个更快的体验的路径。
是的,权衡的是它增加了额外的复杂性。如果您的数据库足够强大和快速,可以处理当前的load+,则不必担心缓存问题。另一方面,如果您试图扩展或为用户提供更快的体验,则缓存比分片或集群您的数据库要简单得多,而且对于许多应用程序来说,缓存将走得更远,需要的实现和维护工作更少。
https://stackoverflow.com/questions/33289250
复制相似问题