文档章节

thirft with php(一)

o0无忧亦无怖
 o0无忧亦无怖
发布于 2016/03/17 11:41
字数 638
阅读 37
收藏 0

###About thrift

The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages.

总体而言,就是开源的、跨平台的、无缝连接的开源框架。一般用于系统内个语言之间的RPC通信。

源代码位置

###为什么产生了thrift

目前主流的数据传输格式:
xml与JSON相比体积太大,但是xml传统,也不算复杂。
json 体积较小,新颖,但不够完善。
thrift 体积超小,使用起来比较麻烦,不如前两者轻便,但是对于
    1.高并发
    2.数据传输量大
    3.多语言环境
满足其中2点使用 thrift还是值得的。



和其他协议对比(引用自https://www.liuhe36.cn/2013/07/introduction-of-thrift/):
其实有很多技术能支撑远程调用,如常见的REST-JSON方式、REST-XML或RMI等,但REST方式的效率上确实不够高,下面引用了几张图片,可以直观的说明一些问题。

使用Thrift和其他方式的所产生的内容大小比较结果如下:

thrift-size

在上图中我们能明显看出,最臃肿的是RMI,其次是xml,使用Thrift的TCompactProtocol协议和Google 的 Protocol Buffers 相差的不算太多,相比而言还是Google 的 Protocol Buffers效果最佳。

使用Thrift 中的协议和其他方式的所产生的运行开销比较结果如下:

thrift-load

在上图中我们能明显看出,最占资源是REST2中协议,使用Thrift的TCompactProtocol协议和Google 的 Protocol Buffers 相差的不算太多,相比而言Thrift的TCompactProtocol协议效果最佳。

###数据类型

####基本类型:

bool:布尔值,true 或 false,对应 Java 的 boolean       PHP bool
byte:8 位有符号整数,对应 Java 的 byte                 PHP  int
i16:16 位有符号整数,对应 Java 的 short                PHP  int
i32:32 位有符号整数,对应 Java 的 int                  PHP  int
i64:64 位有符号整数,对应 Java 的 long                 PHP  int
double:64 位浮点数,对应 Java 的 double                PHP  double
string:未知编码文本或二进制字符串,对应 Java 的 String  PHP  string

####结构体类型:

struct:定义公共的对象,类似于 C 语言中的结构体定义,在 Java 中是一个 JavaBean,在PHP里是一个类

####容器类型:

list:对应 Java 的 ArrayList   PHP  array
set:对应 Java 的 HashSet      PHP  array
map:对应 Java 的 HashMap      PHP  array

####异常类型:

exception:对应 Java 的 Exception PHP 的 Exception

####服务类型:

service:对应服务的类

© 著作权归作者所有

共有 人打赏支持
o0无忧亦无怖
粉丝 43
博文 92
码字总数 75362
作品 1
海淀
程序员
私信 提问
Thirft框架介绍

1、前言 Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编...

nothingfinal
2014/05/20
0
0
Jboot发布啦,如果你做微服务架构,你应该看看。

Jboot发布啦 Jboot是什么呢? 详情地址地址:https://git.oschina.net/fuhai/jboot jboot是一个类型springboot的开源框架,基于jfinal和undertow等非常优秀的、已经在商业项目中应用多年的、...

理工男海哥
2017/06/21
0
27
jboot 1.0-alpha4 发布,类似 springboot 的开源框架

又发新版本了,具体地址:https://git.oschina.net/fuhai/jboot changes更热如下: 1、添加SPI扩展方法,方便对Jboot内置模块的扩展实现。 2、新增自定义序列化的支持,开发者可以选择现有系...

理工男海哥
2017/06/26
1K
12
RPC快速入门学习和java演示

一.什么是RPC? RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 RPC协议假定某些传输协议的存...

钟声已经敲响
2016/10/09
31
0
现在可以说php挺复杂的了

这些天看了下php等级水平的评定,又看到了前进的方向。 分享下,这样和我曾经一样迷茫的phper不用迷茫了。 0级:(没有计算机编程基础,在培训学校里培训了三个月会php或者以前搭建过网站,又...

熊猫88
2016/01/31
8K
33

没有更多内容

加载失败,请刷新页面

加载更多

C++ vector和list的区别

1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造...

shzwork
32分钟前
1
0
Spring之invokeBeanFactoryPostProcessors详解

Spring的refresh的invokeBeanFactoryPostProcessors,就是调用所有注册的、原始的BeanFactoryPostProcessor。 相关源码 public static void invokeBeanFactoryPostProcessors(Configu......

cregu
昨天
2
0
ibmcom/db2express-c_docker官方使用文档

(DEPRECIATED) Please check DB2 Developer-C Edition for the replacement. What is IBM DB2 Express-C ? ``IBM DB2 Express-C``` is the no-charge community edition of DB2 server, a si......

BG2KNT
昨天
0
0
Ubuntu 18.04.2 LTS nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic)

平台:Ubuntu 18.04.2 LTS nvidia-docker2 版本:2.0.3 错误描述:在安装nvidia-docker2的时候报dpkg依赖错误 nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic) 先看一下依......

Pulsar-V
昨天
4
0
学习笔记1-goland结构体(struct)

写在前面:若有侵权,请发邮件by.su@qq.com告知。 转载者告知:如果本文被转载,但凡涉及到侵权相关事宜,转载者需负责。请知悉! 本文永久更新地址:https://my.oschina.net/bysu/blog/3036...

不最醉不龟归
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部