如果服务器 1 有我的数据库和 Memcached 以及 www.website1.co.uk - 该网站将正常工作。
但如果我有以下场景怎么办:
Server 1 - Database - Memcached - website1.co.uk
Server 2 - website2.co.uk
Server 3 - website3.co.uk
Run Code Online (Sandbox Code Playgroud)
我该如何设置,以便 website2 和 website3 都可以连接、读取和写入服务器 1 上的 memcached 数据库(它们已经可以连接到服务器 1 并在没有 memcache 的情况下读取和写入数据库)。
我是否需要在服务器 2 和服务器 3 上安装 Memcache 才能连接?
我以前从未使用过内存缓存,所以这是一次学习经历。
如果服务器 1 到 3 在同一网络上,则可以放心地在每台应用程序服务器上安装 memcache,因为 Memcache 是为集群架构设计的。这仅仅意味着您可以根据需要运行任意多个实例,但您的应用程序将其“视为”1 个巨大的内存缓存。
摘自 memcached项目 wiki 的一段话:
//in your configuration file:
$MEMCACHE_SERVERS = array(
"10.1.1.1", //web1
"10.1.1.2", //web2
"10.1.1.3", //web3
);
//at the 'bootstrapping' phase of your app somewhere:
$memcache = new Memcache();
foreach($MEMCACHE_SERVERS as $server){
$memcache->addServer ( $server );
}
Run Code Online (Sandbox Code Playgroud)
您的问题与缩放有关吗?如果是这样:
我看到有人说将缓存服务器放在数据库服务器本身上。恕我直言,这不是很有效,因为您希望为数据库服务器提供尽可能多的物理 RAM(取决于您的 Web 应用程序的流量和负载有多大)。
我会在每个应用程序服务器(服务器 2 和服务器 3)上分配一部分内存用于缓存目的。这样,如果您想横向扩展,您只需再配置一台应用程序服务器,检查源代码并将其添加到您的网络中。这样,当您将应用程序服务器添加到服务器池时,内存缓存的大小将以线性方式(或多或少)增长。
显然,以上所有内容都假设所有服务器都在 1 个网络上。