我们正在寻找针对GAE上Java对象的高性能紧凑序列化解决方案。
本机Java序列化不能很好地完成所有工作,并且兼容性很糟糕,即,如果将字段添加到类中或删除了字段,则无法反序列化旧对象。
我们尝试了Kryo,该Kryo在其他环境中表现良好,并且在添加字段时支持向后兼容性,但不幸的是,GAE SecurityManager通过在递归中的每个方法调用上添加一个检查来极大地降低了它的速度。我担心这可能是所有序列化库的问题。
有什么想法吗?谢谢!
最佳答案
当心,过早的优化是万恶之源。
您应该首先尝试一种标准解决方案,然后再确定它是否符合您的性能要求。我确实在GAE上测试了几种序列化解决方案(java序列化,JSON,JSON + ZIP),它们比数据存储访问快一个数量级。
因此,如果序列化数据需要10毫秒并将其写入数据存储区需要100毫秒,那么尝试优化10毫秒几乎没有什么额外的好处。
顺便说一句,你尝试过杰克逊吗?
同样,GAE上的所有API调用都实现为对其他服务器的RPC调用,在这些服务器上,有效负载被序列化为protobuf。