编程语言
首页 > 编程语言> > c#-每个服务结构实例的配置

c#-每个服务结构实例的配置

作者:互联网

我正在设计一个服务结构无状态服务,该服务需要每个实例的配置数据.我最初的想法是创建命名分区,并使用PartitionInfo获取命名键,并使用共享的只读字典加载每个实例的设置.问题是,现在内部(从其他服务)访问此实例需要分区键.由于使用此方法的所有分区都将在内部提供相同的数据,因此我连接到哪个分区都没有关系(我希望它是随机的).因此,这给了我许多解决此问题的可能方法:

>使用ServiceProxy.Create随机访问分区(在上面的尝试中).

以下不涉及分区的解决方案:

>基于实例的配置. This post在提出解决方案方面没有提供太多帮助.每个实例唯一的配置部分将是最理想的解决方案.
>创建命名实例,并使用名称作为用户名(基本上将字符串附加到未分区的实例)
>按索引获取实例,然后对共享的只读字典使用索引以获取用户名.
>以某种方式使用InitializationData(请参见this post)获取用户名字符串(如果InitializationData在每个实例中可以是唯一的).

以上所有都将解决我的问题.这些方法是否可行?

编辑:我正在尝试创建的服务示例:

假设我们有一个stackoverflow问题服务(简称SOQS).就本例而言,假设可以一次将一个用户连接到stackoverflow的websocket. SOQS内部方法(发布到我的服务结构)具有一种方法:GetQuestions().每个SOQS都需要使用唯一的用户名/密码连接到stackoverflow,并且当新问题通过网络套接字推送时,它们会添加到内部问题列表中. SOQS的GetQuestions()方法(从我的服务结构内部调用)然后将给出相同的问题列表.然后,我可以通过添加更多实例(只要我有更多的用户名/密码)来实现负载平衡,然后就可以分配内部结构的负载.我可以调用ServiceProxy.Create< SOQS>()连接到随机实例以获取我的问题列表.

解决方法:

听起来好像您正在寻找具有多个角色的服务类型,而每个角色都有自己的配置.它们不会是具有唯一配置的同一服务的多个副本,而是一个服务实例(当然具有副本)作为单例,并且每个实例都是单独的参与者.

例如,您可以让用户服务(从您提到用户名字符串以来就猜测它是什么)从某种外部存储机制中读取用户名列表和实例ID的长整数,以供内部跟踪使用.然后,该服务将使用各自的配置信息为每个参与者创建一个参与者.然后,用户服务将成为与各个参与者之间进行消息传递的路由器.

标签:azure,azure-service-fabric,c
来源: https://codeday.me/bug/20191026/1932979.html