具有微服务的分布式网络

时间:2016-01-16 09:23:42

标签: asp.net social-networking microservices azure-service-fabric

我读了很多关于微服务和用例的内容。 Azure Service Fabric是开发此类服务的一个很好的框架。

我在Service Fabric中找到了这个很好的使用模式:

https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-actors-pattern-distributed-networks-and-graphs/

在此示例中,有一种微服务类型将用户表示为可靠的有状态角色。每个用户都是该服务的实例。

因此,如果我有用户,我将拥有演员实例的thousends。就像在Facebook我可以很容易地更新我的饲料和朋友的饲料。例如,用户演员服务的状态将我的社交馈送和我的朋友的社交馈送与我们的社交状态的条目一起存储。这样可以非常快速地获得这些信息,并显示低延迟等等。

这非常有效,因为用户通常没有朋友。我想知道在哪里存储公共源,其中包含适用于所有用户的社交状态条目?例如。我可以迭代所有用户actor实例并获得alle状态。但这不会很快,因为你必须找到所有的actor实例,依此类推。做这样的事情有什么模式或最佳实践吗?也许作为代表可供公众使用的社会状态的另一种有状态服务类型?当用户更新他的社交状态时,他会自动更新他的朋友的提要,就像在服务结构示例中一样,他也可以更新" public"如果新的社会国家是公共的,那就喂养。现在,除了他自己的Feed和他的朋友提供的内容之外,每个用户都可以获得所有(可能已过滤的)公共社交状态

这是实现这样一个功能的好方法吗?客户端(用户)将连接到他的actor服务实例并请求整个feed。 actor服务实例将连接到公共服务实例并请求过滤的公共订阅源条目。然后,actor实例将这些条目与他自己的条目合并,并将其返回给用户以显示数据。或者客户端应该直接连接每个servcie(公共服务实例和用户actor服务实例),结果将在客户端合并。

Client --getFeed--> UserActorService --getFeed--> PublicService

       --getFeed--> PublicService
Client|
       --getFeed--> UserActorService

如果您对此类问题有任何最佳做法或权衡,请指出正确的方向。

0 个答案:

没有答案