确保每个用户在GAE / J中的请求处理序列化
|
Google Appengine的默认模式是每个实例以单线程模式运行。如果需要,它们会通过生成新的JVM实例来处理并发请求。
不过,新的开关允许appengine在同一个实例上并行处理多个请求。
迄今为止,为了确保同一用户的请求之间的线程安全,我在常规托管的Java Web应用程序中所做的就是在http会话(或会话中存储的值)上进行同步。 Spring也会这样做(使用
synchronizeOnSession
标志)。
这在GAE中是不可能的,因为HttpSession(及其存储的所有变量)总是在每个http请求中都是新的。也就是说,哈希码始终是不同的。因此,对此进行同步完全无效。但是,即使有可能,appengine也不保证同一实例将处理来自同一用户的两个请求(类似于粘性会话)。
appengine的新标志警告:
如果您想使用并发
请求,您的应用程序代码需求
使用适当的线程同步
在启用之前。
因此,如何确保我的应用程序对于来自同一用户的操作而言是线程安全的?我最关心的是用户可以对其HTTP会话中存在的数据执行的操作。我显然只关心在同一实例中同步同一用户的请求。
谢谢
没有找到相关结果
已邀请:
1 个回复
邦绊门蔽惩