Architecture 微服务体系结构

Architecture 微服务体系结构,architecture,microservices,apache-nifi,distributed-system,Architecture,Microservices,Apache Nifi,Distributed System,我们有多个用Java、C、nodeJS和python编写的独立应用程序。所有这些应用程序都有一个共同的属性——它们使用REST API根据每个客户的时间表从某些源中提取数据,并将其存储在CSV文件中,然后使用存储的过程将数据从CSV文件导入不同的SQL数据库。每个应用程序用于集成来自不同第三方服务的数据 例如-应用程序A从源A获取数据'和应用程序B从源B获取数据' 我正在考虑通过编写一个多租户的单一应用程序来替换这些多个独立的应用程序,该应用程序可以处理从不同来源提取数据。所有这些独立的小型应用

我们有多个用Java、C、nodeJS和python编写的独立应用程序。所有这些应用程序都有一个共同的属性——它们使用REST API根据每个客户的时间表从某些源中提取数据,并将其存储在CSV文件中,然后使用存储的过程将数据从CSV文件导入不同的SQL数据库。每个应用程序用于集成来自不同第三方服务的数据

例如-应用程序A从源A获取数据'和应用程序B从源B获取数据'

我正在考虑通过编写一个多租户的单一应用程序来替换这些多个独立的应用程序,该应用程序可以处理从不同来源提取数据。所有这些独立的小型应用程序都将配置为用Java编写的自定义作业。例如,RESTAPI身份验证、创建CSV之前的数据预处理等

因此,我想编写一个从源a'获取数据的作业Java文件和另一个从源B'获取数据的作业。主应用程序将执行此自定义作业。主应用程序将支持作业调度、日志记录等常见功能

稍后,我打算使用nifi处理从CSV到SQL数据库的数据导入

这是一个好办法吗?我计划用Java编写这个应用程序

解决方案背后的原因 要维护的多个代码库 拉取数据时没有并发性 所有这些应用程序都部署为单个实例 如果我需要更新一个作业,我需要部署整个应用程序。如何绕过这个过程?有没有办法只部署作业而不是整个应用程序


构建此解决方案的好方法是什么?

我认为如果您能够稍微调整一下命名法/方法,您会发现您可以使用Apache NiFi来执行系统中的几乎所有任务。虽然NiFi设计用于处理流数据而不是批处理/作业,但您可以使用CRON计时来安排任务执行、初始REST API调用和数据检索,然后将流文件发送给后续处理器。使用此模型,您可以接收数据,将数据视为离散记录,并在各种格式(如XML、JSON、CSV、Avro等)之间轻松转换,过滤、路由、转换和查询数据,然后将其路由到目标SQL数据库。所有这些操作都将具有实时监控、出处记录、审核、可重放性、日志记录、细粒度用户访问控制等。这还将带来额外的好处,即您不需要编写任何代码来处理这些活动—只需在流上拖放组件即可。您可以在不影响无关操作的情况下修改流的任何部分,因此不会中断数据流

我实际上读了更多的no NIFI,发现通过编写定制处理器,我可以处理复杂的步骤。非常感谢。DBIS可以帮助您集成数据。它是用Java编写的。不需要编写脚本。只有配置。如果Microsoft BizTalk Server有足够的资源和预算,那么这种情况是一个完美的选择。