Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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
Java 文件同步器体系结构_Java_Multithreading_Performance_Architecture_Application Design - Fatal编程技术网

Java 文件同步器体系结构

Java 文件同步器体系结构,java,multithreading,performance,architecture,application-design,Java,Multithreading,Performance,Architecture,Application Design,我必须制作一个文件同步器:一个应用程序,它基本上使用FTP、SFTP和NFS将大量数据文件从外部的许多系统同步到本地系统 这些流有二十多个,对于每一个流,逻辑都略有不同,必须是可配置的。 其中一个要求是,如果其中一个流由于某种原因出现故障,则必须能够在不重新启动整个系统的情况下检索它 另一个要求是传输速率是平衡的。换句话说,不能有一个流或其中的一部分同步,而另一个流延迟10小时 对于要实现的体系结构,我有一些困惑:如果我实现一个单多线程系统,我会有一个非常高的线程数(我会说超过100个),并且通

我必须制作一个文件同步器:一个应用程序,它基本上使用FTP、SFTP和NFS将大量数据文件从外部的许多系统同步到本地系统

这些流有二十多个,对于每一个流,逻辑都略有不同,必须是可配置的。 其中一个要求是,如果其中一个流由于某种原因出现故障,则必须能够在不重新启动整个系统的情况下检索它

另一个要求是传输速率是平衡的。换句话说,不能有一个流或其中的一部分同步,而另一个流延迟10小时

对于要实现的体系结构,我有一些困惑:如果我实现一个单多线程系统,我会有一个非常高的线程数(我会说超过100个),并且通过满足上面概述的两个要求使它变得复杂


我想实现几个过程或同一过程的不同实例,即使它看起来有点“丑陋”。。因此,通过这种方式,一些负载平衡将由操作系统完成,终止或启动流将更简单。甚至性能可能会更好,因为几个进程可以使用更多的ram。有人有任何提示/建议吗?非常感谢,很抱歉我的英语不好。吉安

正如@kayaman所说,100条线并不多。如果这意味着每个工作单元有100个线程,并且你会有很多工作单元,这意味着线程会增加很多数量,我建议你看看

只要不阻塞光纤,就可以有100000多条光纤在几个线程(通常是CPU核心数)上运行。然后,每根光纤只需等待进程的回调,然后再继续

要访问您的端点并以类似的方式处理它们,请看一看Apache Camel-它将允许您流式传输FTP、SFTP等,并将每个端点作为另一个端点来处理(理论上,您还应该能够插入电子邮件并流式传输通过电子邮件发送到端点的数据包)


关于平衡流,这是您需要实现的业务逻辑。如果一个流接收数据包的速度比另一个流快,您应该能够通过在某些条件下不请求更多数据包来限制速率。需要更多关于如何检索包以及正在使用哪些库的信息,以便在这里提供更好的帮助

100个线程不一定是一个高线程数,但这个问题对于StackOverflow来说太广泛了。