我正在对4个完全不同的软件组件进行重构,这些组件在很大程度上都是同一个服务(不是web服务,甚至可能是web服务)。3是用C++编写的,而最后也是最重要的是用Java编写的。系统的其余部分是用Java编写的,因此我不会重构C++代码并使用JNI,特别是因为目前用C++编写的组件计划在可预见的将来被替换为Java。
目前用Java实现的组件实际上是大型组件的子组件。因此,当较大的/包装组件希望使用子组件(被重构到服务中)时,它只需调用进程内Java方法。如果我将该子组件重构为一个单独的服务,那么原始包装组件将失去它目前从流程方法调用中获得的好处。
然后我应该向原始/包装组件添加一个线程作为服务网关,还是应该将代码完全重构成一个独立的服务。
我希望我已经足够清楚了..。
发布于 2009-07-14 07:04:33
通常,不需要一个“服务”实例,也不需要远程调用实例。基于性能或可用性原因的协同部署策略是相当合理的。仅仅通过逻辑的一个实现,您就可以获得很多好处。
但是,如果您已经建立了一个服务基础设施,其中的服务提供者可能是以特定的方式管理的,那么可能需要保持一致。
因此,您需要了解分离的影响,在这种情况下,进程内调用的好处重要吗?您还需要考虑将进程内服务作为其他客户端可远程调用的服务是否会对现有系统的性能产生不利影响。
我的直觉是:将代码放入一个能够同时进行本地和远程调用的组件(在我的世界中,这个组件可以使用简单的无状态会话EJB完成),并对其进行两次部署。一次和原来的系统同时工作。一次服务。为了最小扰动而牺牲绝对一致性。
https://stackoverflow.com/questions/1123809
复制相似问题