问题标签 [service-fabric-stateless]

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 投票
2 回答
3276 浏览

c# - 我们如何对服务结构(无状态服务)进行集成测试?

我想在服务结构中对无状态服务进行集成。请帮助我。我已经创建了像 c# web api 这样的无状态服务。

0 投票
1 回答
297 浏览

c# - Azure 服务结构,有状态服务是否只能有一个主服务器?

我想创建一个使用 Azure Service Fabric 和 ASP.NET Core 作为前端托管的服务。

如果我正确阅读了文档,那么这里似乎只有两个真正的选项来处理我的会话数据......

1 - 创建一个无状态服务,该服务使用 Azure SQL 等外部数据库来存储会话信息。然后我可以通过简单地增加实例数量来扩展,并让更多的服务跨节点运行。只要 Azure SQL 数据库能够应对负载,那么一切都很好。这很有吸引力,因为它易于理解和实施。但它有外部数据库的额外成本。

2 - 创建一个使用可靠集合(字典)来存储会话信息的有状态服务。我不想将我的会话拆分到多个分区上,因为这会带来额外的复杂性。但是对于单个分区,我只能拥有一个主服务器实例。这降低了拥有外部数据库的成本。但不能扩展到两个或更多服务器实例。

我对文档的阅读意味着您只能将一个主服务器用于有状态的服务分区。我说对了吗?如果我可以有更多的初选,那么有 100 个初选会很好吗?

0 投票
0 回答
84 浏览

azure-service-fabric - 如何处理 Servce Fabric 服务解析,因为它涉及区分大小写的服务名称

当服务向命名服务注册自己时,似乎用作键的服务名称 (/) 在内部字典中是区分大小写的。

此设计决策/错误的副作用是解决服务的调用者必须提供准确的区分大小写的 url (fabfic://.

更大的影响是使用反向代理,因为如果最终调用者(集群外的调用者)没有将正确的大小写放在以下反向代理语义路径中

那么服务没有得到解决。所以从某种意义上说,现在取决于调用者是否得到解决,我们现在说我们的产品 url 区分大小写。

问题

a) 这是 SF 团队深思熟虑的决定还是一个错误?

b) 是否有任何指导方针。我可以用自定义代码替换反向代理,而不是规范我们为集群同意的大小写模式。

谢谢

0 投票
0 回答
942 浏览

c# - 通过远程处理调用无状态服务时出现 Service Fabric FabricConnectionDeniedException

我有一个使用 Windows 身份验证保护的独立本地 Service Fabric 群集。

在这个应用程序中,我有一个 ASP.NET Core WebApi 无状态服务,它尝试通过远程处理与另一个无状态服务进行通信。不幸的是,当 WebApi 服务尝试 RPC 到无状态服务时,我收到以下错误:

此外,我可以确认

  • 将相同的应用程序部署到“开发集群”(即我的本地计算机或另一台在一台计算机上运行所有节点的远程 Service Fabric 集群)时,我没有收到错误 - 因此我的 AD 帐户可能存在问题'已经用来设置我的多机集群(我正在使用机器组帐户)。

  • 创建客户端代理时,我确实设置了安全凭证以使用 Windows 身份验证 - 即

    /li>
  • 在上面的代码中,如果我改为使用: SecurityCredentials = new NoneSecurityCredentials()然后我得到一个类似FabricConnectionDeniedException但消息略有不同的说Client is not authorised to connect. 这是有道理的 - 但同样,这可能表明我的传输设置存在问题......

0 投票
2 回答
2051 浏览

c# - Azure Service Fabric 完成后如何重新运行 RunAsync 方法?

我有一个在 RunAsync 方法中运行后台进程的无状态服务。

这个后台进程必须永远运行。它的作用无关紧要,但它实际上每 60 秒轮询一次数据库。

与辅助角色或 WebJob 不同,Service Fabric 服务中的 RunAsync 方法可以运行到完成,并且服务实例将保持运行。

当 Service Fabric 向传递给 RunAsync 的取消令牌发出信号时,已观察到会发生这种情况。

一旦 Service Fabric 决定从 RunAsync 方法正常返回,如何再次重新运行轮询例程?

以及如何确定 Service Fabric 首先发出取消令牌的原因?

我当前的解决方法是抛出异常,以便强制重新启动服务。

0 投票
0 回答
744 浏览

asp.net-core-webapi - 在 Service Fabric 中将 .Net Core Web API 托管为访客服务

嗨,任何人都可以帮忙,我正在尝试让 Service Fabric 托管一个 .Net Core Web API Restful 服务作为来宾可执行文件。

我可能错误地猜测,一旦我完成了完整的发布,我应该能够运行 exe,但是当我这样做时它会失败。

