我使用Service Fabric状态服务来存储系统中用户的状态。我的分区策略是使用规范化的国际字符串格式电话号码来寻址命名的服务实例,并使用电话号码的散列来解析该服务的分区。 EX:fabric:/ myapp / users / 1/718(其中国际电话号码是+ 1718xxxxxxx)这使我能够根据他们的国家(以及区域代码在美国/加拿大市场)进行地理定位服务。
我的问题是理论上的,但也是实际的。 谁拥有服务解析的逻辑?一个简单的方法就是要求任何依赖此服务的人知道它的分区方式,但这对我来说就像是一个漏洞的抽象。此外,我想为用户分配一个与电话号码概念脱节的ID。
我也很乐意接受以这种方式划分用户的想法是一个坏主意。但是,出于多种原因,建议使用手机。
答案 0 :(得分:1)
如果可能的话,我建议您远离服务使用者的任何分区知识。这样,您可以在不改变消费者方面的任何内容的情况下更改服务内部。
这导致选项3,与内置的反向代理服务相结合。 在该额外服务中,您可以查找经过身份验证的用户并使用其位置来确定服务分区。
如果你把它变成一个新的应用程序,它可以成为多个有界上下文的入口点(/ proxy)