鉴于我们有多种服务可以从不同的来源获取数据并以某种预定义的格式存储它。可能是它们将获取的数据存储在某个数据库中,或存储在文件中或其他位置。我们的想法是,所有服务都非常类似,但它们使用的是不同的来源。
在将这些服务分成几个Java应用程序之前。
现在我们想在一个应用程序中统一这些服务,以共享源代码并使其更简单。
问题是:我们怎样才能保证一项服务的失败永远不会影响另一项?
我看到了几种可能的方式:
在不同的线程中运行所有任务。不要共享一些可以被一个任务锁定的公共资源。缺点:记忆问题没有减轻。
在单独的JVM中运行所有任务。所有风险都得到缓解,但更复杂,需要更多主机配置。
在群集的不同节点上运行所有任务。最可靠的方式,但最耗费资源和程序员耗费时间。
还有更多想法和建议吗?