复习课(四)| Thrift
黄金
你好,我是黄金。这次我们要复习的论文内容,是 Facebook 在 2007 年发表的这篇 Thrift 的论文。
Thrift 介绍
2007 年前后,随着 Facebook 的业务发展,流量激增,服务之间的关系变得越来越复杂,他们的工程师开始尝试使用多种编程语言,来提升服务组合的性能、开发的简易性和速度,以及现有库的可用性,他们试图寻找一种透明的、高效的,并且能够沟通不同编程语言的协议框架。不过最后,Facebook 并没有找到适合自己口味的开源软件,同时期的 Protobuf 还处于闭源状态,所以工程师们就开发了 Thrift 这个项目。
论文中提到,在 Facebook 内部,Thrift 作为搜索服务的协议层和传输层,它允许服务端团队使用高效的 C++ 语言、前端团队使用 PHP 语言访问搜索服务,允许运维团队使用 Python 语言获取服务状态信息。另外,Thrift 还能用于记录日志、追踪请求的处理。
那么接下来,我们就一起来具体复习下 Thrift 这个框架。
跨语言
首先,作为一种跨语言的序列化协议框架,Thrift 需要定义好支持的数据类型,以透明地适配不同语言的类型系统。
在论文中提到,Thrift 支持的类型包括了基础类型 bool、byte、i16、i32、i64、double、string,容器类型 list、set、map,以及结构体类型。一个结构体是由基础类型、容器类型和子结构体组合而成的。一个这样的通用类型系统,让使用者可以灵活地定义协议字段,而不用关心如何适配到不同的语言,以及在对应的语言中如何解析该字段。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Facebook在2007年发表的Thrift论文介绍了一种跨语言的序列化协议框架,旨在解决服务之间复杂关系和不同编程语言之间的通信问题。Thrift支持多种数据类型,包括基础类型、容器类型和结构体类型,使得用户可以灵活定义协议字段而不用担心不同语言的适配和解析。该框架采用紧凑的二进制编码格式,提供了BinaryProtocol和CompactProtocol两种编码方式,以节约传输流量。Thrift还具有可扩展性,用户可以在Transport层和Protocol层进行定制,同时支持向前向后兼容,使得服务不断演化时能够保持通信的稳定。总的来说,Thrift的设计体现了对跨语言、紧凑编码、可扩展性和兼容性的重视,为解决大数据系统中的通信问题提供了有力支持。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大数据经典论文解读》,新⼈⾸单¥59
《大数据经典论文解读》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论