Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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 amazonwebservices中Tomcat上j2eewebapp的设计考虑_Java_Tomcat_Amazon Web Services_Jakarta Ee_Amazon Elastic Beanstalk - Fatal编程技术网

Java amazonwebservices中Tomcat上j2eewebapp的设计考虑

Java amazonwebservices中Tomcat上j2eewebapp的设计考虑,java,tomcat,amazon-web-services,jakarta-ee,amazon-elastic-beanstalk,Java,Tomcat,Amazon Web Services,Jakarta Ee,Amazon Elastic Beanstalk,我的项目希望在Amazon的云上部署一个新的j2ee应用程序。ElasticBeanstalk支持Tomcat应用程序,这看起来很完美。在编写上述应用程序时,是否有任何特定的设计考虑事项需要牢记,这些考虑事项可能不同于服务器上的独立tomcat 例如,我知道服务器是自动伸缩的。这像一个集群吗?我们的应用程序框架倾向于在HttpSession中保持状态,这是一个问题吗?或者当它说它可以自动扩展时,这仅仅意味着内存和CPU吗?AWS上的自动扩展是通过添加更多的服务器来实现的,而不是添加更多的CPU/

我的项目希望在Amazon的云上部署一个新的j2ee应用程序。ElasticBeanstalk支持Tomcat应用程序,这看起来很完美。在编写上述应用程序时,是否有任何特定的设计考虑事项需要牢记,这些考虑事项可能不同于服务器上的独立tomcat


例如,我知道服务器是自动伸缩的。这像一个集群吗?我们的应用程序框架倾向于在HttpSession中保持状态,这是一个问题吗?或者当它说它可以自动扩展时,这仅仅意味着内存和CPU吗?

AWS上的自动扩展是通过添加更多的服务器来实现的,而不是添加更多的CPU/RAM。您可以手动添加更多的CPU/RAM,但这需要关闭服务器一分钟以进行更改,然后配置服务器上运行的任何软件以利用添加的RAM,因此这不是自动扩展的方式

Elastic Beanstalk基本上是Amazon EC2服务器、弹性负载平衡器和自动伸缩组的管理接口。它为您设置了所有这些功能,并提供了一种方便的方法来轻松部署应用程序的新版本。Elastic Beanstalk将在弹性负载平衡器后面创建EC2服务器,并使用自动扩展配置随着应用程序负载的增加添加更多服务器。它负责在服务器准备好接收流量时将其添加到负载平衡器,并在不再需要时将其从负载平衡器中删除和删除额外的服务器

对于运行在Tomcat上的Java应用程序,有几个选项可以很好地处理水平伸缩。您可以在负载平衡器上启用粘性会话,以便来自特定用户的所有请求都将转到同一服务器,从而使HttpSession与用户绑定。这方面的主要问题是,如果从池中删除服务器,可能会丢失一些HttpSessions,并导致任何“卡在”该服务器上的用户从应用程序中注销。解决方案是将Tomcat实例配置为在共享位置存储会话。有一些Tomcat会话存储实现可以与AWS服务一起工作,比如ElastiCache()和。如果您还不熟悉DynamoDB,我建议您使用其中的一种,可能是Redis实现


将Java应用程序移动到AWS的另一个考虑因素是,您不能使用任何依赖于多播的工具或库。您可能没有使用multi-cast进行任何操作,但根据我的经验,我必须迁移到AWS的每个Java应用程序都依赖multi-cast进行集群,我必须修改它以使用不同的集群方法


另外,为了成功地迁移到AWS,我建议您仔细阅读一下VPC、私有IP与公共IP以及安全组。对这些主题的深入了解是设置网络的关键,这样您的web服务器就可以安全高效地与DB和缓存服务器通信。

您正在云中部署,这意味着您应该遵循12因素建议:。首先,它们应该是无状态的。