我做了以下...

  1. 确保主 Web API 程序集和所有引用的 .NET Core 程序集设置为 x64 目标
  2. 将输出类型设置为 exe 并具有如下所示的 program.cs...

    /li>
  3. 完成命令行的东西......

    /li>
  4. 在生成的 win10-x64 发布文件夹中的 Project.deps.json 中引用了“Microsoft.AspNetCore.Server.Kestrel”:“1.0.0”。

但是,当我直接执行该操作时,控制台窗口会报告 StartUp Constructor 的问题,即执行 builder.build 时。

我感觉接近让这些东西正常工作,并添加了一个 Service Fabric 来宾主机项目来托管 exe,但不用说节点失败并出现如下所示的错误......

CodePackage 激活过程中出错。服务主机以退出代码终止:2147516556

我究竟做错了什么?

0 投票
1 回答
525 浏览

azure - 订阅 Service Fabric 群集级别事件

我正在尝试创建一个服务,该服务将为在我的服务结构集群中运行的应用程序更新服务端点的外部列表。(基本上我需要在我的本地 F5 负载均衡器中复制 Azure 负载均衡器。)

在上个月的 Service Fabric 问答中,团队向我指出了RegisterServiceNotificationFilterAsync

我使用这种方法制作了一个无状态服务,并将其部署到我的开发集群中。然后我通过运行 ASP.NET Core Stateless 服务模板创建了一个新服务。

我预计当我部署第二个服务时,断点会在我的第一个服务中命中,表明已经添加了一个服务。但是没有命中断点。

我在互联网上找到的这种事情的例子很少,所以我在这里问别人已经做到了这一点,并且可以告诉我哪里出错了。

这是我的服务的代码,它试图捕捉应用程序的变化:

如果您对如何实现这一点有任何提示,我很乐意看到它们。

0 投票
1 回答
281 浏览

azure-service-fabric - 在 Service Fabric 中为 Reliable Actor 定义端点(本地设置)

我正在本地设置一个服务结构集群并定义了一个可靠的参与者。我已将应用程序发布到集群。

我在公开端点以便客户端可以使用时遇到困难。我尝试在 ServiceManifest 中添加端点并在本地部署集群。但是在添加端点的那一刻,集群无法部署。

注意:我正在使用 Service Fabric 的 Actor Service 模板并添加了 Reliable Actor。

谢谢!

0 投票
1 回答
29 浏览

c# - Azure Fabrics 身份验证

我在 Azure Fabrics 上拥有无状态的 Web API 服务 + 在 React 上拥有独立的 UI。

  • UI 调用服务
  • 服务通过 http 互相调用

我想通过电子邮件或/和社交网络(facebook)对用户进行身份验证

我有哪些选择?例子?想法?

谢谢

0 投票
1 回答
80 浏览

azure - 谁应该拥有 Service Fabric 有状态服务中的服务解析逻辑?

我正在使用 Service Fabric 有状态服务来存储有关系统中用户的状态。我的分区策略是使用标准化的国际字符串格式电话号码来寻址命名服务实例,并使用电话号码的哈希来解析该服务的分区。例如:fabric:/myapp/users/1/718(国际电话号码是 +1718xxxxxxx)这使我可以根据他们的国家(以及美国/加拿大市场的区号)对服务进行地理定位。

我的问题是理论上的,但在本质上也是实用的。 谁拥有服务解析的逻辑? 一个简单的方法是只要求任何依赖此服务的人都知道它是如何分区的,但这对我来说感觉像是一个泄漏的抽象。此外,我想为用户分配一个与电话号码概念分离的 ID。

  1. 我最初的方法是使 Id 成为一个字节 [],其中包括用户的服务名称、分区 id 和本地 id。我放弃了这个想法,因为 ID 的大小非常大,并且会随着时间的推移而增加。(这是有问题的,因为 Reliable Dictionary 中的所有键都需要放入内存中,我不想在 id 上杀死大量内存)此外,它仍然带有每个使用 id 知道如何解释 id 的包袱并相应地使用它。
  2. 我的下一个想法是为使用该服务的任何人提供客户端库。这也有消费服务的二进制依赖的缺点。如果我想在未来改变策略,我必须跳过一堆箍来处理失败以正确解决实体。
  3. 我能想到的最后一个选择是在有状态服务之前有一个无状态代理来处理所有服务的解析。从设计的角度来看,这是最吸引人的,但也涉及管理、构建另一个服务,只是为了解决问题。不反对它,但它是一个额外的考虑。如果我走这条路,我应该将此服务作为一个单独的服务结构应用程序,还是建议将所有内容都保留为一个应用程序。

我也愿意接受以这种方式划分用户是一个坏主意的想法。但是,出于多种原因,建议使用手机。