根据 MSDN,Azure 服务可以包含任意数量的辅助角色。据我所知,Windows Azure Fabric 可以随时回收工作角色。如果是真的,那么:
- 工人角色应该是少状态或
- 辅助角色应将其状态保存到 Windows Azure 存储服务。
但我想做一个包含客户端数据的服务,不想使用 Azure 存储服务。我怎么能做到这一点?
根据 MSDN,Azure 服务可以包含任意数量的辅助角色。据我所知,Windows Azure Fabric 可以随时回收工作角色。如果是真的,那么:
但我想做一个包含客户端数据的服务,不想使用 Azure 存储服务。我怎么能做到这一点?
AppFabric 的速度(不管它叫什么)组件是一个分布式缓存,可以在这些情况下使用。
如果数据可以存储在 Azure 中,您有很多选择:Azure 分布式缓存、SQL Azure、blob、表、队列或 Azure 驱动器。听起来您需要持久性,但不能使用任何这些 Azure 存储机制。如果数据安全是问题,你能加密/散列数据吗?了解为什么会有用。
一种替代方法可能根本不持久,通过将同步 Web 服务调用链接/嵌套在一起,从而实现可靠的消息传递。
另一种可能是使用 Azure Connect 将 Azure 计算资源域加入到本地数据中心(如果有的话),并使用本地存储。
您可以使用标准文件 IO API 写入工作人员角色的本地存储 - 但实例关闭时这将被删除。
您还可以使用 SQL Azure,或通过 HTTP 将数据发布到另一个存储服务(例如 Amazon S3 或您自己的服务器)。
但是,这可能会对性能产生影响。根据要存储的数据量、频率和大小,使用 Azure 存储可能会更好!
为什么不想使用 Azure 存储?
Azure 的 Web 和计算角色是无状态的,这意味着它的所有本地数据都是易变的,如果您想维护状态,您需要使用一些外部资源来维护该状态和应用程序中的逻辑来处理它。为简单起见,您可以使用 Azure 驱动器,但在内部还是使用 Blob 存储。