Google App Engine.如何使用memcache或数据存储区进行同步操作?

Bor*_*ris 4 google-app-engine

我的主要目标是能够拥有一些同步方法,在完成之前不应被其他线程访问.如果我有通常的VM - 我会将此方法标记为已同步.但是在GAE中我有多个实例.我读到的关于此的所有帖子都说我应该使用memcache或数据存储区.但到底怎么样?

dra*_*onx 6

通常答案是重新设计功能,因此不需要全局同步.即使你设法同步它,它也只是一个瓶颈.

你可能最好在后端实现它; 您可以指定单个后端,并使您的函数调用对后端的请求.您也可以使用memcache或数据存储区作为信号量,但所有这些都会给您带来糟糕的性能.

  • @boraldomaster我对你不同步的建议实际上是像GAE这样的分布式平台的常见情况.在大多数情况下,只要您使用事务数据存储区操作,就不需要同步函数.你不会在GAE上找到很多关于同步函数的讨论,因为这是一个坏主意,它绝对不是这个平台的常见情况.如果你不围绕平台的行为进行设计,那么你将在GAE上遇到很多问题. (2认同)
  • 如果你真的想要实现自己的同步,那么在线使用memcache作为互斥体的例子:http://xion.org.pl/2011/12/10/synchronization-through-memcache/另一方面,memcache从不保证什么,所以我怀疑这可能会在某些方面失败.您可以考虑以类似的方式使用数据存储区事务,但速度会非常慢. (2认同)