我正在考虑使用Google App Engine进行某些Java服务器托管,但是我在阅读一些文档时遇到了一些似乎有些问题。我写过的大多数服务器,当然还有我想到的服务器,需要在会话之间保留某种形式的基于内存的存储,但GAE似乎没有为此提供任何机制。
数据可以存储为静态对象,但应用可能会使用多个服务器,并且无法在服务器之间共享数据。
有memcache,它是共享的,但由于这是一个缓存,因此不可靠。
这只留下数据存储区,它可以很好地工作,但速度太慢。
我真正需要的是一个高性能(即基于内存的)存储,它可以访问所有客户端请求并且一致。在这种情况下,它是提供位于数据存储区前面的专用锁定和同步机制。
在我看来,这里的功能存在很大差距。或许我错过了什么?
有任何想法或建议吗?
答案 0 :(得分:3)
静态数据(您随应用程序一起上传的数据)对所有实例都是可读的。
要在实例之间共享数据,请使用数据存储区。在低延迟很重要的地方,缓存在memcache中。这些是基本选择。读取数据存储区的速度非常快,只需编写一些您需要关注的内容,并且可以通过确保您不需要查询的任何实体属性都未编入索引来缓解这些问题。
另一个选项,如果它符合您的预算,就是在永远在线的后端服务器上运行您自己的缓存。