假设我们有一台带有数据库的服务器和 N 台可用于使用 Memcache 缓存数据的服务器。数据库中的每条记录都可以在缓存中有多个(但远少于 N)表示。例如,ID 为 108 的实体可以通过键 entity_108_1、entity_108_2、...、entity_108_10 进行缓存。当数据库中的某些记录发生变化时,缓存中的相应记录将被替换为新数据。
为什么这种架构不如主/从数据库设置好?看起来它具有相同的优势,而且不会受到复制滞后的影响。
最佳答案
我认为最好使用内存缓存。不仅复制过程中的滞后会产生问题,而且您的 N 服务器不需要巨大的 HDD 空间(如果我们假设您拥有巨大的数据库)。另一方面,您不会实现冗余。如果您的主数据库服务器挂掉,您将没有人可以接替它的位置。因此,从属服务器对于这些目的是必需的,但很可能您不需要 N知道如何使用它)。根据我的经验,维护 memcached 实例总是比从属 MySQL 服务器更容易(并且可能与其他数据库引擎相同)。
当然,如果您开发的应用程序知道如何使用内存缓存,那么所有这些都是有意义的。在你的配置中再添加一个连接字符串,并将它用于某些数据库服务器的只读目的,就像你在 master 中使用它一样,总是更容易。使用来自其他数据源(如内存缓存)的数据假定您以这种方式构建应用程序。
关于database - Master + Slave 数据库架构 vs. Master + Memcache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8795475/