我正在开发一款小型游戏,其中玩家拥有用于执行某些自动操作的机器人。最简单的例子就是命令机器人将他送到特定的位置。基本上,用户给它一个位置,机器人去那里。我已经使用了很多Azure应用程序功能,我想用它们来进行机器人移动。
在我的头顶,我想到制作一个会触发每一分钟的功能,取出所有需要移动的机器人然后让它们移动。
这种方法的问题在于,如果游戏很受欢迎,可能会有数百个机器人,我必须确保功能执行时间保持在分钟以下。
我考虑过只检索需要移动的所有机器人然后为每个机器人通过其URL调用Azure应用程序功能,以使其为此特定机器人执行。在我的脑海中,它会将执行并行化一点,但我不确定我是否正确。
我还必须考虑使用sql事务,以确保不会造成死锁。
最后一个问题是“如何处理潜在大量数据的重复处理并确保其保持在分钟以下? »
感谢您的建议
答案 0 :(得分:2)
通常,您使用队列处理此类方案。每个订单都成为一个队列消息,然后由它触发Azure功能并处理订单。它可以并将根据队列中的消息量进行扩展。
如果您的逻辑仍需要基于计时器的处理,则计时器应尽可能精简,例如:将队列消息发送到可以完成实际工作的队列。