spring-boot - 如何将计划作业实现为微服务
问题描述
我有一个 Spring Boot 应用程序,它为 Angular Web 界面提供 REST API。
此 Spring Boot 应用程序中当前还有一个计划作业。工作是用一些实体填充数据库,比如说书籍(它们取自外部来源,更具体地说,来自网站)。我想把这个工作放到一个单独的微服务中。
问题是微服务应该直接使用共享数据库还是通过 REST 访问主应用程序。在第一种情况下,一些(如果不是全部)模型和服务将被共享,看起来不太好。但在第二种情况下,每次访问数据库都将通过第一个应用程序。那样行吗?
解决方案
查看SOLID设计原则。
S - 用于Single Responsibility
微服务架构中还有一个同名的模式:单一职责原则
单一职责原则是定义为 SOLID 设计模式的一部分的原则之一。这意味着一个单元,无论是类、函数还是微服务,都应该有一个且只有一个职责。
在任何时候,一个微服务都不应该有不止一项职责。
你应该根据你的应用程序设计来决定哪个微服务应该做什么,你肯定比我们更清楚。
但是在阅读了您的描述后,我建议以下内容:
您的当前
database-microservice
应该连接到数据库并接受 HTTP 请求以将书籍保存在数据库中;你的新人
cronjob-microservice
应该及时开始工作,从网站上获取书籍并向 发送 HTTP 请求database-microservice
,因此它不应该连接到数据库。
推荐阅读
- node.js - overrideProvider(token) 在 NestJS 中对 Test.createTestingModule 不起作用
- java - libGDX manager.update() 阻塞动画
- java - 检查收到的 JSON 在 Java 中是否具有必要的值
- angular - ngbDatepicker - 手动输入日期时不出现第一个字符
- django - Django Rest Framework-外键抛出错误
- google-chrome-devtools - 单步执行时防止消息积压
- java - 为什么我的流测试无法检查某些节点中的事务,即使它们存在于它们的存储中?
- linux - 谁是从 shell 函数生成的 shell 的用户
- c# - TimeZoneInfo SupportsDaylightSavingTime 没有返回我所期望的,为什么?
- wordpress - 两个 WordPress Multisite 安装在不同的子目录中