写点什么

BERT-- 作为 Protocol Buffers/Thrift 的动态替代

  • 2009-11-03
  • 本文字数:771 字

    阅读完需:约 3 分钟

尽管 XML 在数据编码方面尤为突出,仍然有很多情况下效率不高成为了阻碍,这是由编码 / 解码的效率不足与所占用的空间两方面所造成的。流行的二进制序列化格式有得到广泛使用的 ASN.1, Google 的 ProtocolBuffers,以及 Facebook 的 Thrift

一个新的格式现在为 GitHub 的后端提供支持:BERT ,它由 Tom Preston-Werner 在 Erlang 用于编码节点间通讯术语的外部术语格式(ETF) 的基础上所构建。

BERT 对 ETF 进行了扩展,加入了字典,时间和正则表达式等复杂数据类型。

BERT 不同于 ASN.1 与 Protocol Buffers 之处在于其格式不要求一个模式或者是 IDL 规范。Tom Preston-Werner 解释这使得 BERT 就好像是 JSON 这一思想的二进制版:

我喜欢 JSON。我喜欢抽取一种语言的子集并用它来促进进程间通信这种概念。这使我想起我关于 Erlectricity 所做的工作。两年以前我为 Erlectricity 写过一个 C 扩展来加速 Erlang 的外部术语格式的反序列化。
[…] 如果我将 Erlang 的外部术语格式的公共部分抽取出来,让它成为进程间通信的标准,会怎么样呢?如果让 Erlang 拥有像 JavaScript 的 JSON 那样的相同的事物又会怎样呢?如果能在这一格式的基础上构建一个 RPC 协议,又会如何?这些东西看起来会像什么样子,能简单的实现吗?

BERT-RPC 允许对托管在 BERT-RPC 服务器上的代码远程调用,它使用 BERTs 来编码 (节点的) 协商,并返回调用的值。Tom 提到了 BERT-RPC 的一些特性

  • 同步及异步的调用 […]
  • 流 (来或往)
  • 缓存指令

Ruby 代码可通过使用像 Ernie 这样的 BERT-PRC 服务器来获得。

已有现成的 BERT 和 BERT-RPC 规范。至于 Ruby 和 Erlang 实现的其它语言可替代实现包括 BERT for Javascript Python ,以及其它。

你更倾向于 BERT 这样的无模式方案呢,还是像 ASN.1 和 ProtocolBuffers 这样的基于 IDL 的选择?

查看英文原文: BERT as Dynamic Alternative to Protocol Buffers/Thrift

2009-11-03 08:362956
用户头像

发布了 133 篇内容, 共 31.5 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

[Python]第一章(建议收藏)

謓泽

Python 2月月更

初级工程师建议收藏|企业级APIs安全实践指南

领创集团AdvanceGroup

eBPF 完美搭档:连接云原生网络的 Cilium

火山引擎边缘云

边缘计算 ebpf 云原生网络 cllium

学生管理系统的架构设计

凌波微步

「架构实战营」

十年所学,梦想终至,不负时光 | 《云端架构》新书首推发布,来自极度努力的吕校长

博文视点Broadview

CSS实现阮大佬博文的阅读进度功能

战场小包

CSS css3 前端 2月月更

[Python]介绍

謓泽

Python 2月月更

用简单例子带你了解联合索引查询原理及生效规则

华为云开发者联盟

sql 索引 查询 联合索引

基于CC2530设计的智能风扇

DS小龙哥

2月月更 智能风扇

大厂偏爱的Agent技术究竟是个啥

捉虫大师

架构 agent

FIddler+Proxifer工具对windows PC客户端进行抓包

喀拉峻

黑客 网络安全

数据库读写分离如何保证主从一致性?

蜜糖的代码注释

MySQL 数据库 2月月更

鲲鹏DevKit & BoostKit直播解密:如何“做开发者的开发者”

科技热闻

如何打造一个能自动回复的钉钉机器人

老表

Python 机器人 Linxu 跟老表学云服务器

第三个模块作业

achilles

Nginx跨域解决配置示例

nginx 跨域

盘一盘常见的6种索引失效情况

华为云开发者联盟

MySQL 索引 字符串 查询 索引失效

VIPKID基于Karmada的容器PaaS平台落地实践

华为云原生团队

开源 Kubernetes k8s多集群管理 混合云 分布式云

存储新图谱:DNA存储的边界与天地

脑极体

Pulsar 职位广场 | 腾讯、华为云、虾皮、众安保险、StreamNative 等多个热招岗位

Apache Pulsar

开源 架构 云原生 招聘 Apache Pulsar

学生管理系统的架构文档

卡西毛豆静爸

「架构实战营」

工作想法小计(2):2/14 - 2/18

非晓为骁

个人成长

UMEM:友盟统计自定义事件多应用一键同步 & 批处理工具

SamgeApp

Docker Vue 友盟助手 友盟自定义事件批处理 友盟统计

好用不卡,这些插件和配置让你的 Webstorm 更牛逼!

前端下午茶

前端 工具 webstorm

系统学习 TypeScript(二)——开发流程和语法规则

编程三昧

typescript 前端 2月月更

超硬核攻略!《2022金融云原生落地实用指南》重磅发布(限时免费下载)

York

『The ShardingSphere Global Echo』Vol.4

SphereEx

数据库 开源 中间件 ShardingSphere SphereEx

云原生时代,如何保证容器镜像安全?

极狐GitLab

DevSecOps 镜像安全 极狐GitLab

关于MVVM和MVC,面试看这篇就够了

山河已无恙

mvc 全栈 MVVM 2月月更

Python 中的数组哪去了?

宇宙之一粟

Python 数组 2月月更

面试突击25:sleep和wait有什么区别?

王磊

java面试

BERT--作为Protocol Buffers/Thrift的动态替代_SOA_Werner Schuster_InfoQ精选文章