问题标签 [azure-service-fabric]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
676 浏览

azure - nUnit 和 Azure - 如何从 nUnit 启动 Dev Fabric

我正在尝试为 Azure 创建一个工作进程,我想通过 nUnit 对其进行测试。我需要编写一个连接到存储并将数据上传到它的进程。问题是我找不到任何关于您如何实际设置测试框架以启动开发结构等的参考资料。

我创建了工作处理器角色,然后创建了一个测试项目,连接 nunit 以启动并让项目获取测试项目 dll。这一切都适用于 nUnit 打开,我能够看到测试 dll 并运行测试。

我的问题是“如何在通过 nUnit 运行项目时启动开发结构?” 我假设我需要在测试项目中的设置例程中添加一些东西,但我看不到我应该放入什么。

如果有人有任何提示,经验等,如何链接等,我将非常感激。我确信我不能成为第一个想要测试 Azure 项目的人。

0 投票
4 回答
25622 浏览

windows - 什么是 Windows Fabric 以及如何在其中托管服务?

我最近安装了 Windows Server Service Bus 1.0(在 Windows Server 2008 R2 机器上)。

这也会安装“Windows Fabric”(不是 AppFabric)。

找不到太多关于它的信息,并用谷歌搜索我偶然发现了一个 Lync 服务器帖子(Windows Fabric 也由 Lync Server 2013 安装)。

定义:

“Windows Fabric 是一项 Microsoft 技术,用于创建高度可靠、可分发和可扩展的应用程序。”

从服务总线架构介绍来看,Fabric 似乎允许服务复制、高可用性和容错。

任何人都知道这是否可用于托管自定义 .NET 服务?或任何类型的方向将不胜感激。

提前致谢。

因数

0 投票
3 回答
6935 浏览

azure - Azure Service Fabric 使用情况

Service Fabric 刚刚在构建会议上宣布。我正在阅读有关它的稀缺文档,我有一个问题。

我正在评估 Service Fabric 以托管 CRUD,例如目前在 ASP.NET WebApi 中构建的微服务。

Service Fabric 是否适合托管接收数据、处理数据并返回结果的小块功能,而不是托管 CRUD WebApi 类型的应用程序?

0 投票
8 回答
14901 浏览

azure-service-fabric - 使用 Azure Service Fabric 部署的微服务的 API 网关/代理模式

在观看了 Azure Service Fabric 的 BUILD 会议视频后,我开始想象这可能非常适合我们当前基于微服务的架构。但是,我不完全确定如何解决一件事 - API 网关/代理。

考虑一个不那么简单的微服务体系结构,其中有 N 个服务在 Azure Service Fabric 中运行,暴露 REST 端点。在许多情况下,您希望将这些零散的 API 端点打包成一个单入口 API 供消费者使用,以避免让它们直接连接到服务结构实例。Azure Service Fabric 解决方案似乎在各个方面都如此完整,以至于当我在 BUILD 会谈中提到的功能中看不到可以轻松解决此问题的方法时,我有点想知道我是否遗漏了一些明显的东西。

Vulcan这样的服务旨在通过让服务在etcd中注册他们想要路由到它们的路径来解决这个问题。我猜测解决这个问题的一种方法可能是创建一个单独的有状态 Web 服务,其他服务可以注册自己,提供服务名称和它们需要路由到它们的路径。然后,有状态 Web 服务可以根据其状态将流量路由到正确的实例。但是,这似乎并不完全理想,例如在删除应用程序时删除路由以及通常使状态与部署在集群中的服务保持同步。有没有人考虑过这个问题,或者知道如何在 Azure Service Fabric 中解决这个问题?

0 投票
4 回答
977 浏览

azure-service-fabric - 使用 Azure Service Fabric 编排本地开发或测试环境

在玩了一点 Azure Service Fabric 并观看了 BUILD 的流之后,我有点好奇是否有围绕工具为更复杂的服务编排环境的管道。

