Java中长期运行的数据处理系统的通用架构?

Sal*_*ley 7 java architecture

我被要求将遗留数据处理应用程序移植到Java上.

该系统的当前版本由(错误编写的)Excel表格的nubmer组成.工作表实现了一个大循环:轮询了许多数据源.这些源是CSV和基于XML的Web服务的混合.

这个过程在概念上很简单:

它是无状态的,这意味着运行的计算完全取决于输入.发布计算结果(目前通过在网络上的某些标准位置写入大量CSV文件).

发布结果后,轮询周期再次开始.

该过程不需要管理GUI,但如果我可以实现某种基于Web的控制面板,那将是很好的.对于内部使用来说,这将是非常漂亮和纯粹的.控制面板只会执行有关源源的调度统计信息,并且可能会在出现问题时强制刷新输入源.该组件在第一轮交付中纯粹是可选的.

该系统的一个关键特性是容错.一些输入源是众所周知的错误.我希望我的系统能够在某些输入被破坏的情况下恢复.在这种情况下,无法更新输出 - 我希望在系统解析之前继续轮询,可能会生成一些XMPP消息来指示系统的状态.总的来说,系统应该长时间不进行干预.

用户当前有一个自定义客户端,用于轮询CSV文件(希望)不需要重写.如果我能够正确地完成这项工作,那么他们就不会注意到运行该系统的引擎已经重新实现.

我不是java devloper(我主要做Python),但JVM是这种情况下的要求.经理给了我大量的学习时间.

我想知道的是如何开始构建这种项目.我想尽可能地利用框架和良好的模式.是否有任何重要的构建块可以帮助我获得更好的质量系统运行速度?

UPDATE0:还没有人提到Spring - 这个框架在这种应用程序中是否可以发挥作用?

Pet*_*rey 3

您可以使用许多大型复杂框架来“帮助”您做到这一点。学习这些就可以CV++了。

对于您的情况,我建议您尝试使系统尽可能简单。它将表现更好并且更容易维护(也更可能工作)

所以我会考虑每一个要求并问自己;我可以让这个有多简单?恕我直言,这并不是因为懒惰(你必须更加努力地思考),而是良好的实践。