当前位置:  开发笔记 > 编程语言 > 正文

在Azure Service Fabric中查找有状态服务的分区键

如何解决《在AzureServiceFabric中查找有状态服务的分区键》经验,为你挑选了1个好方法。

我已按照此处的步骤在Azure中的资源组上创建反向代理.https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reverseproxy

我相信反向代理正在工作,因为我曾经收到404错误,现在我收到400错误请求.

错误代码为FABRIC_E_INVALID_PARTITION_KEY

这是有道理的,因为在文档中,它说对于不使用单例分区的服务,您必须指定分区键和分区类型,如下所示:

http://mycluster.eastus.cloudapp.azure.com:19008/MyApp/MyService?PartitionKey=3&PartitionKind=Int64Range

我的问题是,我如何获得该分区键?文档明确声明它不是资源管理器中生成的GUID,因此我无法使用它.我正在从结构外部的外部应用程序联系此有状态服务.



1> yoape..:

PartitionId您的浏览器服务看到的是,您的服务请求在结束了分区的唯一的ID.的PartitionKey是不一样的PartitionId,这是相当的进入进分区散列以及基于所述密钥以该密钥的请求结束了对由下式计算的分区.

ApplicationManifest.xmlApplication项目中,新创建的服务的分区键如下所示:


  
    
  

这里UniformInt64Partition表示它Int64Range是使用的.在LowKeyHighKey给接受PartitionKeys的范围.该PartitionCount给运行此服务的分区数目.在均匀范围内,分区从低键到高键均匀映射.您应该将范围更改为对您的特定服务更有意义的范围.例如:

  
      ...
      
      ...
  
  ...

  
    
  

这将为我们提供2个映射的分区:

0 - 5:分区0

6 - 11:分区1

分区范围大于分区数是不可或缺的,允许我们稍后扩展而不必更改分区键.如果我们在上面的示例中将分区数量(向外扩展)加倍到4个分区,则映射将变为:

0 - 2:分区0

3 - 5:分区1

6 - 8:分区2

9 - 11:分区3

但是,我们使用的分区键不会更改,这意味着服务的客户端不会受到影响.命名方案也有类似的推理.另一种可能的方案是Singleton,其中一种通常用于无状态服务.

有关服务分区的Microsoft文档可以在这里找到:https: //docs.microsoft.com/en-us/azure/service-fabric/service-fabric-concepts-partitioning

回到你的问题,你的分区键可以是你在清单中指定的LowKey和HighKey范围内的任何整数(如果你使用的话UniformInt64Partition).您收到FABRIC_E_INVALID_PARTITION_KEY错误表明提供的密钥不是有效的整数.如果它超出了可接受的范围,则可能会FABRIC_E_KEY_NOT_FOUND出现错误.


有没有办法在运行时获取此信息? - 例如,我们可以进行的调用将返回给我们分区元数据,然后我们可以检查以确定分区0的范围是0 - 2,分区1的范围是3 - 5,等等.? - 我不愿意硬编码这样的东西.
是的,您可以使用[FabricClient.QueryManager](https://docs.microsoft.com/en-us/dotnet/api/system.fabric.fabricclient.querymanager?view=servicefabric-5.5.216#System_Fabric_FabricClient_QueryManager)查询特定服务的分区.根据分区方案(int64,named或singleton),您将获得ServicePartitionInformation的结果,该结果将为您提供每个分区的span(低键 - 高键)或值.此[gist](https://gist.github.com/FredrikGoransson/846935fcfef0c1d19980402875c1b511)显示了如何从SF服务中检索它.
推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有