假设我构建了一个服务“Service1”,它调用“Service2”和“Service3”中的演员和服务;任何检查“Service1”存储库以执行更改的开发人员还必须不仅检查“Service2”和“Service3”,还必须构建它们并将它们部署到 Service Fabric,然后才能正确测试他/她在“Service1”中的更改”。将此与例如Compose for Docker进行比较(我知道 Azure Service Fabric 本身并不是容器式基础结构,而只是作为示例),您可以在其中创建描述您的服务及其依赖项的清单。然后,您可以轻松引导运行和测试服务所需的整个环境。

这对于自动化测试甚至 QA 服务也很有用,您可以在其中启动一个新集群并部署您的服务 - 及其依赖项 - 并在开始生产部署之前对您的更改运行实际的实时测试。

这可能是一个更适合作为产品反馈的问题或建议,但在将其形成建议之前对此有更多的投入会很有趣。我对用作示例的 Compose 并不十分熟悉,对 Azure Service Fabric 也不是很熟悉,因此可能有更好的解决方案来解决这个问题。

0 投票
2 回答
1531 浏览

azure - Microsoft Azure Service Fabric SDK - 预览 1 fais 安装在 win 7 + VS 2015RC

我正在尝试根据这篇 MS 文章安装 Azure Service Fabric SDK - Preview 1 ,其中明确指出

Service Fabric Preview 1 的工具依赖于 Visual Studio 2015 RC,您可以在此处找到。

我已经安装了 VS 2015 RC PRO。我也有 VS 2012 U4。Azure SDK 2.56 也是。

当我尝试下载并安装它时,惊喜就来了。这是错误消息的屏幕截图- 需要 Windows Server 2012。

这是日志 1。 这是日志 2。

我只是可以弄清楚出了什么问题以及我应该如何为服务结构开发?我需要安装 WS 2012 和 VS 2015 吗?

0 投票
3 回答
12386 浏览

azure - 了解何时使用有状态服务以及何时依赖 Azure Service Fabric 中的外部持久性

我晚上都在评估 Azure Service Fabric 作为我们当前 WebApps/CloudServices 堆栈的替代品,并且有点不确定如何决定何时具有状态的服务/参与者应该是有状态的参与者,以及何时应该是无状态的参与者外部持久化状态(Azure SQL、Azure 存储和 DocumentDB)。我知道这是一个相当新的产品(至少对公众而言),因此可能还没有很多关于此的最佳实践,但我已经阅读了 Microsoft 提供的大部分文档,但没有找到明确的回答这个。

我正在接近的当前问题域是我们的事件存储;我们的部分应用程序基于事件溯源和 CQRS,我正在评估如何将此事件存储转移到 Service Fabric 平台。事件存储将包含大量时间序列数据,并且由于它是我们保存在那里的数据的唯一真实来源,因此它必须是一致的、复制的并存储到某种形式的持久存储中。

我考虑过的一种方法是使用有状态的“EventStream”演员;使用事件源的聚合的每个实例都将其事件存储在一个隔离的流中。这意味着有状态的参与者可以跟踪它自己的流的所有事件,并且我已经满足了我对数据存储方式(事务性、复制性和持久性)的要求。但是,某些流可能会变得非常大(数十万,如果不是数百万,事件),这就是我开始不确定的地方。我想,当这些大型数据模型需要序列化到磁盘或从磁盘反序列化时,拥有大量状态的参与者会对系统的性能产生影响。

另一种选择是让这些参与者保持无状态,让他们从 Azure SQL 等外部存储中读取数据 - 或者只使用无状态服务而不是参与者。

基本上,演员/服务的状态量何时“过多”,您应该开始考虑其他处理状态的方式?

另外,Service Fabric Actors 设计模式中的这一部分:一些反模式文档让我有点困惑:

将 Azure Service Fabric Actors 视为事务系统。Azure Service Fabric Actors 不是提供 ACID 的基于两阶段提交的系统。如果我们不实现可选的持久性,并且actor正在运行的机器死亡,它的当前状态将随之消失。演员将很快出现在另一个节点上,但除非我们实现了支持持久性,否则状态将消失。但是,在利用重试、重复过滤和/或幂等设计之间,您可以实现高水平的可靠性和一致性。

