如何使用微服务架构构建博客应用程序?

时间:2019-10-10 13:19:09

标签: java mysql spring-boot docker kubernetes

我已经有一个博客应用程序,它作为整体在Spring-Boot上构建。 有2个实体。

  • 用户
  • 发布

并且映射是一对多

单个用户可以创建多个博客文章。

如何重新创建与单独的微服务应用程序相同的功能。

到目前为止,通过互联网进行研究,我看到人们所说的是按服务等创建数据库。

假设我创建2个服务说

  • UserService(具有与之关联的单独的DB和CRUD操作)
  • PostService(具有与之关联的单独的DB和CRUD操作)

我如何在它们之间进行通信。

在整体应用中,POST实体已经创建并通过映射到User。

但这在微服务架构中如何工作?

任何人都可以帮助我如何设计这种架构吗?

1 个答案:

答案 0 :(得分:3)

首先列出您要在微服务中中断它的原因。为了使其更可扩展(例如,在以下情况下)。

  1. 帖子评论变慢,在此期间注册 新用户不受影响。
  2. 很少有用户上传/下载文件,而您希望仅查看评论和发布评论的普通用户不受影响,而上传/下载文件可能仍然保留 慢。

以上问题的答案以及对其他NFR的分析,优先处理将有助于确定如何以及如何打破。

另外, 邮政服务仅需要验证用户是否为有效的登录用户。(正确吗?) 用户服务实际上根本不需要与邮政服务进行通信。 此外,您可能还希望解耦其他次要功能。进而彼此交谈,可以通过其他方式(例如证书等)进行身份验证,因为它们将是内部的并更新一些统计信息(用户排名),汇总数据等。

该系统可能还具有许多较小的隐藏功能,这些功能可能会或完全不必使用 Post Service 进行任何操作,这些功能可以根据不同的微服务(例如视频/文件/图片/任何二进制内容的上传/下载),并根据所需的计算能力,点击频率和业务优先级对其进行优先级排序。

将其分解为微服务后,您需要运行一些压力测试(基于当前负载),以了解哪些服务需要复制,哪些不需要复制,并且需要自动负载平衡。在断裂之前先编写应力载荷还可以帮助您了解哪些特征需要首先从整体中移出。