文件同步器架构
File synchronizer architecture
我必须制作一个文件同步器:一个基本上使用 FTP、SFTP 和 NFS 将 H24 大量数据文件从许多外部系统同步到我的本地系统的应用程序。
流有二十多个,每个流的逻辑都略有不同,并且必须是可配置的。
其中一项要求是,如果其中一个流由于某种原因掉线,则必须能够在不重新启动整个系统的情况下恢复它。
另一个要求是传输速率要平衡。换句话说,一定不能有一个流或其中的一部分同步,另一个流延迟 10 小时
我对要实现的体系结构有些困惑:如果我实现一个多线程系统,我会有非常多的线程数(我会说超过 100 个)并且通过满足上面列出的两个要求使它变得复杂。
我正在考虑实现多个进程或同一进程的不同实例,即使它看起来有点 "ugly" ..所以通过这种方式,一些负载平衡将由操作系统完成,它将是杀死或启动流程更简单..甚至性能可能会更好,因为多个进程可以使用更多的内存有人有tips/advice吗?非常感谢,对不起我的英语不好。吉安
正如@kayaman 所说,100 个线程并不多。如果这意味着每个工作单位有 100 个线程,并且您将有许多工作单位,这意味着线程数量会增加很多,我建议您看一下 Fibers
只要您不阻塞光纤,您就可以在一对线程(通常是 CPU 个核心数)上拥有 100000 多个光纤 运行。然后每个纤程将在继续之前等待来自进程的回调。
要访问您的端点并以类似的方式处理它们,请查看 Apache Camel - 它将允许您流式传输 FTP、SFTP 等并将每个作为另一个处理端点(理论上你也应该能够插入电子邮件并将通过电子邮件发送到端点的流数据包)
关于流平衡,这是您需要实现的业务逻辑。如果一个流比另一个流接收数据包的速度更快,您应该能够通过在特定条件下不请求更多数据包来限制速率。需要更多有关如何检索包以及正在使用哪些库的信息,以便在此处提供更好的帮助。
我必须制作一个文件同步器:一个基本上使用 FTP、SFTP 和 NFS 将 H24 大量数据文件从许多外部系统同步到我的本地系统的应用程序。
流有二十多个,每个流的逻辑都略有不同,并且必须是可配置的。 其中一项要求是,如果其中一个流由于某种原因掉线,则必须能够在不重新启动整个系统的情况下恢复它。
另一个要求是传输速率要平衡。换句话说,一定不能有一个流或其中的一部分同步,另一个流延迟 10 小时
我对要实现的体系结构有些困惑:如果我实现一个多线程系统,我会有非常多的线程数(我会说超过 100 个)并且通过满足上面列出的两个要求使它变得复杂。
我正在考虑实现多个进程或同一进程的不同实例,即使它看起来有点 "ugly" ..所以通过这种方式,一些负载平衡将由操作系统完成,它将是杀死或启动流程更简单..甚至性能可能会更好,因为多个进程可以使用更多的内存有人有tips/advice吗?非常感谢,对不起我的英语不好。吉安
正如@kayaman 所说,100 个线程并不多。如果这意味着每个工作单位有 100 个线程,并且您将有许多工作单位,这意味着线程数量会增加很多,我建议您看一下 Fibers
只要您不阻塞光纤,您就可以在一对线程(通常是 CPU 个核心数)上拥有 100000 多个光纤 运行。然后每个纤程将在继续之前等待来自进程的回调。
要访问您的端点并以类似的方式处理它们,请查看 Apache Camel - 它将允许您流式传输 FTP、SFTP 等并将每个作为另一个处理端点(理论上你也应该能够插入电子邮件并将通过电子邮件发送到端点的流数据包)
关于流平衡,这是您需要实现的业务逻辑。如果一个流比另一个流接收数据包的速度更快,您应该能够通过在特定条件下不请求更多数据包来限制速率。需要更多有关如何检索包以及正在使用哪些库的信息,以便在此处提供更好的帮助。