【问题标题】:Moving app to GAE将应用程序移至 GAE
【发布时间】:2014-06-29 17:18:29
【问题描述】:

上下文:

我们有一个用Java EEGlassfish + MySQL 上编写的Web 应用程序,带有用于存储的JDBC + XMPP 用于GCM CCS 上游消息传递的连接+ Quartz 调度程序库。这些是应用程序的主要组件。

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

问题:

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

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

3) XMPP connection 在多个实例中的表现如何?考虑到每个实例都是一个单独的 VM,这意味着每个实例对于 GCM CCS 服务器将具有唯一的XMPP connection。这将导致多个问题,例如,如果打开了 10 个以上的实例,则将达到 10 个同时 XMPP 连接的限制上限。

4) Quartz 调度程序如何处理实例?现在我们将计划的作业保存在 MySQL 数据库中,并在每次服务器启动时安排它们。如果有多个实例,这意味着作业将被安排在每个实例上;所以如果有多个实例,作业将被安排多次。我们不希望这样。

那么,如果问题 3 和 4 确实像我描述的那样,那么解决这两个问题的方法是什么? XMPP connection 有一个单个实例,Quartz 调度程序有一个单个实例?

【问题讨论】:

  • 为什么投反对票? :|

标签: google-app-engine


【解决方案1】:

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

2) GAE 在任何意义上都不是虚拟机。 GAP 是一个 PaaS,因此是一个运行时环境。您应该预料到几个不同之处:您仅限​​于 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。

祝你好运!

干杯!

【讨论】:

  • 感谢您的回复。 1)好的,那么复制有什么优势,因为已经有一个单独的备份服务? 2) 我将 GAE 实例称为虚拟机。所以我想当通过自动扩展启动另一个实例时,不能保证它位于全球的另一个数据中心;它只是为了使用扩展。 3) XMPP 文档并没有真正回答有关连接扩展的问题,但我再次认为这将是一个问题。 4) 我没有看到使用他们的 API 以编程方式创建工作的方法,所以 API 没有帮助。
  • 查看任务队列以进行编程访问。和 cron 不一样,在重试健壮性上比 cron 有优势。
  • 那些似乎不支持调度。据我所知,它们更像是后台处理队列。
  • 1) 本质上是透明的高可用。
  • 很公平。确实,您的 GCE + CloudSQL 想法比 GAE 更适合我们使用,因为它允许 XMPP 或 Quartz 等组件所需的更多灵活性。我们现在决定使用 DigitalOcean,因为总体而言,性能价格比更适合我们的应用程序需求,而不是 GCE。这并不是说 GCE 或 Cloud SQL 表现不佳,它们确实如此。对于像我们这样的项目来说,价格上涨实在不值得。
猜你喜欢
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
相关资源
最近更新 更多