【发布时间】:2014-06-29 17:18:29
【问题描述】:
上下文:
我们有一个用Java EE 在Glassfish + 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 调度程序有一个单个实例?
【问题讨论】:
-
为什么投反对票? :|