这是一组问题,而不是一个非常具体的问题。在过去的几周/几天里,我迷惑了有关如何在“云中”正确托管JAVA PLAY应用程序的信息,因为许多此类信息分散在不同的服务中,所以我想将所有这些小片段收集在一起,因为充分了解上下文中的许多事情很重要。但是,我将考虑因素移至问题的底部,因为它们主要是我的观点和主观发现,我不希望对此负责。如果我做错了,请毫不犹豫地指出。
我们的场景:我们有一个在Java PLAY框架(https://www.playframework.com/)中编写的非常简单的应用程序,可在iOS和Android以及后端系统上运行(用于管理,内容管理和API) ),将数据存储在MySQL数据库中。尽管大多数用户与服务器的交互是快速,轻松的(登录,同步一些数据),但还有一些数据密集型任务(将一些<100mb的数据zip下载到手机中,将几mb上载到服务器中) )。因此,我们正在寻找一种解决方案,以合理地为远离服务器的用户提供合理的响应时间。显而易见的下一步是托管在云中。
水平缩放:首先,我们的应用程序中只有1个EC2实例将在eu-1a中运行。我们将需要评估一个实例实际需要多少资源,是否需要更多实例,以及是否更多实例实际上将受益于更快的响应时间。
跨区域的水平扩展:一旦应用程序从另一个区域产生了沉重的用户负载,则应复制整个EC2实例并将其放置到另一个区域,运行数据库只读副本(请参阅在Amazon Web Services和https上设置全球可用的Web应用程序: //aws.amazon.com/de/blogs/aws/cross-region-read-replicas-for-amazon-rds-for-mysql/)。
EC2实例的垂直扩展:在对旧主机设置的最新测试中,数据库被证明是瓶颈,而不是play应用及其服务器的硬件规格。因此,尚不完全清楚多少垂直缩放会影响响应时间。如果一个t2.micro实例与一个m3.xlarge实例一样好,那么我们当然希望从这里的底部开始。
RDS的垂直扩展:我们将需要估计有多少流量命中DB服务器,以及需要什么CPU / RAM / etc。也许我们也会在这里努力。
全局重定向:使用Amazon Route 53(?)完成。来自Tokio的用户应重定向到在亚洲运行的EC2实例;从罗马到欧洲EC2实例的用户。这不仅会影响应用程序内的API调用,还会影响内容传递(双向)。
我非常感谢各种各样的想法(!),也涉及下面写的背景信息。如果您可以指点我继续阅读以自己解决问题,我也非常感谢-与此相关的信息非常多,但这很难缩小答案的范围。我确实有托管/服务器方面的知识,但是我很确定那里有真正的专家正在等着我。:)
当前的主机设置:负载均衡器将流量分配到2个根linux服务器上,这两个服务器都运行PLAY应用程序,其中一个还保存MySQL安装。
当前的主机设置存在3个大缺陷:
Hosting Options for Java PLAY: There are lot of different blog posts about this. In short:
Lots of choices and possible setups/prices. Especially after finding out about deployment using boxfuse (https://boxfuse.com/) I made my choice for AWS, as it offers absolutely all we need from 1 source. Boxfuse has low monthly costs but is perfectly integrated into AWS. Scaling is supported as well as the 3 common environments (dev/test/prod). Support is outstanding.
The setup looks good. I would however make one change: your large up- & downloads. As mobile speeds may not be ideal, have your app serve long-running requests is something you should avoid as this will needlessly tie up server threads. Instead consider having users upload and download straight from S3 using presigned URLs. You can then later add CloudFront to the mix when it makes financial sense to do so.
R53可以很好地为每个最终用户选择最佳服务器。
对于EC2,请考虑设置ELB + Auto-Scaling Group。即使仅针对单个实例,您也可以受益于永久性的运行状况监视和自动重生。如果您期望更多的负载,则可以根据期望的瓶颈(CPU,网络I / O)自动扩展。与手动基于您自己的监视分析进行放大和缩小相比,这将为您提供更加自治和可靠的设置(即使如果您坚持使用不变的基础架构和Bluefgreen部署(如Boxfuse提供的产品),则缩放部分非常容易)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句