Thrift初试
Restful 基于 Http 进行通讯。
- 开放、标准、简单、兼容性升级容易;
- 性能略低。在 QPS 高或者对响应时间要求苛刻的服务上,可以用 RPC,RPC采用二进制传输、TCP 通讯,所以通常性能更好。
RPC通讯
- 效率相对较高
- 耦合度强,如果兼容性处理不好的话,一旦服务器端接口升级,客户端就要更新,即使是增加一个参数,而 rest 则比较灵活。
最佳实践:对内一些性能要求高的场合用 RPC,对内其他场合以及对外用 Rest。比如 web 服务器和视频转码服务器之间通讯可以用 restful 就够了,转账接口用 RPC 性能会更高 一些。
以上参考:老杨的课件。
Thrift是一个跨语言通信的服务框架,不同语言开发的程序可以通过Thrift来进行通信。
使用
下载:http://www.apache.org/dyn/closer.cgi?path=/thrift/0.11.0/thrift-0.11.0.exe
把 thrift-***.exe 解压到磁盘,改名为 thrift.exe(用起来方便一些)
编写 **.thrift 文件(IDL)
根据IDL,自动生成对应的语言代码:
thrift -gen csharp f:\netcore\Thrifts\school.thrift
一个简单实例
https://github.com/tianbogit/ThriftDemo
一个宿主寄宿多个服务:
//关联处理器与服务的实现
TProcessor helloProcessor = new HelloService.Processor(new MyHelloService());
TProcessor schoolProcessor = new SchoolService.Processor(new MySchoolService()); //创建服务端对象
var processorMulti = new TMultiplexedProcessor();
processorMulti.RegisterProcessor("helloService", helloProcessor);
processorMulti.RegisterProcessor("schoolService", schoolProcessor);
TServer server = new TThreadPoolServer(processorMulti, serverTransport, new TTransportFactory(), factory);
参考
Thrift总结:https://www.cnblogs.com/zhangweizhong/category/1006119.html
实现Thrift连接池:http://www.cnblogs.com/walkerwang/archive/2012/10/08/2715735.html
[1]“Thirft框架介绍”
[2]“Thrift使用指南”
[3]“使用Thrift RPC编写程序”
[4]“让Thrift支持双向通信”
[5]“浅谈Thrift内部实现原理“
Thrift初试的更多相关文章
- Win7+VS2013初试Thrift
win7环境下VS2013编译boost_1_58_0步骤: 官网下载boost_1_58_0(直接下载),解压 cmd窗口cd到boost_1_58_0,执行bootstrap.bat cmd窗口获 ...
- erlang+thrift配合开发
I think, thrift is a tcp/ip based Client-Server architecture multi-languages supported RPC framewo ...
- 和 Thrift 的一场美丽邂逅
一. 与 Thrift 的初识 也许大多数人接触 Thrift 是从序列化开始的.每次搜索 “java序列化” + “方式”.“对比” 或 “性能” 等关键字时,搜索引擎总是会返回一大堆有关各种序列化 ...
- Apache thrift RPC 双向通信
在上一篇介绍Apache thrift 安装和使用,写了一个简单的demo,讲解thrift服务的发布和客户端调用,但只是单向的客户端发送消息,服务端接收消息.而客户端却得不到服务器的响应. 在不涉及 ...
- common-pool2 学习:thrift连接池的另一种实现
对象池是一种很实用的技术,经典的例子就是数据库连接池.去年曾经从零开始写过一个thrift客户端连接池.如果不想重造轮子,可以直接在apache开源项目commons-pool的基础上开发. 步骤: ...
- thrift:swift项目笔记
先声明:此swift不是Apple公司的那个swift开发语言,而是facebook的另一个开源项目. facebook的thrift IDL文件,如果默认用thrift -gen java生成jav ...
- dubbo/dubbox 增加原生thrift及avro支持
(facebook) thrift / (hadoop) avro / (google) probuf(grpc)是近几年来比较抢眼的高效序列化/rpc框架,dubbo框架虽然有thrift的支持,但 ...
- Thrift的TJsonProtocol协议分析
Thrift协议实现目前有二进制协议(TBinaryProtocol),紧凑型二进制协议(TCompactProtocol)和Json协议(TJsonProtocol). 前面的两篇文字从编码和协议原 ...
- Thrift的TBinaryProtocol二进制协议分析
先上张图,说明一下thrift的二进制协议是什么东东. 报文格式编码: bool类型: 一个字节的类型,两个字节的字段编号,一个字节的值(true:1,false:0). Byte类型: 一个字节的类 ...
随机推荐
- IE浏览器右键菜单分享扩展
(如果本页面没有自动下载,请点这里下载) IE浏览器分享工具安装步骤:1.发起下载请求后,屏幕上会弹出文件保存对话框,将文件保存到您电脑本地的磁盘中 2.双击刚才下载的安装文件,将JiaThis_Sh ...
- STL容器分析--queue
queue,顾名思义,是指队列.满足先进先出的原则.
- post请求方式的翻页爬取内容及思考
1 #coding=utf-8 import urllib2 import urllib import json output = open('huizho.json', 'w') for page ...
- FTP服务搭建与配置
FTP介绍 大企业用的基本都是自动化发布工具,会用GIT企业发布的版本上传到服务器, 使用vsftpd搭建ftp服务(上) http://blog.csdn.net/qq_26941173/artic ...
- MongoDB GridFS最佳应用概述
<MongoDB GridFS最佳应用概述> 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs GridFS是MongoDB数据库之上的一个简单 ...
- vue的单文件组件
五. 单文件组件 1. .vue文件 .vue文件,称为单文件组件,是Vue.js自定义的一种文件格式,一个.vue文件就是一个单独的组件,在文件内封装了组件相关的代码:html.css.js .vu ...
- 线程的sleep()方法和yield()方法有什么区别?
1.sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会 2.yield()方法只会给相同优先级或更高优先级的线程以运行的机会 3.线程执行sleep()方法后 ...
- 公共查询类criteria
package cn.edu.hbcf.common.vo; import java.math.BigDecimal; import java.sql.Timestamp; import java.u ...
- socket编程头文件分析
在socket网络编程中经常用到一些宏定义.结构和函数,这些经常包含在相关的头文件中,使用时直接include相关头文件即可.下面简单描述下相关的一些结构及头文件. 1. sockaddr / bi ...
- shell变量自增 || Python脚本接收参数
一.shell变量自增a=1a=$(($a+1))a=$[$a+1]a=`expr $a + 1`let a++ let a+=1 ((a++)) echo $a 二.python脚本接收参数 fro ...