我即将开始使用面向微服务的架构(教育目的)重新设计旧的单片软件。为了给出一些上下文,旧软件在一个功能强大的服务器上运行,该服务器执行以下操作:
现在,我想为此批处理操作创建一个单独的微服务。我希望这个微服务在几十台机器上执行并行处理,这样我就可以处理大量的生产者。
每个微服务实例将接收包含每个生产者数据的二进制文件,并输出另一个二进制文件。问题是这些文件可能很大(例如,每个生产者可能产生20Mb的累积数据)。我遇到了几种解决这个问题的方法,但我不相信任何方法:
您认为什么是最佳选择(如果有的话)?谢谢!
答案 0 :(得分:0)
嗯,您的微服务R可以描述为"接收每个生产者批处理数据并公开REST API以列出,管理和检索此数据"。
此服务需要将这些数据保存在商店中(您是否考虑过数据库?Postgresql最多可以存储2个大小的blob),出于架构原因,我建议不要通过实际文件公开内容通过HTTP(你知道你可以使用HTTP检索文件的任意部分吗?)。
这允许您通过网络流式传输文件(无需将整个文件存储在内存中),必要时具有访问控制,记录访问和使用时间等。