Java - 为 50 万行数据调用 API。 Spring 批处理还是 Websocket?

Java - Calling API for 500k rows of data. Spring batch or Websocket?

我有两个 CSV 文件,一个包含 500k+ 客户记录。我正在尝试将每一行转换为客户对象,并将 POST 转换为我也负责的 API。

这种方法有一个明显的问题,即触发 500k+ HTTP 调用并导致达到最大 HTTP 连接数。

我收到了两条建议,打开 WebSocket 或使用 Spring Batch。这是打开 WebSocket 和发送消息而不是打开多个 HTTP 连接的好用例吗?还是走更传统的使用 spring 批处理的路线更好?

因为它似乎是您自己的服务器,您应该只创建一个服务器路由,允许您一次向它发送多条记录,然后您可以将事情分批处理成更少的 API 调用。

如果真的是 500k 条记录,你需要发送,你可能仍想将它们分批处理成多个请求,但你至少可以一次处理 10k 条记录并管理你的连接,这样你就没有更多了在任何给定时间都超过 5-10 个请求(因为无论如何您的服务器不太可能同时处理超过 5-10 个请求,这应该可以防止您的客户端 运行 网络资源不足)。

或者,如果您想更像是文件上传,您可以发送 50 万条记录的数据,让您的服务器像文件上传一样处理它,然后一旦成功,让服务器处理它。

事实上,您可能只想上传 CSV,让服务器直接处理它。


虽然 webSocket 连接可以让您对多个请求使用相同的连接(这是一件好事),但您仍然不想发送 500k 条记录。无论是 webSocket 还是 http 请求,仅发送那么多单独请求的开销都是低效的。相反,您确实希望对请求进行批处理并为每个请求发送大量数据。