【问题标题】:Architectural pattern for a web application with backend server polling other APIs.具有后端服务器轮询其他 API 的 Web 应用程序的架构模式。
【发布时间】:2019-01-19 09:07:50
【问题描述】:

我正在构建一个使用 Java/Spring Boot 作为后端并使用 Angular 5 作为前端的 Web 应用程序。我认为技术栈对于这个问题并不重要。

关键部分是我需要后端轮询几个 RESTful API 来检索数据、存储并在未来对这些数据进行各种分析。目前主要只是简单的报告。

目前我还没有尝试构建微服务方法。该应用程序是单片的,我在 Spring Boot 端使用一个简单的调度程序来轮询 API。一些示例代码是这样的:

@Component
public class RestAPIDataScheduler
{
   @Scheduled(fixedRate = <<Polling Rate in Milliseconds>>)
   public void pollApis()
   {
   }
}

我追求最适合处理此类应用程序的最合适的架构模式(最有可能是微服务)。这是http://microservices.io/patterns/apigateway.html 中描述的简单 API 网关模式吗?

【问题讨论】:

    标签: java spring-boot architecture microservices


    【解决方案1】:

    如果我理解正确,您正试图以给定的频率从各种来源获取数据。您不能使用弹簧批处理来安排定时作业吗?

    如果要处理的数据变得更大/更长,您可以将要处理的响应数据提交到 RabbitMQ/Kafka 等队列系统并异步执行。

    【讨论】:

    • 春季批次非常适合。我很好奇我是否通过微服务过度设计了这个?
    • 也许问我上述问题的更好方法是这样。如果我将 Spring Batch 功能包含到现有的 Spring Boot 应用程序中,我是否只是在创建一个更大的单体应用程序?这是否暗示应该采用微服务方法?
    • 我对微服务的理解是它们应该基于有界上下文而不是基于层来创建。当您需要一个微服务时,最好提供一个微服务。这肯定会帮助你摆脱共享对象的地狱,这将是地狱般的处理。除非您预见到这会导致巨大问题的直接风险,否则我的建议是继续使用更简单的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 2017-01-07
    • 2011-11-29
    • 2012-01-04
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    相关资源
    最近更新 更多