【发布时间】:2014-09-29 23:50:46
【问题描述】:
我正在 Google AppEngine 上实施许可证密钥系统。密钥会提前生成并通过电子邮件发送给用户。然后他们登录系统并输入激活产品的密钥。
我可能有数百人同时提交他们的密钥进行验证。我需要交易保持高度一致,这样同一个许可证密钥就不能被多次使用。
选项 1:使用数据存储区
要使用数据存储,我需要它具有强一致性,因此我将使用 EntityGroup 作为许可证密钥。但是,实体组的写入限制为 1 次/秒。 Appengine 请求必须在 60 秒内完成,因此这意味着要么在激活密钥时通知用户离线,要么让他们循环轮询直到他们的密钥被接受。
选项 2:使用 Google Cloud SQL
即使是最小的 Google Cloud SQL 层也可以处理 250 个并发连接。我不希望这些查询需要很长时间。这似乎会快很多,并且可以毫无问题地同时处理成百上千的许可证密钥请求。
Google Cloud SQL 的缺点是每个实例的大小限制为 500GB。如果我用完了空间,我将不得不创建一个新的数据库实例,然后同时查询提交的许可证密钥。我想我还需要很长时间才能用完这 500GB,而且看起来你甚至可以通过联系 Google 来增加大小。
似乎 Option2 是可行的方法 - 但我想知道其他人的想法。您认为 Entity Group 的交易表现可以接受吗?
【问题讨论】:
标签: google-app-engine google-cloud-datastore google-cloud-sql