【问题标题】:continuous database sync with azure functions与 azure 函数的连续数据库同步
【发布时间】:2017-09-28 01:53:26
【问题描述】:

我正在开发一个带有 xamarin 和 azure serverless 功能的应用程序作为应用程序的后端。 我将通过云端数据库实时同步用户的地图坐标。即:从所有用户获取坐标,然后将更新后的坐标同时推送给所有用户,持续,以便所有用户都能看到彼此的实时位置。

所以我必须在 连续循环 中调用 azure 函数,以便将数据库与云同步。所以它可以每隔 4-5 秒检查一次数据库。这是最好的方法吗?或者这会导致天蓝色功能的执行过多并且可能代价高昂?如果有更好的同步数据库的方法,请提出建议。谢谢。

【问题讨论】:

  • 使用 Azure 服务总线以一对多主题/订阅作为开始查看“代理消息传递”:docs.microsoft.com/en-us/azure/service-bus-messaging/… 您还可以根据添加到队列(ServiceBusQueueTrigger)。你不想尝试连续循环一个 Azure 函数,此时假脱机一个实例并让它做你连续的脏工作.... ;-)
  • @SushiHangover 设置一个什么实例? :P 一个 azure 通话最多可以持续 5 分钟。但是我的连续工作可能会长达一个小时左右,这意味着我必须持续跟踪一个组的地理位置更长的时间,那个时间不是固定的,它可以是可变的,
  • 假脱机运行您的代码的“VM”实例(或 Docker 容器)......但是您可以使用 Azure 服务总线,并且您不必在在云中,每个客户端/设备通过主题将其更改位置发布到总线,并且所有订阅该主题的客户端都会收到这些位置更改。现在,其中一个“客户端”可能是一个 VM 或 Docker 容器,它也在对这些位置执行某些操作,或者您有一个为每个已发布位置调用的 Azure 函数(通过 ServiceBusQueueTrigger),您可以将其推送到日志、数据库等
  • 如果我不需要记录它们,我根本不需要 azure 函数或 VM/Docker 吗?其次,天蓝色服务总线的成本如何?它的成本与 VM 相似(持续运行)还是与功能相似(仅针对发送的特定主题收费)?

标签: database azure synchronization azure-functions serverless


【解决方案1】:

您有一个移动应用程序正在对 azure 函数进行 http 调用。功能是有弹性的,规模可能会很好。据我了解,您不是询问如何实现服务器端;而这里真正的问题是定价,对吧?

Azure Functions 可以通过两种方式运行:

  1. “无服务器”,又名“消费计划”。在这种情况下,Azure Functions 正在管理底层服务器(并向外扩展),您只需为活动使用付费(每 GB*秒)。这是您访问http://functions.Azure.com 时默认获得的。在此处查看定价详情:https://azure.microsoft.com/en-us/pricing/details/functions/
  2. “AppService”- 在这种情况下,您已经预先购买了一个 VM,并且您决定了要扩展多少。 您支付固定的每月费用。在此处查看定价详细信息:https://azure.microsoft.com/en-us/pricing/details/app-service/

您可以在它们之间切换。我建议从第一种方法开始。当您的流量较低时,一开始肯定会更便宜。监控成本,通过定价表运行您的方案,如果最终更便宜,请考虑切换到第二个。

【讨论】:

  • 我确实知道函数中的两个定价系统,我问的原因是我是否在消费计划中循环运行 azure 函数会花费很多,如果我在应用服务计划中运行它会有时运行,有时它不会因此导致额外的成本。所以我试图在不花费额外费用的情况下找到一个漏洞来完成我的场景,而且我没有使用移动应用程序,我想使用完整的无服务器后端,因此使用 azure 函数作为完整的后端。
  • 但是你不需要一个固定的循环——这是由来自移动客户端的调用驱动的需求。即,您的客户端将对服务器进行 http 调用以 a) 更新其位置; b) 询问其他地点。因此,在测试和初始推出期间,您的流量会很低,而 #1 将是迄今为止最便宜的。然后,您可以使用定价图表来计算您可能想要切换到 #2 的时间点。
  • 是的,您的正确启动流量会很低。实际上,我将需要来自一个组中的多个用户(客户端)的连续实时地理定位,即:我必须大约每 5 秒左右获取他们的位置并将它们发送到服务器。我需要连续执行大约一到两个小时,时间可能会有所不同,这就是为什么我问 bcz 是否只调用该函数一次它会获取该时间的坐标,但在 5 秒后我需要再次调用再次执行函数以获取该用户的新坐标,对吧?
  • 正确。但是这些调用都是客户端驱动的;所以不要认为服务器处于“连续循环”中。服务器只是响应(许多)客户端调用。而您只是在寻找处理该工作负载的最佳定价计划。也就是说,您很可能希望找到一种方法来减少这里的网络聊天(例如,不要让每个用户都与其他每个用户进行通信)——但这是另一个问题。
  • 哦,好的,谢谢.. :)
猜你喜欢
  • 2015-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-04
  • 2017-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多