.net 在负载平衡HTTP服务中使用分布式缓存/存储
我正在使用.NET System.Runtime内存缓存将临时资源存储在基于WebAPI的REST服务中。 资源表示一个“查询”。当客户端通过HTTP发出POST时,我们生成一个ID并将查询粘贴到缓存中。 有关场景的更多详细信息,请参见 当客户端发出GET时,将从内存缓存中检索资源并执行“查询”。 这通常可以正常工作,但在负载平衡的场景中失败,因为客户端可以点击实例1发布“查询”并点击实例 2.获得结果 我正在寻找一些选项,以便能够在负载平衡的情况下工作。 无论是从性能角度还是从瞬态性质来看,将“查询”对象写入数据库都是不可行的 查询的最后一步 一种可能的解决方案是使用分布式缓存服务,如“AppFabric”,但我想在性能和实现复杂性方面与其他选项进行比较 非常感谢您的想法/指导 TIA你知道吗?很容易将当前的webapi项目作为消息处理程序使用。.net 在负载平衡HTTP服务中使用分布式缓存/存储,.net,rest,caching,asp.net-web-api,appfabric,.net,Rest,Caching,Asp.net Web Api,Appfabric,我正在使用.NET System.Runtime内存缓存将临时资源存储在基于WebAPI的REST服务中。 资源表示一个“查询”。当客户端通过HTTP发出POST时,我们生成一个ID并将查询粘贴到缓存中。 有关场景的更多详细信息,请参见 当客户端发出GET时,将从内存缓存中检索资源并执行“查询”。 这通常可以正常工作,但在负载平衡的场景中失败,因为客户端可以点击实例1发布“查询”并点击实例 2.获得结果 我正在寻找一些选项,以便能够在负载平衡的情况下工作。 无论是从性能角度还是从瞬态性质来看,将
使用Redis实现(内置选项)也应该是集中的,而且速度应该非常快。你知道吗?很容易将当前的webapi项目作为消息处理程序使用。
使用Redis实现(内置选项)也应该是集中且非常快速的。为了涵盖所有基础,有两种方法可以缓存数据: InProc 进程内缓存将数据存储在当前应用程序域中(在应用程序进程内)。当您的应用程序在单个服务器上运行时,这可以正常工作,但在涉及多个web服务器的负载平衡场景中,正如您所提到的,此设置会失败。客户端的初始POST可能由一个web服务器处理,但下一个可能由另一个没有客户端第一个请求记录的服务器处理 输出过程 OutProc缓存允许您在应用程序进程之外的单独计算机上存储会话和应用程序数据。ASP。NET允许3种OutProc缓存选项:
- 状态服务器
- SQL Server
- 自定义提供者
您可以在他们的网站上查看NCache。他们提供免费使用的服务。为了涵盖所有基础,有两种方法可以缓存数据: InProc 进程内缓存将数据存储在当前应用程序域中(在应用程序进程内)。当您的应用程序在单个服务器上运行时,这可以正常工作,但在涉及多个web服务器的负载平衡场景中,正如您所提到的,此设置会失败。客户端的初始POST可能由一个web服务器处理,但下一个可能由另一个没有客户端第一个请求记录的服务器处理 输出过程 OutProc缓存允许您在应用程序进程之外的单独计算机上存储会话和应用程序数据。ASP。NET允许3种OutProc缓存选项:
- 状态服务器
- SQL Server
- 自定义提供者