Ped*_*roD 3 java cloud distributed-computing amazon-s3 amazon-web-services
我有一个典型的无状态Java应用程序,它提供REST API并在Postgresql数据库中执行更新(CRUD).
然而,客户的数量正在增长,我觉得有必要
这是我现在拥有的图表(Java app和DB都在同一台服务器上):
缩放这个的最佳/正确方法是什么?
谢谢!
Web服务器:
在负载均衡器后面的多个服务器上运行您的应用程序.使用AWS Elastic Beanstalk或使用EC2 + Autoscaling Groups + ELB滚动您自己的解决方案.
您提到了对负载均衡器"泛滥"的担忧,但如果您使用亚马逊的Elastic Load Balancer服务,它将自动扩展以处理您获得的任何流量,这样您就不必担心这种担忧.
数据库服务器
将数据库移动到RDS并启用多重故障转移.这将创建一个热备用服务器,如果主服务器出现问题,数据库将自动进行故障转移.(可选)添加只读副本以扩展数据库容量.
如果您尚未在Redis中开始缓存数据库查询.有很多插件可以很容易地使用Hibernate来做到这一点.如果您的应用定期执行相同的查询,则会对数据库服务器造成巨大负担.将AWS ElastiCache或RedisLabs用于Redis服务器.
图片:
停止在Web服务器上存储图像文件!这产生了许多可伸缩性问题.将它们移到S3并直接从S3提供它们.S3为您提供无限的存储空间,自动备份以及直接从S3提供映像的能力,从而减少Web服务器的负载.
部署:
这里有很多解决方案,它只是一个人们喜欢哪种方法的问题.如果您使用Elastic Beanstalk,那么它为部署提供了解决方案.如果您不使用EB,那么有数百种解决方案可供选择.我建议首先设计您的环境,然后选择适合您所设计环境的自动部署解决方案.
备份:
如果您这样做,您的Web服务器上应该没有多少备份.使用Elastic Beanstalk,为了重建Web服务器,您需要的只是您已检入Git的代码和配置文件.如果您最终必须备份EC2服务器,则需要查看EBS快照.
对于数据库备份,RDS将自动执行每日备份.如果您希望在RDS之外进行备份,可以使用pg_dump和cron作业自行安排.
对于映像,您可以启用S3版本控制和多区域复制.
CDN:
你没有提到这一点,但你应该看一下CDN.这样可以更快地提供应用程序,同时减少服务器的负载.AWS提供CloudFront CDN,我还建议您查看CloudFlare.
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |