【问题标题】:How to build blog application using microservice architecture? [closed]如何使用微服务架构构建博客应用程序? [关闭]
【发布时间】:2020-02-07 23:00:00
【问题描述】:
我已经有一个基于 Spring-Boot 构建的博客应用程序。
有 2 个实体。
而且映射是一对多。
一个用户可以创建多个博客文章。
如何重新创建与单独的微服务应用程序相同的功能。
到目前为止,通过互联网进行研究,我看到人们说的是为每个服务创建数据库等。
假设如果我创建 2 个服务说
- UserService(具有与之关联的单独 DB 和 CRUD 操作)
- PostService(具有与之关联的单独 DB 和 CRUD 操作)
我如何在他们之间进行通信。
在单体应用中,POST 实体已createBy 映射到用户。
但这在微服务架构中是如何工作的呢?
谁能帮我设计这样的架构?
【问题讨论】:
标签:
java
mysql
spring-boot
docker
kubernetes
【解决方案1】:
首先列出你想在微服务中打破它的原因。使其更具可扩展性(例如在以下场景中)。
- post cmets 变慢,在此期间注册
新用户不受影响。
- 很少有用户上传/下载文件,您希望普通用户只查看cmets和发布cmets不受影响,而上传/下载文件可能保留
慢。
上述问题的答案和分析,优先考虑其他 NFR 将有助于确定如何以及如何打破。
此外,
发布服务只需要验证用户是否是有效的登录用户。(正确吗?)
User Service 根本不需要与 post service 进行通信。
此外,您可能还想解耦其他次要功能。反过来,它们可以通过其他方式(例如(证书等)进行身份验证)相互通信,因为它们将是内部的并更新一些统计信息(用户排名)、聚合数据等。
系统可能还有很多较小的隐藏功能,这些功能可能与 Post Service 有任何关系,也可能根本不需要,这些功能可以根据不同的微服务(如视频/文件/图片/任何二进制内容上传/下载),并根据所需的计算能力、命中频率和业务优先级进行优先级排序。
将其分解为微服务后,您需要运行一些压力测试(基于当前负载)以了解哪些服务需要复制,哪些不需要并且需要自动负载平衡。在破坏之前先编写压力负载也有助于了解哪些功能需要先从单体应用中移出。