这是一组问题,而不是一个非常具体的问题。在过去的几周/几天里,我对如何在“云中”正确地托管JAVA PLAY应用程序的信息感到困惑,因为很多信息分散在不同的服务上,我想把所有这些小部分集中在一起,因为很多事情都很重要,需要在完整的上下文中看到。然而,我把我的考虑转移到了问题的底部,因为它们主要是我的观点和主观发现,我不想对此负责。如果我做错了什么,请毫不犹豫地指出。
我们的场景:我们在Java PLAY框架中编写了一个非常直接的应用程序(https://www.playframework.com/),在iOS和Android上工作,并使用后端系统(用于管理、内容管理和API),将数据存储在MySQL数据库中。虽然大多数用户与服务器的交互都是快速简单的(登录、同步一些数据),但也有一些数据密集型任务(下载一些数据)
横向扩展:首先,我们的应用程序中只有1个EC2实例将在eu-1a中运行。我们需要评估一个实例实际需要多少资源,是否需要更多实例,以及更多实例是否真的有利于更快的响应时间。
跨区域的横向扩展:一旦应用程序从另一个区域产生大量用户负载,整个EC2实例应该复制并放到另一个区域,运行db读取副本(请参阅在amazon web services上设置全球可用的web应用程序和https://aws.amazon.com/de/blogs/aws/cross-region-read-replicas-for-amazon-rds-for-mysql/ ).
EC2实例的垂直扩展:在最近对旧主机设置的测试中,数据库被证明是瓶颈,而不是play应用及其服务器的硬件规格。因此,目前还不完全清楚垂直缩放会在多大程度上影响响应时间。如果是t2。微实例与m3一样好。例如,我们当然更愿意从底部往上爬。
RDS的纵向扩展:我们需要估计有多少流量到达数据库服务器,以及需要多少CPU/RAM/等。也许我们也会在这里工作。
全局重定向:使用Amazon Route 53(?)完成。Tokio的用户应该被重定向到在亚洲运行的EC2实例;从罗马到欧洲EC2实例的用户。这不仅会影响应用程序内的API调用,还会影响内容交付(双向)。
我将非常感激各种各样的想法(!),同样关于下面写的背景信息。如果你能让我进一步阅读来解决我自己的问题,我也非常感谢——关于这一点,有大量的信息,但这使得很难缩小答案的范围。我在主机/服务器方面确实很有经验,但我非常确定,有真正的专家在等着给我一记耳光。:)
当前托管设置:负载平衡器在两台根linux服务器上分配流量,两台服务器都运行PLAY应用程序,其中一台还安装了MySQL。
目前的主机设置有3大缺陷:
Java PLAY的托管选项:关于这一点,有很多不同的博客帖子。简而言之:
有很多选择和可能的设置/价格。尤其是在了解到使用boxfuse进行部署后(https://cloudcaptain.sh/)我选择了AWS,因为它从一个来源提供了我们所需要的一切。Boxfuse的月成本较低,但与AWS完美集成。除支持3种常见环境(dev/test/prod)外,还支持扩展。支持率很高。
>
我不确定你是否可以通过RDS在另一个区域设置读取副本,你可能必须通过在标准EC2实例上运行的MySQL服务器来设置。即使你可以,那也将是一些昂贵且高延迟的数据传输。
如果文件上传和下载是你唯一担心的,你只需要把云前线(亚马逊的CDN服务)放在你的应用程序前面,让它通过它的全局边缘服务器处理文件上传和下载。你甚至可以不用把你的整个应用程序移动到AWS就可以做到这一点。我建议首先阅读这篇博客文章。
安装看起来不错。然而,我会做出一个改变:你的大杯-
R53可以很好地为每个最终用户选择最好的服务器。
对于EC2考虑有一个ELB自动缩放组设置。即使只是一个例子,你也可以获得永久健康监测和自动重生的好处。如果您期望更多负载,那么可以根据预期的瓶颈(cpu、网络i/o)自动扩展。这将为您提供一个更自主、更强大的设置,而不是根据您自己的监控分析手动进行上下缩放(即使如果您坚持使用不变的基础设施,缩放部分非常容易)
但是所有的答案和评论对链接帖子的回应也没有太大帮助
我正在使用angular框架构建前端应用程序。有没有办法,我如何将应用程序部署到Azure Linux应用程序服务? 我已经用NodeJS堆栈创建了Web应用程序,并将其分配给Linux应用程序服务。我用命令构建了我的angular应用程序,并将其部署到这个web应用程序中。当我使用url:
我在本地系统上安装了laravel 5.1并开发了一个应用程序。 现在我必须在一个实时服务器上托管它。我们拥有的实时服务器是我们自己的,并且在其上运行许多其他应用程序。 我刚刚将laravel文件夹放在了一个路径中(没有其他内容),但它没有像我预期的那样工作。 我读过一些答案,上面说我必须将公用文件夹复制到服务器的公用文件夹中,其余的复制到一个文件夹中,对吗? 我必须安装作曲家,并按照larave
我有一个WCF服务,我试图在Sitecore 7.1应用程序中托管。具有相同配置的Web服务在空白Asp.net应用程序中托管时运行良好。但是当尝试从Sitecore应用程序运行它时,它不起作用(下面的错误)。我也尝试了这些解决方案,但没有运气。我不确定它们是否应该适用于最新版本的Sitecore。 https://adeneys.wordpress.com/2008/10/17/make-sit
我想在spring应用程序中使用ManagedExecutorService。然而,spring无法注入它。降低误差。 原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到 [javax.enterprise.concurrent.ManagedExecutorService] 类型的合格 bean,用于依赖关
我想避免使用WebViews从Google获取OAuth代币。(要求用户分享他的联系人、个人资料信息等)。为此我使用了Google Play服务API。 由于我的应用程序是基于云的(逻辑发生在云中),我必须将这些令牌保存在云中。我还必须让用户从多个设备登录(每次从新设备登录时都不需要向他询问谷歌权限) 我试图实现这个谷歌博客中提到的技术。 我尝试了博客中提到的方法。它并没有完全如我所愿工作。我还检