gpt4 book ai didi

java - 在 Amazon AWS 上使用 Glassfish 集群无状态 Java EE 应用程序

转载 作者:搜寻专家 更新时间:2023-10-30 19:43:47 25 4
gpt4 key购买 nike

在分布式环境中部署无状态 Java EE 6 应用程序以实现高可用性和可伸缩性的最佳方法是什么?我的应用程序是无状态的。因此,我不需要复制任何 session 状态(HTTP session 、EJB 有状态 bean 等)

具体来说,我想知道以下内容:

  • 我是否需要 Glassfish 3.1 的集群功能(假设我不需要复制 session 状态)?
  • 我大量使用 JMS 队列和消息驱动 Bean。如何设置 JMS 以使其在集群环境中工作?
  • 我也在使用 EJB 定时器服务。它在集群环境中如何工作?除了使用共享数据库存储计时器(而不是嵌入式 Derby 数据库)之外,我还需要做些什么吗?

我计划使用 Amazon AWS(具有多 AZ 部署的 RDS、弹性负载平衡、EC2)。

最佳答案

我处于类似情况,目前我正在探索 GF 聚类可以为我做什么/不能做什么。

关于 1) 我需要 Glassfish 3.1 的集群功能吗

由于您的 EJB 是无状态的,因此您不需要 GF 集群来进行 session /状态复制(正如您自己所说)。您可以只设置多个独立实例并将您的应用程序单独部署到它们。然而,即使在无状态应用程序中,我发现 GF 集群的好处非常值得 - 从管理的角度来看。

GF Cluster 将确保配置自动应用到所有实例。 JNDI 是自动复制的。应用程序是自动部署的。这是一个扩展和添加额外实例的单一命令 - 不久之后,您的集群被扩展并且新实例被配置、部署、启动并准备就绪。对我来说,这是管理的天堂,并且有足够的理由在我有超过 1 个实例时使用 GF 集群!

要考虑的一件事(我目前正在为此苦苦挣扎)可能是分布式/协调的 L2 缓存,以防您的应用程序正在与数据库对话。

关于 2) ... 我如何设置 JMS 以使其在集群环境中工作?

不确定我是否理解您的问题...如果您想在 GF 之外拥有一个高可用性消息代理,您需要相应地进行设置并自行管理。例如,ActiveMQ 有几种设置集群/HA/横向扩展的方法。如果您使用 GF 提供的 OpenMQ,设置一个 GF-cluster 也会提供一个集群消息代理。开箱即用。

但是经纪人集群本身就是一个话题,不容小觑。您可能需要考虑持久性和共享消息存储等 - 无论使用外部代理还是 GF 提供的集群代理。

如果 JMS 是您应用程序不可或缺的一部分,我建议您适当关注代理。我可能不会使用 GF-broker,而是有一个单独的 broker-cluster(关注点分离;例如,您可以相互独立地升级 GF/broker)。

关于 3) EJB 计时器服务......除了使用共享数据库存储计时器之外,我还需要做些什么吗?

如果您需要定时器在您的(应用服务器)实例组中仅自动触发一次,我相信您确实需要 GF 集群(当然还有共享数据库)。否则我看不出每个实例应该如何知道它是否应该触发。然而,这很容易测试......

tl;dr

  • 使用 GF 集群来节省管理工作
  • 使用外部的、易于理解的高可用消息代理
  • 为您的 EJB 计时器使用共享数据库

关于java - 在 Amazon AWS 上使用 Glassfish 集群无状态 Java EE 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7629694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com