【问题标题】:How can I make a distributed shared transactional memory in a Azure webfarm?如何在 Azure Webfarm 中创建分布式共享事务内存?
【发布时间】:2011-12-13 21:39:47
【问题描述】:

我有一个在 azure webfarm 中运行的 REST Web 服务,我需要防止重放附加。

每个请求在几分钟内都包含一个唯一的Cryptographic nonce(一个只允许使用一次的令牌)。

现在我使用一个数据库来创建一个以 nonce 作为主键的条目。这意味着如果一个网络服务器可以在数据库中插入该行,我确信没有其他网络服务器接收到具有相同随机数的请求。实际上我使用表存储(以 rowkey/partitionkey 作为主键)...而不是 SQL Azure。

我的问题是表存储速度很慢(插入一行很容易需要 20-30 毫秒),我正在寻找更快的解决方案。

.NET 是否有分布式共享事务内存库?重要的是我不会引入单点故障(例如,在一台服务器上运行内存数据库)。

奖励:因为这是在 Azure 中运行的,所以我不知道我的服务器的名称或 IP 地址,而且 webfarm 中的服务器数量经常变化。

【问题讨论】:

    标签: .net azure


    【解决方案1】:

    【讨论】:

    • AppFabric 是事务性的吗?我可以 100% 确定两台服务器不会插入相同的废话吗?另外...我可以 100% 确定缓存没有被刷新(例如,当服务器停止时)?
    • AppFabric 支持乐观和悲观并发模型,请参阅msdn.microsoft.com/en-us/library/ee790890.aspx 了解更多信息。
    【解决方案2】:

    我会考虑使用 memcached(在 Azure 上使用的链接:http://blog.smarx.com/posts/memcached-in-windows-azure),因此可以快速存储随机数,然后为了持久性,我还会(异步)将随机数存储在表存储中。

    为了提高性能,在读取时,我会异步执行表存储检查,并检查读取是否应在退出主读取方法时继续。

    【讨论】:

      猜你喜欢
      • 2011-03-19
      • 2014-08-06
      • 2010-10-31
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      相关资源
      最近更新 更多