基于文件的处理与RESTAPI
我们有一个要求,即我们需要在脱机(非实时模式)下每天处理10000笔交易 两个选项中哪一个更可取基于文件的处理与RESTAPI,api,batch-processing,Api,Batch Processing,我们有一个要求,即我们需要在脱机(非实时模式)下每天处理10000笔交易 两个选项中哪一个更可取 每天发送一次并处理10000行的批处理文件 或 一个小批量的API调用(因为我假设一次发送10K行不是一个选项) 我的架构师告诉我,选项1更可取,API只有在批量较小的情况下才有意义,因为2的缺点是调用API的人必须在一次拥有所有可用信息时将负载分解成小块 我很想知道“2”如何成为一个可行的选择,因此任何有助于说明情况的评论/建议都会非常有用 谢谢 拉胡尔这不是一个完整的答案。然而,我想提到支持RE
拉胡尔这不是一个完整的答案。然而,我想提到支持RESTAPI的一个原因:验证。这可以通过API更好地管理。一旦文件被放入FTP位置,您将负责验证文件的格式。将一个“坏”文件路由回它的源代码,并用一条消息来解释反弹是否容易
对于API调用,如果传入的表示不符合有效的模式,例如XML、json等,则您的服务可以使用“400错误请求”http状态代码进行响应。这使服务使用者有责任以有效的格式发送数据,并有助于更好地分离关注点 REST API的附加推理: 由于您的文件包含事务,每个记录都应该是原子的(如果不是这样,例如文件中的记录之间存在关系,那么这些记录不应被视为“事务”)。因此,将文件分块成更小的批应该很简单 无论如何,您可以定义一个服务,该服务接受批量事务,并使用HTTP状态代码“202 Accepted”进行响应。202代码表示已收到请求,并将异步处理该请求。因此,响应还可以包含回调链接,以检查单个事务的状态;或整个批次。此时,您将实现HATEOAS(作为应用程序状态引擎的超媒体),并能够自动化整个过程并报告状态
与批处理文件不同的是,如果文件通过了前期格式验证检查,那么您仍然需要在下游单独处理每个事务。某些记录可能会加载,其他记录可能不会加载。我的假设是,无法加载的记录仍然需要处理。而且,您可能需要向用户提供成功与失败的视图。现在,所有这些都可以在RESTAPI之外处理。然而,API模式对于这个目的来说是简单而优雅的 使用批处理总是一个更好的主意。您可以使用RESTAPI触发批处理过程 通过批处理,您可以始终发送带有消息“文件格式不正确”的电子邮件,也可以发送“哪些记录已处理,哪些未处理”。使用Rest,您无法保持跟踪记录和交易 如上所述,您可以使用RESTAPI异步触发批处理过程,并使用HATEOAS发送状态响应
使用弹簧靴的弹簧批+弹簧座我有相同的问题,所有答案我都找到了相同的主观答案。我想提出一些想法来比较这两个概念: