热部署Java耳最大限度地减少或消除维修时间上的应用程序服务器?

StackOverflow https://stackoverflow.com/questions/221846

  •  03-07-2019
  •  | 
  •  

我听说这是什么JavaRebel不会但是还有其他好办法来部署的一个新版本的耳朵,同时允许用户保持活跃在以前的版本吗?我们使用Boss应用程序服务器...

有帮助吗?

解决方案

这不是什么JavaRebel。JavaRebel(根据的说明)热替换班的记忆。这是不可接受的情况下现有的连接的系统,由更新的课程可能会破坏客户的逻辑。

一旦一家公司我工作的有一个类似的问题,这是解决这种方式:

  • 一个聪明的路由器被用来作为一个负载平衡器
  • 新版本已部署到50%的节点(新)的集群
  • 新的连接交付的严格要这些更新的节点,老人之间的平衡旧的节点
  • 老节点被关闭了-线(一个接一个,来跟客户数量每个节点在一定限度内)
  • 同时,新版本已部署到离线"旧的"节点和它们带来了新的节点
  • 由于EJB集群、会议和豆类拾起其他节点老
  • 最终(在几个小时),只有一个老节点离开,具有一个单一实例的旧版本,所有的客户使用旧版本连接到它
  • 当最后的老客户了断开,该节点太过了

现在,我不是一个网络的人和不能给你很多细节(如什么是路由器的硬件和例).我的理解这一可以设置很容易,除此之外,如果我没有记错的话,我们必须建立一个额外的任何领域中部署新版本的应用程序(否则这将是矛盾的,与旧的一个关JNDI名)。

希望这有所帮助。

P.S.Ichorus提供一个评论说,应用程序是部署在客户服务器。所以路由器的把戏可行不通的。现在,我看到的只有一个可行的解决方案,现在(这是21:52现在,我可以忽略的东西:))--

  • 开发新版本的"版本"JNDI名;例如如果客户豆是在ejb/客户在1版,第2版将在ejb/Customer2
  • 有一个企业面应用程序与稳定的基本界面(工厂式)时要求客户豆,试图找到最高的版本参数(不是在每一个电话,当然,可以缓一小时左右)。这门面可以(并应该)部署作为一个单独的应用-从来没有或很少更新
  • 现在每一个新的客户机会获得访问最新的应用的部署和应用不冲突。

这种方法需要仔细的规划和测试,但是应工作恕我直言。

我最近修改的几个应用程序在一个类似的方法来让他们共存于同一领域(前他们用的相同参数的不同数据来源)。

其他提示

我的理解任何有一个特点,所谓的平行部署,以消除的停工期间耳版本升级。你可以部署的新版本没有停止现有的应用程序和一旦新的版本已成功部署,你可以开过透明地从旧的一个新的一个。

我不知道如果其他应用程序服务器的支持。

Ref: http://edocs.bea.com/wls/docs100/deployment/redeploy.html#wp1022490

弗拉基米尔提出的建议使用一个负载均衡是一个非常确定的方式实现你想要什么。记住,它不一定必须是一个高端的硬件负载平衡器。相反,如果你面前你的Boss服务器与当地网络服务器(Apache或IIS)和mod_jk或mod_proxy,你可以保持一个共同网页的外观和实施适用的装载和路由选择程序在耳升级时间。

//尼古拉斯

我想你可能想看到春天使用访框架。http://www.springframework.org/osgi

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top