最新消息:关注人工智能 AI赋能新媒体运营

Go Protobuf加入Opaque API,资料序列化效能与安全性皆获升级

科技智能 admin 浏览 评论

Google针对Go语言的Protobuf(Protocol Buffers)工具推出新的Opaque API,其重点在于效能最佳化、强化安全性和记忆体使用效率提升,对于微服务架构、分散式系统与高效能需求的应用开发者而言,是重要的功能升级。

Protocol Buffers是由Google开发的跨语言、跨平台资料序列化工具,专门针对高效能与轻量化设计,目前已是许多云端服务和微服务的通讯标準。在Go语言生态系中,Protobuf不仅是gRPC框架的基础,也因为其快速资料交换的特性而广受使用。新推出的Opaque API,在记忆体管理和存取模式上进一步最佳化,解决过去Open Struct API的部分痛点。

过去Protobuf的Go实作主要仰赖Open Struct API,生成的资料结构允许开发者直接存取栏位,这样的开放结构虽然提供灵活性,但也伴随着指标操作所带来的风险,例如记忆体共享错误或错误的指标比较操作。此外,因为栏位直接对外公开,Protobuf的内部资料布局无法轻易调整,限制了效能最佳化空间。

Opaque API则对此做出改变,在新的API中,Protobuf生成结构栏位被设为私有,开发者必须透过新增的存取方法操作栏位值。这种设计在实务具有多种好处,首先,隐藏栏位后Go Protobuf便可以重新设计记忆体布局,使用位元栏位取代指标来表示栏位存在性,以明显减少记忆体占用与分配次数。根据官方基準测试结果,对于拥有大量基础类型栏位的讯息,记忆体分配次数最多可减少50%以上,解码效率提升达30%。

另一个重要的改进,是Opaque API对延迟解码的支援。在Open Struct API中,Protobuf解码时会一次性处理所有栏位,即使某些栏位从未被存取,因此会在特定用例中造成不必要的效能损耗。Opaque API则透过延迟解码,仅在栏位首次存取时才进行解码,进一步提升计算资源的利用率,对于大量讯息处理与日誌分析等高效能用例,带来明显的效能提升。

而Opaque API的安全性因为隐藏栏位而获得提升。Opaque API强制开发者使用Getter方法取值,避免过去指标比较错误或意外共享记忆体的问题。虽然这种限制微幅增加操作成本,但大幅降低了程序错误风险,特别是在複杂的RPC呼叫或多执行绪环境中。

Google并未要求开发者立即搬迁,而是先提供了Hybrid API作为过渡解决方案。Hybrid API保留现有开放栏位,并提供新的存取方法,让开发者得以逐步调整程序码,最终平滑过渡到Opaque API。官方提醒开发者,可以根据自身需求选择开始搬迁,特别是新开发的专案,建议直接採用Opaque API。

发表我的评论
取消评论

表情

您的回复是我们的动力!

  • 昵称 (必填)
  • 验证码 点击我更换图片

网友最新评论