Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于文件的处理与RESTAPI_Api_Batch Processing - Fatal编程技术网

基于文件的处理与RESTAPI

基于文件的处理与RESTAPI,api,batch-processing,Api,Batch Processing,我们有一个要求,即我们需要在脱机(非实时模式)下每天处理10000笔交易 两个选项中哪一个更可取 每天发送一次并处理10000行的批处理文件 或 一个小批量的API调用(因为我假设一次发送10K行不是一个选项) 我的架构师告诉我,选项1更可取,API只有在批量较小的情况下才有意义,因为2的缺点是调用API的人必须在一次拥有所有可用信息时将负载分解成小块 我很想知道“2”如何成为一个可行的选择,因此任何有助于说明情况的评论/建议都会非常有用 谢谢 拉胡尔这不是一个完整的答案。然而,我想提到支持RE

我们有一个要求,即我们需要在脱机(非实时模式)下每天处理10000笔交易

两个选项中哪一个更可取

  • 每天发送一次并处理10000行的批处理文件
  • 一个小批量的API调用(因为我假设一次发送10K行不是一个选项) 我的架构师告诉我,选项1更可取,API只有在批量较小的情况下才有意义,因为2的缺点是调用API的人必须在一次拥有所有可用信息时将负载分解成小块

    我很想知道“2”如何成为一个可行的选择,因此任何有助于说明情况的评论/建议都会非常有用

    谢谢
    拉胡尔这不是一个完整的答案。然而,我想提到支持RESTAPI的一个原因:验证。这可以通过API更好地管理。一旦文件被放入FTP位置,您将负责验证文件的格式。将一个“坏”文件路由回它的源代码,并用一条消息来解释反弹是否容易


    对于API调用,如果传入的表示不符合有效的模式,例如XML、json等,则您的服务可以使用“400错误请求”http状态代码进行响应。这使服务使用者有责任以有效的格式发送数据,并有助于更好地分离关注点

    REST API的附加推理:

    由于您的文件包含事务,每个记录都应该是原子的(如果不是这样,例如文件中的记录之间存在关系,那么这些记录不应被视为“事务”)。因此,将文件分块成更小的批应该很简单

    无论如何,您可以定义一个服务,该服务接受批量事务,并使用HTTP状态代码“202 Accepted”进行响应。202代码表示已收到请求,并将异步处理该请求。因此,响应还可以包含回调链接,以检查单个事务的状态;或整个批次。此时,您将实现HATEOAS(作为应用程序状态引擎的超媒体),并能够自动化整个过程并报告状态


    与批处理文件不同的是,如果文件通过了前期格式验证检查,那么您仍然需要在下游单独处理每个事务。某些记录可能会加载,其他记录可能不会加载。我的假设是,无法加载的记录仍然需要处理。而且,您可能需要向用户提供成功与失败的视图。现在,所有这些都可以在RESTAPI之外处理。然而,API模式对于这个目的来说是简单而优雅的

    使用批处理总是一个更好的主意。您可以使用RESTAPI触发批处理过程

    通过批处理,您可以始终发送带有消息“文件格式不正确”的电子邮件,也可以发送“哪些记录已处理,哪些未处理”。使用Rest,您无法保持跟踪记录和交易

    如上所述,您可以使用RESTAPI异步触发批处理过程,并使用HATEOAS发送状态响应


    使用弹簧靴的弹簧批+弹簧座

    我有相同的问题,所有答案我都找到了相同的主观答案。我想提出一些想法来比较这两个概念:

  • 批处理解决方案需要比REST API更多的存储空间。你需要 将结果存储在中间存储区,并将其写入 开放格式。也许你可以压缩它,但你正在改变 存储与处理

  • RESTAPI只能使用比批处理解决方案更多的网络带宽 如果中间存储器不在网络驱动器中。获取请求, 查询池可能需要大量的网络带宽, 但可以通过web挂钩或web套接字解决

  • RESTAPI比批处理解决方案更容易实现自动恢复。休息 API响应代码有助于自动决定恢复 从失败中恢复过来。您还可以减少需要的服务数量 识别它。如果网络中断,电子邮件可能会作为REST API失败。 RESTAPI可以帮助您在这些情况下定义一个好的API

  • RESTAPI可以像任何其他TCP协议一样管理大量行 (作为FTP)。但在任何失败的情况下,你都需要逻辑来管理它。 这意味着RESTAPI也需要一个支持区块的协议。对于 批处理服务,这个逻辑是在FTP协议中,但是用自己的 逻辑,而不是你的业务逻辑

  • 批处理服务不需要始终保留实例 (CPU、IP地址、端口等),仅 需要时运行。您需要一个调度程序来启动它,或者 力量。或者一个人在它失败时重新启动它。再一次,在调度程序之外, 自动化是不自然的

  • 批处理服务不需要开发人员提供更多的安全设置 侧面:RESTAPI必须考虑身份验证。还有,一定要想想 关于注射或其他攻击方法。可以使用RESTAPI作为辅助工具 服务来防止所有这些,但这意味着更多的配置

  • 批处理服务易于部署。批处理服务可以在您的计算机上运行 机器或服务器,并在业务需要时运行它。RESTAPI需要 继续运行状况检查,使用部署策略保持状态,采取 关心DNS配置等。检查您的公司是否为您提供所有 这项服务

  • 如果此解决方案适用于您的公司,请检查您的公司是什么 做。现在有一个通用的策略来转移到RESTAPI,但是 如果您的支持团队不知道,但有很多 有批量解决方案的经验,最好不要改进

  • Windows批处理文件(这就是你的意思吗?)天生比编译语言慢。这将取决于速度是否合适