首页 > 解决方案 > 如何将计划作业实现为微服务

问题描述

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

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

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

标签: spring-bootmicroservices

解决方案


查看SOLID设计原则。

S - 用于Single Responsibility

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

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

在任何时候,一个微服务都不应该有不止一项职责。

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

但是在阅读了您的描述后,我建议以下内容:

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

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


推荐阅读