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

Orleans - how to implement storage sharding by Tenant with AdoNetStorageProvider

我正在尝试了解如何使用内置的 AdoNetStorageProvider 按租户实施存储分片。 我们正在计划 SQL 本地服务器。

例如:

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

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

github 中的分片示例指的是 Azure 上的弹性 SQL 客户端,据我所知,它不适用于 SQL 服务器。

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

根据 Gitter 项目的回答, 没有内置的按租户分片的能力。

实现这个的方法是从https://github.com/dotnet/orleans/blob/master/src/OrleansProviders/Storage/ShardedStorageProvider.cs派生 并覆盖 HashFunction 方法。 感谢@SebastianStehle