1

在交易应用程序中,数据每秒都在变化。我们将数据放入工作者角色的 DataCache 对象中

public class TradeData
  {
      public int LoginId;
      public double Price;
      public long Time;
      public int Profit;
      public string Quote;
      public double commission;
  }

putting data in a cache in infinite loop like
DataCache dc = new DataCache("Trade")
while(true)
{
  TradeData[] TradeInfo = GetDataFromAPI();
  foreach(var t in TradeInfo )
  {
     dc.put(t.LoginId.Tostring(),t)
  }

}

将频繁变化的数据放在azure中的cacheworker角色中是否可行?

4

2 回答 2

1

简短的回答:这取决于但可能是的

我假设您将缓存用作数据分发机制 - 而不是存储您的消费者将缓存以查找最新值。这可以节省您的性能以及表存储事务的成本

从缓存中写入和读取通常会非常快。如果您未在专用缓存中启用冗余,则您的缓存数据将仅存储在一个位置 - 因此不会将重复频繁更改的数据的负担放在缓存节点上。

请注意,如果您更关心数据准确性而不是数据性能,您可能需要考虑使用持久的中央存储而不是缓存。

如果您要使用缓存,我将实现专用缓存而不是并置缓存,并使用较少的功能更强大的服务器而不是更多的功能较弱的服务器。

高温高压

于 2013-07-11T19:55:18.967 回答
0

在最终确定方法之前进行性能测试。Azure 缓存速度很快,但没那么快。它比从竞争数据库中获取数据要快,但并不比表/blob 存储快得多。如果你在很多节点上运行,数据在台机器上的可能性很低,所以大多数读取都必须从另一个节点获取数据——这需要网络读取,并在可能是有点忙于做其他事情(Azure 缓存不会复制,它会分发)。

是的,这可能是可行的,但如果您正在寻找性能提升,Azure 缓存可能不是性能最高的。先做一些实际的测试,然后比较不同的选项。您可能会惊讶于表/blob 存储优于缓存。

于 2013-07-11T20:05:59.387 回答