0

我正在将 4 个不同的软件组件重构为一个服务(不是 Web 服务 - 必然或什至可能),它们几乎做同样的事情。3 是用 C++ 编写的,而最后一个也是最重要的是用 Java 编写的。系统的其余部分是用 Java 编写的,因此我不会重构 C++ 代码和使用 JNI,特别是因为目前用 C++ 编写的组件计划在可预见的将来被 Java 组件替换

当前用Java实现的组件实际上是一个更大组件的子组件。因此,当较大/包装组件希望使用子组件(被重构为服务)时,它只需调用进程内 Java 方法。如果我将该子组件重构为单独的服务,则原始包装组件将失去它当前在进程中方法调用的好处。

然后我应该向原始/包装组件添加一个线程以充当服务网关,还是应该将代码完全重构为独立服务。

我希望我已经足够清楚...

4

1 回答 1

0

一般来说,不需要有一个“服务”实例,也不需要远程调用实例。出于性能或可用性原因的共同部署策略是非常合理的。仅仅通过单一的逻辑实现,您就可以获得很多收益。

但是,如果您已经有一个服务基础设施,其中服务提供者可能以特定方式进行管理,那么可能需要保持一致。

因此,您需要了解分离的影响,在这种情况下,进程内调用的这些好处是否重要?您还需要考虑将进程内服务公开为其他客户端的远程可调用服务是否会对现有系统的性能产生不利影响。

我的直觉是:将代码拉入一个能够进行本地和远程调用的组件中(在我的世界中,这可以通过一个简单的无状态会话 EJB 完成)并部署两次。一旦与原始系统位于同一位置。一次作为服务。牺牲绝对一致性以获得最小的扰动。

于 2009-07-14T07:04:33.137 回答