0

我们开发了一个服务器服务(简而言之)支持两个设备之间的通信。我们希望利用 Azure 规模集(多实例 VM)提供的可伸缩性,但我们不确定如何在每个实例之间共享内存。

我们的服务基本上将临时数据存储在本地虚拟机中,这些数据被读取、修改并发送到连接到该服务器的设备。

如果这些数据本地存储在其中一个实例中,则其他实例无法访问并且没有相同的信息。这是对的吗?

如果其中一台设备开始向服务器发出一些请求,则将要处理该请求的实例并不总是相同的,因此最后的数据将在实例之间传播。

所以问题可能是,如何在 Azure 实例之间共享内存?

谢谢

4

2 回答 2

0

根据您要共享的数据类型和延迟的重要性,以及 ServiceFabric(低延迟,但您需要重新架构/重新构建解决方案的部分),您可以查看共享的后端存储库 - Redis Cache 是理想的分布式缓存;SQL Azure 如果你想使用关系数据库来存储数据;存储队列/blob 存储 - 或存储帐户中的文件存储(这允许您从两个 vm 实例写入已安装的网络驱动器)。DocumentDB 是另一种选择,适用于存储 JSON 数据。

于 2016-10-09T20:56:48.260 回答
0

您可以使用Service Fabric并利用Reliable Collections在所有实例中自动复制您的状态。

来自https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-services-reliable-collections/

命名空间中的类Microsoft.ServiceFabric.Data.Collections提供了一组开箱即用的集合,可以自动使您的状态高度可用。开发人员只需对 Reliable Collection API 进行编程,并让 Reliable Collections 管理复制和本地状态。

Reliable Collections 与其他高可用性技术(如 Redis、Azure 表服务和 Azure Queue 服务)的主要区别在于,状态保存在本地服务实例中,同时也具有高可用性。

Reliable Collections 可以被认为是System.Collections类的自然演变:一组新的集合,专为云和多计算机应用程序而设计,不会增加开发人员的复杂性。因此,可靠的集合是:

  • 已复制:复制状态更改以实现高可用性。
  • 持久化:数据被持久化到磁盘上,以便在大规模中断(例如,数据中心断电)时保持持久性。
  • 异步:API 是异步的,以确保线程在产生 IO 时不会被阻塞。
  • 事务性:API 利用事务的抽象,因此您可以轻松地在服务中管理多个可靠集合。

使用可靠集合-
https://azure.microsoft.com/en-us/documentation/articles/service-fabric-work-with-reliable-collections/

于 2016-10-09T20:27:56.580 回答