问题标签 [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.
orleans - 初始化奥尔良客户端时出现奥尔良错误
当我尝试部署到天蓝色时,我遇到了错误。我正在做基本的 hello world 应用程序。有人可以提供一些见解。我附上了下面的日志。
我正在使用 :: 版本 1.1.0-beta2
孤岛根据日志文件正确启动,但无法在 azure 中初始化客户端。我在客户端中使用以下配置文件。
PS:: 启用融合日志后我想通了。我可以看到 1 个 dll 未正确加载。问题已解决。
orleans - 奥尔良集群通信
我试图弄清楚如果在同一集群中托管 2 个不同的 Orleans grain 与在同一虚拟网络中的不同集群中部署 2 个不同的 grain 会有多少性能命中。有人可以对此提供一些指导,以及在这种情况下 2 粒谷物如何相互交谈。
c# - 运行基本的奥尔良应用程序时出现异常
我参与了一个物联网项目并将奥尔良视为一个平台。我试着在这里做基础教程:http: //dotnet.github.io/orleans/Step-by-step-Tutorials/Minimal-Orleans-Application
它似乎正在工作,但我在控制台中遇到以下异常,这将是很好的摆脱:
无法加载文件或程序集“OrleansCodeGenerator”或其依赖项之一。该系统找不到指定的文件。异常 = System.IO.FileNotFoundException:无法加载文件或程序集“OrleansCodeGenerator”或其依赖项之一。该系统找不到指定的文件。
无法加载文件或程序集“Microsoft.Extensions.DependencyInjection.Abstractions,Version=1.0.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”或其依赖项之一。该系统找不到指定的文件。
我正在使用奥尔良版本 1.1.0
c# - Orleans 为 Liveness 指定 SqlServer
我正在尝试为使用 SQL Server 的 Orleans 设置一个测试环境。这是我的服务器配置文件:
当我使用此配置时,运行时出现此错误:
MembershipTableGrain 无法在没有 Seed 节点的情况下运行 - 请检查您的 silo 配置文件并确保它指定了 SeedNode 元素。或者,您可能希望将 AzureTable 用于 LivenessType。参数名称:grain = MembershipTableGrain Exception = System.ArgumentException:MembershipTableGrain 不能在没有种子节点的情况下运行 - 请检查您的筒仓配置文件并确保它指定了 SeedNode 元素。或者,您可能希望将 AzureTable 用于 LivenessType。
更进一步,日志说 Liveness 是 MembershipTableGrain(这是默认设置,需要 SeeNode)。我在这里想念什么?
azure - 部署到天蓝色时如何对奥尔良进行故障排除
我正在为奥尔良运行 Azure Web 示例。它在本地开发服务器上运行得很好。但是,当我部署到 Azure 时,我无法从孤岛得到响应。
部署成功。网络角色启动,但是当我单击“向奥尔良询问详细信息”时,我得到“正在与奥尔良交谈......”但大约 30 秒后消失了。我留下了嘲讽的“希望我能得到回应……”的信息。
根本没有配置。我从在线教程中获取了示例项目和步骤。按照他们的指示发布,然后什么也没有。
从调试 Web 角色来看,AzureClient 似乎遇到了一些未知错误:
错误:0:Client.Initialize failed with exc -- 发生了一个或多个错误。将重试
信息:0:暂停 00:00:05 等待部署 = 70c88c32f1114e168826d757f982a210 的孤岛和网关注册
我注意到 web 角色和 worker 角色位于不同的子网上。将深入研究是否有防火墙阻止服务器之间的通信。
关于什么可能被破坏的任何建议?或如何排除故障?
c# - 以grain状态存储对grain实例的对象引用
我有一个IContainerGrain
包含Node
对象列表的谷物。类型的对象Node
需要能够通过这个grain相互通信:
现在我想保持IContainerGrain
包含节点列表的状态。谷物状态的序列化触发所有包含的序列化Nodes
,然后触发IContainerGrain
. 这不受支持,我得到一个例外。
我的方法
我的非工作方法是将 Node.Container 标记为NonSerializable
并在 Grain 中实现以下内容:
但是,这并不总是有效,我不断获得 NullReferenceExceptions Node.TriggerExecution()
,因为 Container 属性为空。
问题
能够从这个grain中的一个对象存储一个对grain的对象引用的最佳方法是什么?我可以很容易地使用谷物参考,但这会使
Container.GetNode(...)
操作变慢。我知道如果我使用 1:1 的 grain 映射到Node
,则不会存在此问题,但这对我的应用程序来说开销太大。Orleans 序列化是这样存储引用还是总是执行深拷贝?在序列化和反序列化之后保留完整的引用会很棒。
c# - 奥尔良单元测试:未加载类型 <> 名称默认值的提供程序
我有以下问题。我正在尝试为 Orleans grain 实施单元测试,但在启动时找不到 dataprovider Default。异常发生在构造函数调用上。这是代码:单元测试类
这是我的配置文件 OrleansConfiguration.xml
我遇到的错误是这样的:
Exc 级别 0:Orleans.Runtime.OrleansException:NBOOC.Grains.StorageProviders.CustomSqlStorageProvider,NBOOC.Grains 名称类型的提供程序默认未加载。请检查您是否已将定义提供程序类的程序集部署到执行文件夹。
在 Orleans.Providers.ProviderLoader`1.ValidateProviders()
在 Orleans.Providers.ProviderLoader
1.LoadProviders(IDictionary
2 配置,IProviderManager providerManager)在 Orleans.Runtime.Storage.StorageProviderManager.LoadStorageProviders(IDictionary`2 配置)
在 Orleans.Runtime.Scheduler.SchedulerExtensions.<>c__DisplayClassa.<b__8>d__c.MoveNext()
如您所见,有一个名称为 Default 且具有完全指定类型的提供程序。在那里指定的类是可访问的,因为所有引用都在那里 - 我已经明确检查过,所有 DLL-s 都放在与单元测试 DLL 相同的文件夹中。我还检查了 Orleans DLL 的所有版本——它们都是相同的 1.0.10.0,所以这不是版本问题。有没有人遇到过这样的事情?任何想法如何解决它?
PS顺便说一句,如果你觉得它有帮助的话。我已经下载了奥尔良的源代码并追踪了发生异常的地方——有一个 ProviderLoader 类,它有一个提供者 Dictionary 的字典,但由于某种原因它是空的。
orleans - 奥尔良:“在独立筒仓中运行”示例未运行
我刚刚开始熟悉奥尔良的一个项目。我对此有一些疑问。我目前正在使用分步教程。不幸的是,当我尝试在我的笔记本电脑中运行带有“在独立筒仓中运行”的示例时,Grains 集合失败并出现很多异常。我不知道如何解决这个问题?
该文档提到“OrleansHost.exe 是一个现成的主机可执行文件,用于在 Windows Server 上运行 Orleans 代码(Azure 有不同的主机)”。我不确定这意味着什么?这是它在运行 Windows 10 的笔记本电脑上不起作用的原因吗?
orleans - How to handle split-brain?
I have read in Orleans FAQ when split-brain could happen but I don't understand what bad can happen and how to handle it properly.
FAQ says something vague like:
You just need to consider the rare possibility of having two instances of an actor while writing your application.
But how actually should I consider this and what can happen if I won't?
Orleans Paper (http://research.microsoft.com/pubs/210931/Orleans-MSR-TR-2014-41.pdf) says this:
application can rely on external persistent storage to provide stronger data consistency
But I don't understand what this means.
Suppose split brain happened. Now I have two instances of one grain. When I'll send a few messages they could be received by these two (or there can be even more?) different instances. Suppose each instance prior to receiving these messages had same state. Now, after processing these messages they have different states.
How they should persist their states? There could be a conflict.
When another instances will be destroyed and only one will remain what will happen to the states of destroyed instances? It'll be like messages processed by them has never been processed? Then client state and server state could be desyncronized IIUC.
I see this (split-brain) as a big problem and I don't understand why there is so little attention to it.
azure - Microsoft Orleans - 如何在不同的孤岛中激活 X 提醒颗粒?
奥尔良有没有办法确保相同类型的 X 提醒颗粒托管在不同的筒仓上?
动机:我想在运行后台处理的 Azure 云服务中使用 Orleans,并且应该对故障和由于就地升级导致的孤岛停机具有高度弹性。在我的场景中,需要使用计时器始终处于活动状态的谷物,如果它的托管筒仓出现故障,那么它应该在几秒钟内在另一个筒仓上再次激活。在 Azure 云服务升级期间,实例分为 5 组,一次升级一组,这意味着在升级期间,我总是有 20% 的实例关闭,这使得始终保持活跃的粒度变得具有挑战性。我咨询了 Sergey Bykov,我们提出了几个想法,其中一个是引入“保持活力”颗粒,其目的是 ping“始终处于活动状态”的颗粒以确保其处于活动状态。