2

我正在创建一个允许用户对事件进行投注的赌场类型游戏,并且我计划使用 Microsoft Azure 作为处理和数据存储(表存储)的后端。我正在寻找有关如何验证信息并通知用户任何更新的任何想法。

理念: 该应用程序允许用户对事件下注,例如在线博彩公司(PaddyPower、Ladbrokes 等)。

工作流程:

  • 用户对某个事件下注
  • 活动结束后,投注结算并通知用户任何奖金
  • 转到第 1 步

场景(简化):

  • 活动开始后用户不应该下注
  • 应通知用户任何问题和奖金

过程:

解决方案 1 - 使用队列: 当用户下注时,一条消息将被放入队列(供所有用户使用)并由 Worker Role 处理。

如果下注对赛事来说太迟了,或者玩家最终赢得了赌注,则需要通知他们结果。

因此,每个活动用户都有自己的队列,客户端应用程序会轮询任何更新。这将允许客户端应用程序获取任何通知并将其显示给用户。

解决方案 2 - 使用 WCF 和队列: 当用户下注时,他们连接到 WCF 服务,它会进行事件开始检查,如果有任何问题,他们会立即收到通知。

将任何通知返回给用户的唯一方法是使用解决方案 1 中的 Queue 方法。

笔记:

  • 上面的场景是游戏的简化版,但是机制是一样的,所以我只是在寻找好的架构思路
  • 我不打算使用通知服务,因为我计划将此应用程序同时用于移动设备和 Facebook,并希望在所有设备上都有相同的体验
  • 我正在使用表存储,而不是使用 SQL Azure
  • 如果更有意义,我愿意使用服务总线

那么哪种解决方案是理想的,还是有更好的解决方案?

4

5 回答 5

0

我建议您查看 CQRS 模式,特别是本文档涵盖的参考实现的详细信息:CQRS Journey

参考实现使用 Azure,我认为它非常适合您描述的系统。此外,它还提供了一种极具可扩展性和弹性的架构。

于 2014-04-21T23:20:35.513 回答
0

新技术可能有点早,但可能考虑使用奥尔良

哦,不要排除使用 SQL Azure 来获取用户信息……尤其是在涉及财务的情况下。NOSQL 并不是持久性的全部和终结……

于 2014-04-24T08:48:08.843 回答
0

如果我是你,我会花时间计划如何设置 PartitionKey + RowKey 组合,以支持来自 Table Storage 的快速查询。只是因为从表中查询数据,尤其是没有 PartitionKey/RowKey 的情况下,比较慢。我学得很辛苦:)

于 2014-04-24T05:52:43.073 回答
0

我正在做与你几乎相同的事情。经过仔细考虑,我选择了以下内容:

SQL Azure / EF 模型。如此易于使用和可扩展的服务总线队列。带有工作人员角色的控制台应用程序的 VM。虽然我们将转移到工作人员或 Web 作业来执行此操作,但我们可以使用 VM 上的控制台应用程序和使用任务调度程序来快速监控和部署。

当我们做对了并且所有可能的异常等都消失了,我们将转向可扩展的工作者角色或网络工作。

于 2014-04-21T22:19:07.643 回答
0

您的解决方案看起来不错,但是您可以考虑使用SignalR进行轮询,这将提高性能。3 件事的组合也应该起作用 1. Web 角色 2. 工作角色 3. WCF 服务 - 自托管在工作角色上

SignalR 的使用很好,因为您永远不知道何时轮询,因此将此任务委托给服务器/角色

于 2014-04-25T14:47:42.487 回答