如何将计划作业实现为微服务

Eka*_*ina 2 spring-boot microservices

我有一个 Spring Boot 应用程序,它为 Angular Web 界面提供 REST API。

此 Spring Boot 应用程序中当前还有一个预定作业。这项工作是用一些实体填充数据库,比如说书籍(它们取自外部来源,更具体地说,取自网站)。我想将这项工作放入一个单独的微服务中。

问题是微服务是否应该直接使用共享数据库或通过 REST 访问主应用程序。在第一种情况下,一些(如果不是全部)模型和服务将被共享,这看起来不太好。但在第二种情况下,每次对数据库的访问都将通过第一个应用程序。这可以吗?

hts*_*ame 5

查看SOLID设计原则。

S - 是为了Single Responsibility

微服务架构中还有一个同名的模式:单一职责原则

单一职责原则是 SOLID 设计模式中定义的原则之一。它意味着一个单元,无论是类、函数还是微服务,都应该有一个且只有一个职责。

在任何时候,一个微服务都不应承担多个职责。

您应该根据您的应用程序设计来决定哪个微服务应该做什么,您肯定比我们更了解。

但读过你的描述后我建议如下:

  • 你的电流database-microservice应该连接到数据库并接受HTTP请求以将书籍保存在数据库中;

  • 你的新人cronjob-microservice应该及时开始工作,从网站获取书籍并向 发送 HTTP 请求database-microservice,因此它不应该连接到数据库。