写点什么

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

2009 年 11 月 03 日

尽管 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:362342
用户头像

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

关注

评论

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

机会,是不会让你准备好的

Winann

学习 生活 知识管理 机会

有问必答(2020-05-09):如何督促自己做好一件事情?

冯夷

生活

游戏夜读 | Scikit-learn迎来0.21版本

game1night

2020第一篇技术博客

java劝退师首席大弟子

生活

如何用一套引擎搞定机器学习全流程?

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

Collaboration on SaaS

zhenglei

SaaS Collaboration Cisco Webex

少说废话,先干起来

白鸽

学习 个人成长 自律

Java如何处理异常情况

Rayjun

Java 异常

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

江南一点雨

spring Spring Boot spring security

11 万字的字节码编程系列合集放送(ASM、Javassist、Byte-buddy、Javaagent)

小傅哥

Java asm bytebuddy 《字节码编程》

Docker 镜像制作教程:针对不同语言的精简策略

米开朗基杨

Docker Dockerfile

键入网址后,其间发生了什么?

小林coding

TCP 计算机网络 网络协议 IP HTTP

程序员的晚餐 | 5 月 17 日 当西红柿遇上鱼

清远

美食

一种练好英语口语的方法

七镜花园-董一凡

学习

从连续两届图灵奖(2018-2019)看GPU发展史

GPU

人工智能 gpu 计算机基础 计算机图形学 计算机体系结构

比AtomicLong更优秀的LongAdder确定不来了解一下吗?

一枝花算不算浪漫

并发编程 jdk源码

JAVA内存模型与线程

颇风

Java 内存模型 JVM

微服务为什么要有服务发现与注册?

攀岩飞鱼

微服务 微服务冶理 微服务发现

Kotlin协程实践之进程、线程、协程

陈吉米

Java kotlin 协程 Coroutine

《零基础学 Java》 FAQ 之 8-Java方法调用是传值还是传引用

臧萌

Java

发布Maven包的正确姿势

廖雪峰

maven 开源

DevOps生命周期,你想知道的全都在这里了!

陈琦

DevOps 测试 持续集成

笔记:《如何系统思考》之如何应用系统思考

wiflish

思维方式

EasyExcel最权威教程

知春秋

Java Excel EasyExcel

从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(一)

图雀社区

node.js vue.js Vue

写作对我的意义

Neco.W

总结 思考 写作 感悟

Design Sprint 教你五天完成产品迭代

Yanel 说敏捷产品

产品 敏捷 设计 产品设计 团队

回“疫”录(19):都什么时候了,还在搞“填表抗疫”

小天同学

疫情 回忆录 现实纪录 纪实 形式主义

【高级进阶】写给大忙人看的JDK14新特性

知春秋

Java java 14 java 14 新特性

2020年比以往任何时候更想做成的使命感

乐少

如何搞定Kafka重复消费?

奈学教育

kafka kafka配置

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

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