我的问题是关于跨 Amazon EC2 上的多个服务器快速访问的聚合数据。在 ASP.NET 应用程序中,我可能会将这些数据存储在 Application["somevar"] 变量中,以便所有用户都可以快速(在内存中)访问它。
当我希望收集聚合数据并且其值在所有服务器上相等时,问题就开始了。如果我选择部署两台服务器,用户可能每次都将数据传输到不同的服务器(服务器位于负载均衡器或 ElasticBean 下),例如,如果我计算用户请求页面的次数,则每台服务器的应用程序变量将具有不同的值
例如:
服务器 1:
应用程序[“counter1”] = 120
服务器 2:
应用程序[“counter1”] = 130
我想要的是一个在所有服务器上都相同的变量。我想要应用程序类变量中的数据的原因是我想要内存中的数据以便快速访问,然后我可能会将该数据写入数据库。
我想知道的是我怎样才能做到这一点。我虽然关于使用 Amazon ElasticCache,所以即使我在负载均衡器下有 10 个服务器,我也可以通过 API 访问 ElasticCache 变量,我从哪个服务器访问 memcache 变量并不重要,它会获取/设置相同的变量,因此我可以实现保持跨服务器全局变量的目标。
我想知道这是否是一种好的做法,以及哪里有更好的方法来实现这种功能。
我正在用 ASP.NET C# 和 MySQL 开发我的应用程序。还要考虑到一些聚合的数据要写入数据库,我这样做是为了防止同时写入很多,例如达到20次写入后再写入数据数据库。