【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

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:363864
用户头像

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

关注

评论

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

【签约计划】技术编辑能力考核成绩公布

InfoQ写作社区官方

签约计划 热门活动

开源项目月刊《HelloGitHub》第 60 期

HelloGitHub

GitHub 开源

python中find_element()和find_elements()的区别

Geek_6370d5

Python

华为云自研PB级分布式时序数据库揭秘第一期初识GaussDB(for Influx)

华为云开发者联盟

云原生 时序数据库 华为云 分布式时序数据库 GaussDB(for Influx)

Rust从0到1-基础概念-注释

rust 代码注释

银四30天,苦心啃透java高级工程师面试1000题,涨薪10K很难吗?

Java 编程 程序员 架构 面试

如何学习数据结构与算法

C语言与CPP编程

c c++ 数据结构 程序人生 算法

Python OpenCV setMouseCallback 回调函数,取经之旅第 13 天

梦想橡皮擦

3月日更

Java程序员都要懂得知识点:反射

华为云开发者联盟

Java 对象 反射 class 函数

【技术面对面】基于场景图的多物体图像生成技术

京东科技开发者

云计算

实战案例丨分布式系统中如何用python实现Paxos

华为云开发者联盟

Python 算法 分布式系统 PAXOS 集群库

云图说|一张图带你了解华为云分布式数据库中间件

华为云开发者联盟

数据库中间件 DDM 分布式数据库中间件 华为分布式数据库中间件

区块链溯源,茶叶溯源平台的搭建

13828808769

区块链+ #区块链#

一个魔幻的框架,3分钟纯 Java 注解搭个管理系统

程序员小富

Java 大前端 后端

百度飞桨中国行南京站开启!共研AI赋能产业新模式

百度大脑

百度 AI 飞桨

区块链溯源服务平台,区块链商品防伪溯源解决方案

13828808769

区块链+ #区块链#

Python+OpenCV检测灯光亮点

不脱发的程序猿

Python OpenCV 28天写作 3月日更 检测灯光亮点

“广度”和“深度”,是我最终选择蚂蚁的理由

DT极客

Python基础之:Python中的异常和错误

程序那些事

Python Python3 程序那些事

LDO和DC-DC有什么不同?如何选型?

不脱发的程序猿

28天写作 3月日更 LDO DC-DC 电源转换

实现一个“能中断”的ajax

云小梦

JavaScript ajax Promise axios 请求拦截

智慧公安警务系统搭建,警务大数据可视化分析平台解决方案

13828808769

智慧城市

Elasticsearch详细剖析

大数据技术指南

ES 3月日更

企业利用边缘计算的10种方式

浪潮云

边缘计算

区块链溯源,茶叶溯源平台的搭建

13828808769

#区块链#

Java 并发系列(二):DCL — Double Check Lock

TroyLiu

Java volatile 多线程 synchronized DCL

Mongodb特定场景性能数十倍提升优化实践(记一次十亿级mongodb核心集群雪崩故障)

杨亚洲(专注MongoDB及高性能中间件)

MySQL 数据库 mongodb 架构 分布式数据库mongodb

科技赋能城市建设,英特尔正式发布智慧社区解决方案参考架构

E科讯

首站重庆聚焦智慧物流、呈现最新AI能力

百度大脑

AI 百度大脑

一次客户需求引发的K8s网络探究

京东科技开发者

云计算

在开源的公链上实现隐私保护?静看NA公链 NAC公链创新之路应如何蜕变

区块链第一资讯

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