云计算背后的秘密-RPC框架
发布日期:2016-7-27 10:7:21
在过去Client-Server的年代,类似CORBA与RMI这样的RPC框架层次不求,由于通过这类技术能将单机的IPC(Inter-process communication,进程间通信)扩展为多机之间的通讯,这对扩展性方面是非常有帮助,但是因为种种原因这些RPC框架并没有被业界大规模的采用。 在云计算时代,需要进行分布式通信的机器越来越多,尽管可通过使用HTTP协议来进行简易地通信,但如果能让程序基于一个方便好用,且非常专业的RPC框架的话,那是再好不过了。本文将给大家介绍当前两个最受欢迎的RPC框架,分别是: (1)Google的Protocol Buffers; (2)Facebook的Thrift。 1、Protocol Buffers Protocol Buffers,是Google内部使用一种语言中立、平台中立与可扩展的序列化结构数据的方式,并且提供基于Java、C++ 与Python这三种语言的实现,每一种实现都包含了相应语言的编译器以及库文件,且在很多Google的产品中都有使用。它是一种二进制的格式,因此其速度是使用XML进行数据交换的10倍左右。它主要用于两个方面: (1)普通的RPC(Remote Procedure Call,远程方法调用)通信,它可用于分布式应用之间或者异构环境下的通信; (2)数据存储方面,因为它自描述,而且压缩很方便,所以可用于对数据进行持久化,比如存储日志信息等,并可被MapReduce程序的处理。 2、Thrift Thrift 是由 Facebook 开源的一个 RPC 框架,现在已成为了著名开源组织Apache的孵化项目之一,对阿里云应用开发也有所启迪。它主要的几个特点是: (1)支持非常多的语言,包括在 Web开发中很常用的 PHP,以及 C++/Python/Java 等在 Web后端非常常用的语言,甚至还包括近期很流行的 Ruby和Erlang; (2)提供完整的 RPC 框架实现,通过脚本就能生成通讯相关的框架代码,比如搭建一个简易的服务只需要几分钟,这样使得开发者只需要集中精力处理好业务逻辑即可,; (3)拥有被 Facebook、Last.fm 等不少大规模互联网应用验证过的性能和可用性。 总体而言,它的代码实现是很优秀的,逻辑层次非常清楚,易于定制扩展,同时通过框架生成代码非常方便,也节省很多通讯方面的开发和调试时间,且 Facebook号称Thrift在速度上和Protocol Buffers相比有一定的优势。 不管是Protocol Buffers还是Thrift都非常优秀,但还是希望大家能够按照应用自身的实际情况来进行抉择,比如在开发YunTable时,因为性能和开发成本的考虑,我并没有选择这两种RPC框架的其中之一,而是自建一套简易的二进制通讯框架,并非常简单易用,同时速度飞快。 参考资料 1. Thrift –开源多语言RPC框.http://micy.cn/blog/post/35 2. Protocol Buffer简介. http://kimilv.javaeye.com/blog/411092 下一条: 云环境中开发 vs 云环境中管理
|