将应用程序移至AGE

时间:2014-06-29 17:18:30

标签: google-app-engine

上下文

我们在Java EE + Glassfish上用MySQL编写了一个Web应用程序,其中包含用于存储+ XMPP连接的JDBC,用于GCM CCS上游消息传递+ Quartz调度程序图书馆。这些是应用程序的主要组件。

我们正在完成我们的应用开发阶段,我们正在尝试找出部署它的最佳选择,考虑到未来的可扩展性,包括用户数量和地理位置(例如,多个VMS on多个大陆,如果需要的话)。目前,我们正在使用DigitalOcean中的单个VM实例来同时使用应用服务器 MySQL服务器,然后我们可以通过一些努力来扩展(不多,但可能比GAE更多)。

问题:

1)根据我的理解,Cloud SQL在世界各地的多个数据中心中被复制,因此在存储方面,地理可扩展性得到了保证。所以这是奖金。但是,我们需要更新应用程序中的数据库交互代码以使用Cloud SQL结构,从而锁定到他们的平台。这对你来说有问题吗? (我还没看过他们的数据库交互代码,所以我可能会关注这个代码)

2)GAE实例的工作方式与普通虚拟机相似吗?这方面有什么不同吗?我已经了解了自动扩展功能,但它们在地理上可扩展性如何呢?您是否必须为每个实例选择数据中心位置?或者如何在Cloud SQL开箱即用的情况下实现多个全球实例位置?

3)XMPP connection如何处理多个实例?考虑到每个实例都是一个单独的VM,这意味着每个实例都将具有GCM CCS服务器的唯一XMPP connection。这会导致多个问题,例如,如果打开的实例超过10个,那么将同时触发10个XMPP连接限制上限。

4)Quartz调度程序如何与实例一起使用?现在,我们将预定的作业保存在MySQL数据库中,并在每个服务器启动时安排它们。如果有多个实例,则意味着将在每个实例上安排作业;因此,如果有多个实例,则会多次调度作业。我们不希望这样。

所以,如果确实存在问题3& 4就像我描述的那样,这两个问题的解决方案是什么? XMPP connection单个实例以及Quartz调度程序的单个实例?

1 个答案:

答案 0 :(得分:2)

1)虽然CloudSQL是托管复制的RDBMS,但您仍需要在创建实例时选择区域。也就是说,您不能指望在全球范围内无延迟地延迟。您仍然需要设计一个适当的架构来实现这一目标。

2)GAE在任何意义上都不是VM。 GAP是一种Pa​​aS,因此也是一种运行时环境。您应该期待一些差异:您只能使用Java,PHP,GO和Python,GAE提供的机制是开箱即用且兼容的第三方库。例如,您无法在那里安装中间件。另一方面,从基础架构的角度来看,您不必处理任何事情,具有透明的高可用性和可伸缩性。

3)XMPP不是我的强项,但GAE提供XMPP服务,你应该看看它。更多信息:https://developers.google.com/appengine/docs/java/xmpp/?hl=pt-br

4)GAE提供了一个非常好的cron服务。你不需要使用Quartz。

我的最后建议是:如果你想迁移现有的应用程序,你最好的选择可能是GCE + CloudSQL,而不是GAE。

祝你好运!

干杯!