gpt4 book ai didi

sql-server - 使用 SQL Server 作为 Orleans 存储

转载 作者:行者123 更新时间:2023-12-02 22:38:35 26 4
gpt4 key购买 nike

我正在尝试使用 SQL Server 作为奥尔良的数据存储。

我已设法使用 Azure 本地存储模拟器使我的解决方案正常运行,但无法使其与 SQL Server 的本地实例一起运行。我使用以下方法创建了数据库:

https://github.com/dotnet/orleans/blob/master/src/OrleansSQLUtils/CreateOrleansTables_SqlServer.sql

并使我的配置文件看起来像这里的:

http://dotnet.github.io/orleans/Documentation/Advanced-Concepts/Configuring-SQL-Tables.html

这是我的配置文件:

<?xml version="1.0" encoding="utf-8"?>
<OrleansConfiguration xmlns="urn:orleans">
<Globals>
<StorageProviders>
<SystemStore SystemStoreType ="SqlServer"
DeploymentId="OrleansTest"
DataConnectionString="Data Source=.\SQL2014;Initial Catalog=Orleans;Integrated Security=True;Pooling=False;Max Pool Size=200;Asynchronous Processing=True;MultipleActiveResultSets=True" AdoInvariant="System.Data.SqlClient" />
<Provider Type="Orleans.SqlUtils.StorageProvider.SqlStorageProvider" Name="SqlServer" />
<!--<Provider Type="Orleans.Storage.AzureTableStorage" Name="AzureStore" DataConnectionString="UseDevelopmentStorage=true" />-->
</StorageProviders>
<SeedNode Address="localhost" Port="11111" />
</Globals>
<Defaults>
<Networking Address="localhost" Port="11111" />
<ProxyingGateway Address="localhost" Port="30000" />
</Defaults>
</OrleansConfiguration>

我已将以下属性添加到我的颗粒中:

[StorageProvider(ProviderName = "SqlServer")]

然后我收到以下错误:无法找到状态 map 工厂类型...

请有人让我知道我需要向提供者添加什么,或者我是否做错了什么?我是否需要为 SQL 提供程序创建与 StateMapFactoryType 相关的内容?

谢谢

最佳答案

首先是<SystemStore>不是 StorageProvider。该节点用于成员资格预言机。像这样:

<OrleansConfiguration xmlns="urn:orleans">
<Globals>
<SystemStore SystemStoreType ="SqlServer"
DeploymentId="OrleansTest"
DataConnectionString="Data Source=.\SQL2014;Initial Catalog=Orleans;Integrated Security=True;Pooling=False;Max Pool Size=200;Asynchronous Processing=True;MultipleActiveResultSets=True" AdoInvariant="System.Data.SqlClient" />
</Globals>
<Defaults>
<Networking Address="" Port="11111" />
<ProxyingGateway Address="" Port="30000" />
</Defaults>
</OrleansConfiguration>

现在让我们放入您的 StorageProvider

<OrleansConfiguration xmlns="urn:orleans">
<Globals>

<StorageProviders>
<Provider Type="Orleans.SqlUtils.StorageProvider.SqlStorageProvider" Name="SqlServer" />
</StorageProviders>


<SystemStore SystemStoreType ="SqlServer"
DeploymentId="OrleansTest"
DataConnectionString="Data Source=.\SQL2014;Initial Catalog=Orleans;Integrated Security=True;Pooling=False;Max Pool Size=200;Asynchronous Processing=True;MultipleActiveResultSets=True" AdoInvariant="System.Data.SqlClient" />
</Globals>
<Defaults>
<Networking Address="" Port="11111" />
<ProxyingGateway Address="" Port="30000" />
</Defaults>
</OrleansConfiguration>

现在到有趣的部分了。设置Orleans.SqlUtils.StorageProvider.SqlStorageProvider

这个特定的存储提供程序基于 P&P 集团的 ElasticClient,它使用特殊的分片数据库(例如分片主数据库和分片数据库)

可能会建议这个较低摩擦的提供者(插入无耻的插件(如果它有效,我写了它,如果它不那么我不知道是谁做的:D)https://github.com/OrleansContrib/Orleans.StorageProviders.SimpleSQLServerStorage

好的,回到Orleans.SqlUtils.StorageProvider.SqlStorageProvider您还需要一些配置项:

  • 连接字符串
  • map 名称
  • StateMapFactoryType
<小时/>
<Provider Type="Orleans.SqlUtils.StorageProvider.SqlStorageProvider" Name="guts"  ConnectionString = "Server=.;Initial catalog=guts;Integrated Security=SSPI;" MapName="guts" StateMapFactoryType="ClassName, assemblyname" />

您需要创建实现 Orleans.SqlUtils.StorageProvider.IGrainStateMapFactory 的 StateMapFactory看 https://github.com/dotnet/orleans/blob/v1.1.3/src/OrleansSQLUtils/Storage/Provider/IGrainStateMapFactory.cs

您可以使用https://github.com/dotnet/orleans/blob/v1.1.3/src/TesterInternal/StorageTests/SQLAdapter/SampleGrainStateMapFactory.cs供引用

但是!!看起来版本 1.1.3 仍然有 Orleans.SqlUtils.StorageProvider.IGrainStateMapFactory标记为内部,因此您必须从源代码编译或从 github 获取最新版本。

关于sql-server - 使用 SQL Server 作为 Orleans 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36454272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com