“如果我们不实现可选的持久性”在这里表示什么?我的印象是,只要您修改状态的事务成功,您的数据就会持久存储并复制到至少一部分副本中。这一段让我想知道是否存在我的演员/服务中的状态会丢失的情况,如果这是我需要自己处理的事情。我从文档其他部分的有状态模型中得到的印象似乎抵消了这种说法。

0 投票
2 回答
4564 浏览

azure - Azure Service Fabric 中的有状态服务和外部持久性之间的转换

Azure Service Fabric 似乎专注于所有数据都可以放入 RAM 并且持久性用作后备存储的方案。Reliable Services 旨在将信息存储在 Reliable Collections 中,该集合使用日志检查点系统,将记录的信息写入 RAM。同时,对于 Reliable Actors,默认的 Actor 状态提供者是“Service Fabric 平台提供的分布式 Key-Value 存储”。这似乎表明同样的限制也适用。

但是,在某些情况下,人们可能希望将 Service Fabric 用于“热数据”,但将“冷数据”写入某种形式的永久存储。处理这种过渡的最佳做法是什么?

在奥尔良,这似乎是使用 Azure 表等持久性存储自动处理的。但似乎 Service Fabric 和 Reliable Collections 的主要设计目的是避免需要外部服务,从而增强数据局部性。当前的文档预计将数据移动到某个永久存储以进行灾难恢复和分析的可能性,但它没有讨论在持久性支持的内存中参与者和更永久的存储形式之间来回移动数据的可能性.

一个可能的答案是 Service Fabric 已经这样做了。也许 Reliable Dictionary 有一些内置机制,用于在持久支持的内存存储和永久存储之间切换。

或者,也许答案是必须自己管理。一种方法可能是让 Actor 跟踪它的“热”程度并根据需要切换其持久性存储。但这牺牲了 Actor 模型的好处之一,即 Actor 的自动分配和释放。类似地,我们可能会定期从 Reliable Dictionary 中删除项目并将其添加到其他一些持久性存储中,然后再将它们添加回来。不过,这同样需要了解何时进行过渡是有意义的。

几个例子可能有助于明确这一点:

(1) 假设我们正在实现一个有许多不同“房间”的多人游戏。我们不需要同时在内存中的所有房间,但我们需要将它们移动到内存中,并在玩家加入它们时使用本地持久性作为备份。

(2) 假设我们正在实现一个仅附加 B-Tree 作为数据库的一部分。诱惑是让每个 B-Tree 节点成为有状态的参与者。我们希望热 b-trees 保留在内存中,但当然整个索引不能在内存中。似乎这是一个已经为 DocumentDB 之类的东西实现的核心场景,但是从文档中我不清楚如何做到这一点。

我发现的一个相关问题是here。但这个问题集中在何时使用 Azure Service Fabric 与外部服务。我的问题是是否需要在它们之间进行转换,或者 Azure Service Fabric 是否已经具备此处所需的所有功能。

0 投票
2 回答
1297 浏览

azure - Azure Service Fabric 部署从 VS 2015 RC 失败

从 Visual Studio 2015 部署 Actor 服务时出现以下错误,方法是右键单击应用程序项目并选择“部署”或按 F5:

Test-ServiceFabricApplicationPackage:术语“Test-ServiceFabricApplicationPackage”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

我正在运行 Windows Server 2012 R2。

我试过运行 Import-Module "C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ServiceFabric\ServiceFabric.psd1",但总是得到同样的错误。

如果我使用 PS 运行相同的脚本 VS 运行,则部署工作。

任何帮助将不胜感激。

谢谢,鲁迪

0 投票
1 回答
971 浏览

azure-service-fabric - 如何在开发集群上运行 OWIN 托管服务的多个实例?

我浏览了 OWIN 托管教程并开始运行,但是当我将 InstanceCount 更改为 -1 时,似乎该服务的每个实例在调用 WebApp.Start 时都试图在 OpenAync 方法中侦听端口 80 .

我假设 Service Fabric 会在启动服务以避免端口冲突时动态管理端口,但似乎并没有发生这种情况。