两个隔离系统之间的同步



需要帮助,一些架构方面的建议…在两个孤立的系统之间进行同步的最佳方式是什么?

一个是标准的java环境,另一个是没有j2ee集成和没有调度选项的遗留系统。遗留系统公开了web服务,所有的处理都是由客户端(java应用程序)的调用启动的。处理将以大约100个web服务调用开始,并且需要很长时间才能完成,所以我不能在线程中等待那么长时间。

我正在考虑使用一种方法,即客户端开始处理并公开另一个web服务以等待遗留系统处理。遗留系统将通过将需要的数据放入数据库(记录ID或类似的东西)来提供信息。那将是另外100个调用,作为对init调用的某种回应。这是合法的软件架构解决方案吗?

两个系统正在读/写同一个数据库。因此是否需要2个web服务?Legacy系统没有计划启动的选项,所以我需要以某种方式启动它。

你不太清楚你有什么,你需要什么。那么,让我来推测一下。

1)遗留系统得到100个请求,然后将它们作为批处理一起处理。新系统需要所有这100个答案来继续创建新的请求。基于这个假设,遗留系统不会对每个单独的请求做出回应。因此,既然没有提供答案,那么新系统应该继续发送数百个新请求。但是,如果在旧系统中没有完成第1个请求时,新系统不应该发出第101个请求,那么就需要同步。所以新程序不应该等待,也不应该开始101直到它知道1- 1完成了。这应该是同步的关键点——不是等待101,而是检查1-st是否完成。它可以在旧系统或新系统中完成,但这就是同步的意义。

您对问题和解决方案的描述符合http://en.wikipedia.org/wiki/Reactor_pattern。这是一种非常常见的方法,非常适合。

几个合理的问题:1)当达到100(或任何神奇的数字)并开始处理请求批处理后,新请求会发生什么情况?拒绝吗?排队等待新的"100"批次?2)如此如此。批处理解析是异步的。你现在有两个选择:选项A:在客户端公开一个web服务,遗留系统将与之"联系",以"反弹"这100个精化的反馈选项B:在遗留服务器上公开一个web服务,当前系统将每5分钟"ping"一次,只有当有等待反馈的详细说明时,才能暂时获取反馈。就我个人而言,我更倾向于选择a,但请考虑到,在处理带有队列的异步细化时,你需要同时考虑多个场景。例如,假设遗留系统暂时不可用或过载,并且新系统构建了100的积压>(或任何神奇的数字),您将不得不考虑一种机制来处理积压队列,为队列项提供某种"优先级"/紧急性。

最新更新