Google Appengine 提供了很方便的平台,也提供了不少的服务。
但是,也不可避免的添加了不少的限制。除了一些文件大小,数据库
blob大小的限制之外,还有些非常理的限制。今天碰到的就是一个
原来没想到的限制。
最开始使用一个 static 变量来存储一些缓存数据,例如数据的count之类的。
后来发现这个缓存根本没有起作用。于是怀疑static 变量无效,搜索了一下,发现
http://stackoverflow.com/questions/4028787/is-it-thread-safe-to-store-data-inside-a-static-field-when-deploying-on-google-ap
原来,目前情况下,为每个请求,gae会启动一个新的jvm来提供服务。这样的目的当然
是为了可扩展性,当请求多的时候,可以分布式的用多台计算机的jvm实例来提供服务。
由此带来的问题就是,static变量只有在当前的jvm当中才有效,多个jvm的情况下,就
不起作用了。因此,要使用gae提供的缓存服务来解决这个问题。
我当时看到缓存服务的时候还想过,觉得这个缓存服务没有价值,用一个static变量又快
又简单。原来是自己犯傻了,这个缓存服务是跨多个jvm的,简直是gae居家旅行、杀人灭口之必备良药啊。
分享到:
相关推荐
这包括学习如何设置开发环境,编写兼容GAE的Spring配置,以及如何处理GAE特有的限制,如内存限制和无状态会话等。这种集成方法对于希望在Google Cloud上构建企业级应用的开发者来说具有很高的价值。
5. **资源限制**:GAE对应用的运行时间和内存使用有特定限制,这是为了保持服务的高效和低成本。因此,优化代码以适应这些限制是必需的。 6. **调度器与任务队列**:对于后台任务或异步操作,GAE提供了任务队列服务...
从“gtap-0.4.1”这个文件名来看,这可能是gtap项目的第0.4.1版本,按照软件版本号的惯例,0.4.1可能是一个早期的稳定版本,其中包含了基本的功能和一些bug修复。 总的来说,gtap项目提供了一个基于Google App ...
5. 如果有错误或限制,如API调用次数达到上限,应用应能适当地处理并记录错误,或者将任务放入队列稍后重试。 6. 完成所有操作后,应用结束或等待下一次触发。 标签“源码”表明可能有一个源代码仓库包含了这个项目...
由于GAE对第三方库有一些限制,你可能需要选择特定版本的Struts2库,避免使用与GAE不兼容的组件。 2. **Web.xml配置**:在`web.xml`文件中,你需要配置Struts2的过滤器。这通常包括一个`<filter>`元素定义Struts2的...
本文旨在详细介绍GAE在资源使用方面的一些关键限制,帮助开发者更好地理解和规划应用程序的部署与运行。 #### 使用Google App Engine的配额 在GAE上部署的应用程序会消耗一定的资源,并受到一系列配额的约束。这些...
GAE提供了自动的负载均衡和扩缩容能力,但同时也有一些独特的限制,如内存大小、CPU时间、网络I/O等。开发者需要根据GAE的环境优化代码,以确保应用能在GAE上高效运行。 综上所述,这篇博客可能讲解了如何在GAE上...
在Google App Engine(GAE)上整合Struts2和Spring,主要是为了克服GAE对传统Java EE功能的限制,如JDBC的使用。GAE提供了自己的数据存储服务(如Datastore),以及对HTTP请求处理的特定机制。开发者需要确保Struts2...
- **GAE限制**:由于GAE的运行环境有一些特定的限制,例如对文件系统访问的限制,开发者需要了解并适应这些限制。 - **数据库选择**:Micolog可能需要与GAE的数据存储服务集成,如Google Cloud Datastore,这可能...
在GAE上运行Django应用需要对GAE的开发环境和限制有深入理解,例如内存限制、数据存储机制(如Google Cloud Datastore而非传统的SQL数据库)、以及异步任务处理等。 gae-django-cms是针对GAE特性定制的CMS,它可能...
在GAE平台上,由于其沙箱环境的限制,直接使用SSH2可能会遇到一些挑战。例如,GAE不允许执行任意系统命令或打开本地端口,这是SSH服务通常需要的。因此,要整合SSH2,可能需要利用特定的API或者服务,如Google Cloud...
3. **本地开发模式**:在本地开发环境中进行测试,可以使用更宽松的环境,比如使用AppEngine SDK的本地服务器,这样可以避免因GAE限制带来的问题,但部署到生产环境时仍需确保遵循GAE的规则。 4. **理解GAE限制**:...
7. **性能优化**:由于GAE的特性,EGL代码可能需要特别优化以适应GAE的自动缩放和内存限制。 8. **部署和调试**:EGL扩展可能包含了对GAE部署流程的支持,以及在GAE环境下进行远程调试的工具。 项目中的...
- GAE的Task Queue有执行次数限制和执行时间的限制,超过这些限制可能会导致任务丢失或失败,因此在设计定时任务时需考虑这些限制。 - 考虑到GAE的无状态特性,任务处理逻辑应尽可能避免依赖实例状态,以免重启或...
**GAE(Google App Engine)基础教程** GAE,全称Google App Engine,是一个由Google提供的平台,允许开发者构建和托管Web...尽管GAE有特定的限制和工作方式,但对于初学者和小型项目来说,它是一个非常实用的平台。
在GAE上部署Django项目需要一些额外的步骤。首先,你需要确保你的Django版本与GAE兼容。然后,设置`app.yaml`文件以指定应用的运行环境和依赖。GAE支持多种语言运行时,对于Python,可以选择Python 2.7或3.7版本。在...
GAE有一些特定的限制,比如不能直接访问数据库,而是通过其Datastore服务,这是一个NoSQL的数据存储系统。 **集成关键点** 1. **依赖注入**:Spring 3的DI特性可以帮助管理GAE中的对象生命周期,例如,通过配置文件...