我在谷歌应用引擎中有一个聊天应用程序。我正面临并发问题。当聊天从一端开始时,该聊天将广播给帐户中所有可用的代理。当 1 个人回应时,该人将获得所有权并删除该会话中所有剩余的人。
在这里,我同时面临来自多个代理响应的并发请求的问题。此时,每个请求都会取出会话中剩余的代理,并且会话中没有任何主体。
我认为这可以通过代码同步来解决。但是对于多个实例,这个逻辑不起作用。由于代码位于不同的服务器中。
有没有办法使用数据存储/内存缓存实现此同步。
请就此提出建议。
提前致谢。
戈文德。
我在谷歌应用引擎中有一个聊天应用程序。我正面临并发问题。当聊天从一端开始时,该聊天将广播给帐户中所有可用的代理。当 1 个人回应时,该人将获得所有权并删除该会话中所有剩余的人。
在这里,我同时面临来自多个代理响应的并发请求的问题。此时,每个请求都会取出会话中剩余的代理,并且会话中没有任何主体。
我认为这可以通过代码同步来解决。但是对于多个实例,这个逻辑不起作用。由于代码位于不同的服务器中。
有没有办法使用数据存储/内存缓存实现此同步。
请就此提出建议。
提前致谢。
戈文德。
查看将 CAS 与 memcache 一起使用,或者您可以使用数据存储中的事务并使用已知键计划控制实体。我不使用 java,所以无法举出一个例子,我只能在 cas 上找到 java 的 api 文档
但是python中的文章仍然会解释发生了什么。
https://developers.google.com/appengine/docs/python/memcache/#Python_Using_compare_and_set_in_Python
我使用事务尝试了这个。但出于某种原因,它对我不起作用。我不知道原因。但是通过 Memcache 递增/递减,我们可以解决这个问题。这些方法是原子的。这是简单而乐观的。
请通过本组
https://groups.google.com/forum/#!topic/google-appengine-java/wtESRwKCF5U
感谢您的更新。
戈文德。