Google应用引擎中的并发性

时间:2013-10-18 06:33:17

标签: java google-app-engine concurrency

我在谷歌应用引擎中有一个聊天应用程序。我正面临着并发问题。 当聊天从一端开始时,该聊天将广播到该帐户中的所有可用代理。当一个人回应那个人将取得所有权并删除那个会话中剩下的所有人。

在这里,我遇到同时来自多个代理响应的并发请求的问题。此时,每个请求都会取出会话中的其余代理,并且会话中没有正文。

我认为这解决了代码同步问题。但是多个实例不能正常运行这个逻辑。由于代码位于不同的服务器中。

有没有办法使用数据存储区/内存缓存来实现此同步。

请就此提出建议。

提前致谢。

戈文德。

2 个答案:

答案 0 :(得分:1)

将CAS与memcache一起使用,或者您可以在数据存储区中使用事务并使用已知密钥规划控制实体。我不使用java所以不能掀起一个例子,我只能在cas上找到java的api文档

https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/memcache/MemcacheService.CasValues

但是python中的写法仍然可以解释发生了什么。

https://developers.google.com/appengine/docs/python/memcache/#Python_Using_compare_and_set_in_Python

答案 1 :(得分:0)

我使用Transactions尝试了这个。但有些原因它不适合我。我不知道原因。但是使用Memcache递增/递减我们可以解决问题。这些方法是原子的。这很简单也很乐观。

请通过这个小组

https://groups.google.com/forum/#!topic/google-appengine-java/wtESRwKCF5U

感谢您的更新。

戈文德。