java - Google App Engine (GAE) 上的高性能 Java 对象序列化

标签 java google-app-engine serialization

我们正在为 GAE 上的 Java 对象寻找一种高性能的紧凑型序列化解决方案。

native Java 序列化性能不佳,兼容性也很糟糕,即如果将字段添加到类或删除,它无法反序列化旧对象。

我们尝试了 Kryo,它在其他环境中表现良好,并且在添加字段时支持向后兼容性,但不幸的是,GAE SecurityManager 通过对递归中的每个方法调用添加检查来大大降低它的速度。我担心这可能是所有序列化库的问题。

有什么想法吗?谢谢!

最佳答案

当心,过早的优化是万恶之源。

您应该首先尝试其中一种标准解决方案,然后确定它是否符合您的性能要求。我确实在 GAE 上测试了几个序列化解决方案(java 序列化、JSON、JSON+ZIP),它们比数据存储访问快一个数量级。

因此,如果序列化数据需要 10 毫秒,而将其写入数据存储需要 100 毫秒,那么尝试优化这 10 毫秒几乎没有什么额外好处。

顺便说一句,你试过 jackson 吗?

此外,GAE 上的所有 API 调用都实现为对其他服务器的 RPC 调用,其中有效负载被序​​列化为 protobuf。

关于java - Google App Engine (GAE) 上的高性能 Java 对象序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20348361/

相关文章:

python - Google App Engine 不提供静态文件

python - 通过谷歌应用程序引擎上的代理获取网址

c# - 如何快速将类实例保存/加载到文件

c++ - 最快/最好的方法来对数据库中的数据进行序列化和反序列化

java - 如何修改Eclipse运行配置类路径?

python - 从谷歌的应用引擎生成非 html 输出

java - Android N textAppearence 与 Android M 不一样

java - 为图像编辑器快速、可靠地保存/加载文档状态

java - 如何使用 preparedstatement 获取最后插入的行的 id?

java - 带 ReentrantLocks 的资源管理器