Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分布式组件生命周期管理_Java_Spring_Distributed - Fatal编程技术网

Java 分布式组件生命周期管理

Java 分布式组件生命周期管理,java,spring,distributed,Java,Spring,Distributed,我的公司计划实现一个集群系统,其中包含许多服务,这些服务将自动部署在不同的机器上,并相互连接(SOA风格)。有时,服务将具有相互依赖性 例如: 只有在服务A(数据库)启动并运行时,才能启动服务B(应用程序) 每个服务都计划作为一个不同的java进程运行,可能部署为WAR(在专用的tomcat中),甚至根本没有web 现在我们在同一场战争中拥有所有的服务,只有一个tomcat部署了这场战争。 所有服务都是通过Spring定义的,Spring为我们管理依赖关系 所以我在问自己,是否存在一些框架可以帮

我的公司计划实现一个集群系统,其中包含许多服务,这些服务将自动部署在不同的机器上,并相互连接(SOA风格)。有时,服务将具有相互依赖性

例如: 只有在服务A(数据库)启动并运行时,才能启动服务B(应用程序)

每个服务都计划作为一个不同的java进程运行,可能部署为WAR(在专用的tomcat中),甚至根本没有web

现在我们在同一场战争中拥有所有的服务,只有一个tomcat部署了这场战争。 所有服务都是通过Spring定义的,Spring为我们管理依赖关系

所以我在问自己,是否存在一些框架可以帮助管理分布式环境中的服务,正如我前面所描述的那样


提前感谢

Netflix发布了他们的开源工具,该工具可以管理实例并将其部署到云上。它与EC2(我上次检查时)紧密耦合。根据您是否部署到amazon云,您可能会发现这很有用。我不知道它是否支持依赖项,但它确实管理分布式环境中的部署。Netflix在他们的博客上经常谈到服务依赖性,因此部署解决方案可能有一个功能来解决这一问题

我不知道有任何其他服务/框架可以做到这一点。如果你自己写这篇文章,我想你可以配置几个部署服务的任务。一个任务可以依赖另一个任务来模拟服务依赖关系。ping URL端点可以在部署B之前检查服务A是否存在


还有另一种方式来看待这个问题。如果您确保所有服务都正常运行,则不需要检查依赖关系。像Nagios这样的监控工具可以在这里提供帮助。立即排除故障服务可以帮助您专注于部署服务A,而不是检查每次部署的依赖关系。

Netflix发布了他们的开源工具,用于管理实例并将其部署到云。它与EC2(我上次检查时)紧密耦合。根据您是否部署到amazon云,您可能会发现这很有用。我不知道它是否支持依赖项,但它确实管理分布式环境中的部署。Netflix在他们的博客上经常谈到服务依赖性,因此部署解决方案可能有一个功能来解决这一问题

我不知道有任何其他服务/框架可以做到这一点。如果你自己写这篇文章,我想你可以配置几个部署服务的任务。一个任务可以依赖另一个任务来模拟服务依赖关系。ping URL端点可以在部署B之前检查服务A是否存在


还有另一种方式来看待这个问题。如果您确保所有服务都正常运行,则不需要检查依赖关系。像Nagios这样的监控工具可以在这里提供帮助。立即排除故障服务可以帮助您专注于部署服务A,而不是检查每个部署的依赖关系。

使用ZooKeeper

更正,请使用Netflix的策展人,这是zookeeper之上的一个框架,简化了使用它的工作

在我工作的地方,我最近实现了一个协调器类,它有两种方法:

waitForDependencies
-一种同步方法,用于检查当前服务的依赖项的活动性,并阻止当前线程,直到通知所有依赖项服务都处于活动状态。活动性检查是通过在其初始化过程结束时,通过调用
notifyUp


notifyUp
-一种同步方法,通知世界调用该方法的当前服务处于活动状态。通知是通过在zk集群中创建一个短暂(暂时的,只要创建它的连接是活动的)节点来完成的,该节点由依赖它的其他服务使用
waitfordependences
Usezookeer查找

更正,请使用Netflix的策展人,这是zookeeper之上的一个框架,简化了使用它的工作

在我工作的地方,我最近实现了一个协调器类,它有两种方法:

waitForDependencies
-一种同步方法,用于检查当前服务的依赖项的活动性,并阻止当前线程,直到通知所有依赖项服务都处于活动状态。活动性检查是通过在其初始化过程结束时,通过调用
notifyUp


notifyUp
-一种同步方法,通知世界调用该方法的当前服务处于活动状态。通过使用
waitForDependencies

在zk集群中创建一个短暂(暂时的,只要创建它的连接处于活动状态就保持活动状态)节点来完成通知,其他依赖该节点的服务将查找该节点。非常感谢您提供了宝贵的信息。毫无疑问,我这里有10点:)我会看看netflix,尽管我们不打算在EC2上运行。我认为Jenkins在这里帮不上忙,因为我相信它的工作是构建项目,而不是在生产环境中部署。我更愿意使用一些服务(可能)在每台机器上安装代理,然后自己管理一切(+如果可能的话提供监控:)。有些人确实使用Jenkins来使用maven任务部署到prod,比如
tomcat:deploy
。使用代理和依赖关系管理的软件看起来肯定要少得多