Spring boot Exchange文件(高达许多GB)
对于我的项目,我必须创建一个文件管理器,该管理器的目标是存储许多文件(来自许多位置)并公开URL以下载它们 在一个微服务生态系统中(我习惯于使用SpringBoot),我想知道交换这些文件的最佳方式是什么,我的意思是将文件发送到文件管理器 一方面,我一直认为异步交换它们更好,所以HTTP似乎不是一个好的选择。但也许我错了 将文件拆分为片段(以减少每个部分的字节数)并通过RabbitMQ或Kafka之类的方式发送它们,这是一个好的选择吗?或者我应该在NAS上或通过FTP传输整个文件,并让文件管理器处理它们?或者其他一些东西,比如在临时数据库中存储字节(可能不是一个好的选择)Spring boot Exchange文件(高达许多GB),spring-boot,apache-kafka,rabbitmq,Spring Boot,Apache Kafka,Rabbitmq,对于我的项目,我必须创建一个文件管理器,该管理器的目标是存储许多文件(来自许多位置)并公开URL以下载它们 在一个微服务生态系统中(我习惯于使用SpringBoot),我想知道交换这些文件的最佳方式是什么,我的意思是将文件发送到文件管理器 一方面,我一直认为异步交换它们更好,所以HTTP似乎不是一个好的选择。但也许我错了 将文件拆分为片段(以减少每个部分的字节数)并通过RabbitMQ或Kafka之类的方式发送它们,这是一个好的选择吗?或者我应该在NAS上或通过FTP传输整个文件,并让文件管理器
碎片化的问题是,我必须实现一个逻辑来对每个碎片进行排序,这会使主题队列的处理变得复杂 根据我使用分布式系统(基于JMS)的专业经验,在参与者之间传输大量内容:
- 请求-应答模型+控制信号应使用片段方法(has next,片段计数器)
- 增量更新方法
希望有帮助。在我看来,永远不要通过消息代理发送实际文件 首先,设置一些对象存储系统,例如S3(使用AWS或本地使用Ceph),然后将文件路径作为字符串发送给生产者,然后让消费者读取该路径,并下载文件
如果您想从NAS或FTP收集文件,那么ApacheNIFI是一种具有类似系统连接器的工具 这是一个有趣的答案。但我想知道它如何在微服务生态系统中发挥作用。特别是当文件管理器服务与docker一起运行时。容器应该与运行它的物理服务器无关。所以我不知道怎样才能用这种方式使用FTP。然而,它为共享卷的解决方案打开了大门……这是RabbitMQ工程团队的建议。使用设计用于发送文件的东西发送文件,并使用MessageBroker向文件发送URI。