分布式缓存 and/or 全局缓存如何工作?
How does a distributed cache and/or global cache work?
如此高层次的概念性问题:
分布式缓存和全局缓存如何工作?
据我了解,请求通过负载均衡器到达 Web 服务器,然后到达缓存。如果发生错误,它会在数据库中查找。
**负载平衡器 > Web 服务器 #xxxxx01 > 缓存 > 负载平衡器 > 数据库 #xx02 **
这个缓存在所有服务器中都是不变的吗?例如,如果我在 322 号网络服务器上的亚马逊购物车中放了一些东西,是否有一个全局缓存被复制以缓存所有服务器上所有用户的所有购物车?所以如果我被路由到网络服务器#151,我仍然可以获得我缓存的购物车吗?还是每个网络服务器都有一个专用的缓存,每次我重新登录亚马逊时,我的请求都会被路由到我的购物车所在的缓存?
感谢您的澄清。
两种解决方案都可用,我都使用过这两种解决方案。其中之一是赤土陶器。它在独立的服务器(主服务器)上运行,但在所有不同的客户端节点上都有自己的客户端 运行。因此,每当客户端请求数据时,它都会从本地 terracotta 客户端请求数据。现在,如果购物车中有更新,假设节点客户端更新其本地 terracotta 客户端,后者又更新主节点,主节点又更新所有其他客户端节点。因此,terracotta 有责任确保所有节点和主节点上的数据同步。当然,如果有任何客户死亡;然后备份然后从主服务器中选择初始数据。如果请求的数据不在本地节点上;它向 master 索要它,然后也在本地保存该数据。
其他解决方案如Redis/Memcache,将数据保存在主节点上,客户端总是去这个主节点请求数据。缺点是 serialization/de-serialization 每个请求都会发生。
如此高层次的概念性问题:
分布式缓存和全局缓存如何工作?
据我了解,请求通过负载均衡器到达 Web 服务器,然后到达缓存。如果发生错误,它会在数据库中查找。
**负载平衡器 > Web 服务器 #xxxxx01 > 缓存 > 负载平衡器 > 数据库 #xx02 **
这个缓存在所有服务器中都是不变的吗?例如,如果我在 322 号网络服务器上的亚马逊购物车中放了一些东西,是否有一个全局缓存被复制以缓存所有服务器上所有用户的所有购物车?所以如果我被路由到网络服务器#151,我仍然可以获得我缓存的购物车吗?还是每个网络服务器都有一个专用的缓存,每次我重新登录亚马逊时,我的请求都会被路由到我的购物车所在的缓存?
感谢您的澄清。
两种解决方案都可用,我都使用过这两种解决方案。其中之一是赤土陶器。它在独立的服务器(主服务器)上运行,但在所有不同的客户端节点上都有自己的客户端 运行。因此,每当客户端请求数据时,它都会从本地 terracotta 客户端请求数据。现在,如果购物车中有更新,假设节点客户端更新其本地 terracotta 客户端,后者又更新主节点,主节点又更新所有其他客户端节点。因此,terracotta 有责任确保所有节点和主节点上的数据同步。当然,如果有任何客户死亡;然后备份然后从主服务器中选择初始数据。如果请求的数据不在本地节点上;它向 master 索要它,然后也在本地保存该数据。
其他解决方案如Redis/Memcache,将数据保存在主节点上,客户端总是去这个主节点请求数据。缺点是 serialization/de-serialization 每个请求都会发生。