问题标签 [orleans]

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 回答
209 浏览

sql-server - Orleans - 如何通过租户使用 AdoNetStorageProvider 实现存储分片

我试图找到我们如何使用内置的 AdoNetStorageProvider 按租户实现存储分片。我们正在为本地 SQL Server 进行规划。

例如:

  • 属于租户 1 的谷物应该保留到分片 A
  • 属于租户 2 的谷物应保留到分片 B
  • 属于租户 3 的谷物应该坚持到分片 A

我们的分片功能将指示使用哪个分片。为此,分片功能根据粒度扩展键从数据库中获取粒度分片。(所以不应该全部都在配置文件中,因为分片的数量很少改变,但经常添加新租户)。如果这可以通过一些内置框架来实现,那就更好了。

根据https://dotnet.github.io/orleans/Documentation/Core-Features/Grain-Persistence.html?q=sharded#shardedstorageprovider shardedstorageprovider 将根据散列函数在分片中平均分配(分片)数据。这没有达到这个目的。碎片可能(或可能不是)地理定位。

github 中的分片示例是指 Azure 上的 Elastic SQL Client,据我了解,它不适用于 SQL Server。

我知道我们可以编写自己的存储提供程序。但只要有可能,我们就会尽量保持核心。

0 投票
1 回答
614 浏览

c# - 从同一应用服务中的应用程序连接到 Azure Webjob

我一直在我的应用程序中使用 Microsoft Orleans 框架,现在正尝试将其部署到 Azure。如果您不熟悉,Orleans 是一个 Virtual Actor 框架,它公开了称为 Silos 的服务器,其中代码被实例化,保存在内存中,直到它空闲一段时间,然后被卸载。然后,我的 WebApi 应用程序充当客户端并将连接到奥尔良孤岛。

我已经在 Azure 应用服务中部署了 WebApi 应用程序,并且在同一个应用服务中创建了一个运行 Silo 的连续 Web 作业。但是,当 WebApi 客户端尝试连接到 Silo 时,我在日志中看到“无法连接”错误(通过 TCP 尝试)。

这让我觉得也许我需要将虚拟网络附加到应用程序服务,但这并没有解决问题(相同的日志消息),而且我没有看到任何表明我还需要将 webjobs 添加到虚拟网络。

我应该能够通过网络将这两个应用程序连接在一起吗?

0 投票
2 回答
434 浏览

c# - MSR Orleans - 如何创建具有并行读取的读写器粒度

我需要一个读写器粒度来保存一些值,以便系统的其他部分可以频繁地并行引用它们。

我所追求的是存储一些系统范围内的配置值,这些配置值经常被访问,并且可能会发生变化,但很少见(最多一个月一次左右)。系统应该可以重新配置而无需停机。我目前正在考虑的是将数据存储在某个数据库中。然后会在silo启动时读取,外部变化后会有专门的回调再次读取数据。我不想每次需要时都从数据库中读取数据,因为:

  • 它会在筒仓内产生不必要的处理开销,因为必须处理和过滤掉一些数据。
  • 它会增加数据库的负载,我不能保证它在处理高负载方面会像孤岛环境一样好。
  • 数据在更新之前由 silo 环境验证。直接从数据库中读取意味着在操作员更新和修复新数据时将没有中间层来保存最后一个已知的有效数据。

我可以轻松地创建一个读写器锁定的内存数据存储,但是 Orleans 的单线程执行策略不允许并行访问保存数据的粒度。我可以想到以下方法来绕过这个:

  • 在多个grain中拥有多个数据副本。这显然不是最优的。
  • 使用静态字段来存储数据,让grain成为一个无状态的worker。这意味着每个筒仓都有自己的数据副本(这也有助于减少网络负载),但没有办法要求每个筒仓更新其数据副本(至少我知道)。

建议?

0 投票
1 回答
489 浏览

orleans - 如果 Grain 订阅了 Orleans Stream,它永远不会被停用吗?

如果一个 Grain 订阅了一个 Orleans Stream,这是否意味着这个 Grain 永远不会被停用?或者它会被停用,并在消息发布到它订阅的 Stream 时再次激活?

0 投票
1 回答
145 浏览

.net - ASP.NET 以外的奥尔良前端

据我所知,奥尔良唯一可能的前端是 ASP.NET。有没有办法没有.net 前端?

0 投票
1 回答
1410 浏览

c# - OneClick 发布“应用程序验证未成功”

在发布我的 Orleans silo 项目时,我不断收到此错误(当我尝试安装已发布的文件时),我尝试了以下操作:

  • 将属性设置为“创建没有清单的应用程序”
  • 禁用“启用 ClickOnce 安全设置”
  • 删除对“OrleansCounterControl.exe”的引用,然后它给出了相同的错误,但改为使用“Orleans.dll”。
  • 我已经重新启动了项目,重新安装了依赖项,重新启动了计算机,并重建了项目。

我发现很多项目在引用他们的其他项目时都存在错误,但我很难找到任何与 NuGet Packages 相关的问题。

这是我尝试在 VS 中发布的第一个应用程序,所以它可能是一件我不知道的简单事情。

在调试模式下,它可以编译并且一切正常,没有错误。

当我尝试在下面安装我发布的程序时,我已经显示了我收到的错误消息。

0 投票
1 回答
141 浏览

orleans - 如何在没有参考grain接口的情况下调用orleans grain方法?

比如java web前端可以根据Grain的接口名和方法参数调用Grain方法而不引用Grain接口?

0 投票
1 回答
522 浏览

.net-core - Microsoft Orleans 中的 ServiceBus,OrleansPrepareFailedException 异常

我正在将 Microsoft Orleans 用于 .net Core,并且我正在尝试接收 ServiceBus 消息并尽可能快地处理它们。

将参数 MaxConcurrentCalls 设置为 2 一切正常。但是使用 set 10 或 30 它会引发异常:

OrleansPrepareFailedException,事务 50038 因准备阶段未成功而中止

在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 MichalBialecki.com.OrleansCore.AccountTransfer.Client.Program.<>c__DisplayClass4_0.<b__0>d.MoveNext( )

代码如下所示:

我的场景很简单。它处理帐户转移消息,并在更新帐户(Grain)余额后,将消息发送到不同的 ServiceBus 主题。目前在我的本地机器上,它每分钟可以处理大约 1500 条消息,但感觉有点慢。

0 投票
1 回答
151 浏览

orleans - 在奥尔良,如何按类型获取奥尔良参考?

例如,如何通过类型而不是泛型类型来获取grain:

0 投票
0 回答
437 浏览

cqrs - 如何使用 orleans 构建事件溯源读取模型?

我计划将奥尔良与事件溯源一起使用。我要创建日志谷物。如何使用许多不同类型和实例的日志颗粒发出的事件来构建读取模型?

有哪些不同的基于拉\推的选项?

如果没有,是不是因为交叉聚合读取模型是个坏主意?