将应用程序逻辑拆分为微服务的最佳方法是什么

时间:2020-01-08 19:01:27

标签: architecture microservices

我们考虑将整体应用程序转移到微服务,由于这是我们在微服务方面的首次经验,因此我们正处于研究阶段。

当前,我们认为有3种微服务:

  1. Api网关-使用rpc与域服务通信
  2. 域服务-封装逻辑的不同部分,通过api与网关通信以及异步事件以相互通信的服务。每个人都有自己的数据库
  3. 基础设施服务-例如电子邮件,短信等。

到目前为止,我对如何正确拆分域逻辑还有一些问题,一些最佳实践和有用的资源值得赞赏。另外,我还将提供一些逻辑示例以及几种不同的分割方式。

应用程序逻辑:我们有两个用于最终用户前端管理api的网关api。

应用程序是一种社交网络,其中每个用户都有自己的个人资料,可以通过添加到朋友中的不同条件(地理位置,兴趣爱好,总相容性百分比)搜索其他人,实时聊天,重新计算与他人的相容性。该应用程序的主要功能是计算人与人之间能力的算法,它考虑到了出生日期和出生地点以及在用户注册和更改用户帐户类型时收集的一些其他条件。根据用户帐户类型(可以由管理员购买或设置),他具有不同级别的兼容性计算。

因此,我们有:用户,个人资料,用户搜索,地理位置,朋友,付款,帐户类型和权限(ACL类型),功能计算,聊天。

我不确定是否应该将上段中列出的每一项视为独立的微服务,或者例如,我可以将用户,个人资料,帐户类型/权限和朋友分组到一个微服务中,而用户搜索并在地理上归类到另一个微服务中。

1 个答案:

答案 0 :(得分:2)

开发微服务架构时的一般目标:

  • 您应该能够独立交付和部署服务 彼此的。
  • 开发团队应该能够独立于其他服务实施服务。

现在肯定没有实现这一目标的单一“正确”方法,因此,这里有一些我发现有用的资源和最佳实践:

有了您问题中的信息,而又不了解更多细节,我认为您可以将一些实体合理地组合到一个微服务中,但这确实是领域专家应该做出的决定。