如何将使用 apache tomcat 托管的 java 应用程序迁移到云端?

How to move java application hosting with apache tomcat to cloud?

我想将我的应用程序移动到云端。为此,我需要学习哪些额外的东西?我必须对我的代码进行哪些修改? 提前致谢!!

要学习的东西:

  1. 水平可伸缩性和自动缩放。
  2. 以队列为中心的工作流模式。
  3. 最终一致性。
  4. 数据库分片。
  5. NoSQL 数据库。
  6. 网络延迟及其对性能的影响。
  7. CDN.
  8. 持续集成和持续部署。

我向您推荐 "Cloud Architecture Patterns: Using Microsoft Azure" 这本书 http://www.amazon.com/Cloud-Architecture-Patterns-Using-Microsoft/dp/1449319777

您可能需要在应用程序中进行的修改:

  1. 使应用程序节点无状态:无需在您的应用程序中保留任何会话。看看 Spring 会话 http://projects.spring.io/spring-session/。它可以使用 Redis 作为会话存储。另一种选择是使用粘性会话,但这种方法会降低可伸缩性。
  2. 由于您的应用程序节点是无状态的,并且随时可能因活动扩展而被删除,因此您不能将硬盘驱动器用于用户上传的图像(其他文件)。您可能需要使用外部文件存储,例如 S3 http://aws.amazon.com/s3/.
  3. 您的数据库必须位于单独的节点上。
  4. 您需要使用集中式缓存,因为其他节点发生更改时本地缓存不会失效,从而导致数据不一致。看看亚马逊 ElastiCache http://aws.amazon.com/elasticache/ or Hazelcast http://hazelcast.com/
  5. 如果你现在使用Java同步机制如synchronized block或Lock来控制并发你必须记住你需要在多个节点之间进行同步。您可能需要使用分布式锁服务(Terracotta 或 Hazelcast)
  6. 您需要良好的迁移和回滚计划。