2

我有一个托管在两个负载平衡服务器中的站点。我有一组变量,它们作为查找存储在静态变量中,以执行频繁和快速的查询。静态变量中的值是树形结构的数据,不想每次都查询到DB,绑定列表变量之间的关系。静态变量结构如下所示。

public static ILookup<long, ITree> MyStaticVar;

public interface ITree
{
    long ID { get; set; }
    // Some other properties
    ITree Parent { get; set; }
    IEnumerable<ITree> Children { get; set; }
}

有时静态变量的内容可能会更新(当管理员修改一些值时),所以我用更新的值更新静态变量,以便用户可以立即获得更改。

它在单个服务器上运行良好,但是当我将其发布到两台或多台服务器时,除了登录的一个管理员之外的其他服务器不会更新变量(因为该应用程序服务器中的静态变量只会更新)。

保持我的静态变量在多个服务器中同步的最佳方法是什么?或者是否有任何其他方式来管理我的情况(事件驱动或其他方式来触发/通知其他服务器并刷新其中的变量)?

我有一个会话状态服务器,它管理这些负载平衡服务器之间的会话值。有没有办法将 ILookup 变量的单个实例存储在会话状态服务器中并在所有用户之间共享?

4

1 回答 1

1

现在我做了一个解决方法。但这不是一个优雅的解决方案。我创建了一个 Web 服务来更新静态变量。

我将负载平衡站点的根路径放在 Web 配置中,并在更新任何服务器中的静态变量时调用每个应用程序的 Web 服务。

但这仅在我知道负载平衡服务器站点路径时才有效,还有其他方法可以通过动态查找路径来更新站点吗?

于 2013-12-06T04:51:10.603 回答