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);

  

参考

[1]“Thirft框架介绍”

[2]“Thrift使用指南”

[3]“使用Thrift RPC编写程序”

[4]“让Thrift支持双向通信”

[5]“浅谈Thrift内部实现原理“

http://dongxicheng.org/recommend/

Thrift初试的更多相关文章

  1. Win7+VS2013初试Thrift

    win7环境下VS2013编译boost_1_58_0步骤: 官网下载boost_1_58_0(直接下载),解压 cmd窗口cd到boost_1_58_0,执行bootstrap.bat cmd窗口获 ...

  2. erlang+thrift配合开发

    I  think, thrift is a  tcp/ip based Client-Server architecture multi-languages supported RPC framewo ...

  3. 和 Thrift 的一场美丽邂逅

    一. 与 Thrift 的初识 也许大多数人接触 Thrift 是从序列化开始的.每次搜索 “java序列化” + “方式”.“对比” 或 “性能” 等关键字时,搜索引擎总是会返回一大堆有关各种序列化 ...

  4. Apache thrift RPC 双向通信

    在上一篇介绍Apache thrift 安装和使用,写了一个简单的demo,讲解thrift服务的发布和客户端调用,但只是单向的客户端发送消息,服务端接收消息.而客户端却得不到服务器的响应. 在不涉及 ...

  5. common-pool2 学习:thrift连接池的另一种实现

    对象池是一种很实用的技术,经典的例子就是数据库连接池.去年曾经从零开始写过一个thrift客户端连接池.如果不想重造轮子,可以直接在apache开源项目commons-pool的基础上开发. 步骤: ...

  6. thrift:swift项目笔记

    先声明:此swift不是Apple公司的那个swift开发语言,而是facebook的另一个开源项目. facebook的thrift IDL文件,如果默认用thrift -gen java生成jav ...

  7. dubbo/dubbox 增加原生thrift及avro支持

    (facebook) thrift / (hadoop) avro / (google) probuf(grpc)是近几年来比较抢眼的高效序列化/rpc框架,dubbo框架虽然有thrift的支持,但 ...

  8. Thrift的TJsonProtocol协议分析

    Thrift协议实现目前有二进制协议(TBinaryProtocol),紧凑型二进制协议(TCompactProtocol)和Json协议(TJsonProtocol). 前面的两篇文字从编码和协议原 ...

  9. Thrift的TBinaryProtocol二进制协议分析

    先上张图,说明一下thrift的二进制协议是什么东东. 报文格式编码: bool类型: 一个字节的类型,两个字节的字段编号,一个字节的值(true:1,false:0). Byte类型: 一个字节的类 ...

随机推荐

  1. IE浏览器右键菜单分享扩展

    (如果本页面没有自动下载,请点这里下载) IE浏览器分享工具安装步骤:1.发起下载请求后,屏幕上会弹出文件保存对话框,将文件保存到您电脑本地的磁盘中 2.双击刚才下载的安装文件,将JiaThis_Sh ...

  2. STL容器分析--queue

    queue,顾名思义,是指队列.满足先进先出的原则.

  3. post请求方式的翻页爬取内容及思考

    1 #coding=utf-8 import urllib2 import urllib import json output = open('huizho.json', 'w') for page ...

  4. FTP服务搭建与配置

    FTP介绍 大企业用的基本都是自动化发布工具,会用GIT企业发布的版本上传到服务器, 使用vsftpd搭建ftp服务(上) http://blog.csdn.net/qq_26941173/artic ...

  5. MongoDB GridFS最佳应用概述

    <MongoDB GridFS最佳应用概述> 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs GridFS是MongoDB数据库之上的一个简单 ...

  6. vue的单文件组件

    五. 单文件组件 1. .vue文件 .vue文件,称为单文件组件,是Vue.js自定义的一种文件格式,一个.vue文件就是一个单独的组件,在文件内封装了组件相关的代码:html.css.js .vu ...

  7. 线程的sleep()方法和yield()方法有什么区别?

    1.sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会 2.yield()方法只会给相同优先级或更高优先级的线程以运行的机会 3.线程执行sleep()方法后 ...

  8. 公共查询类criteria

    package cn.edu.hbcf.common.vo; import java.math.BigDecimal; import java.sql.Timestamp; import java.u ...

  9. socket编程头文件分析

    在socket网络编程中经常用到一些宏定义.结构和函数,这些经常包含在相关的头文件中,使用时直接include相关头文件即可.下面简单描述下相关的一些结构及头文件. 1. sockaddr  / bi ...

  10. shell变量自增 || Python脚本接收参数

    一.shell变量自增a=1a=$(($a+1))a=$[$a+1]a=`expr $a + 1`let a++ let a+=1 ((a++)) echo $a 二.python脚本接收参数 fro ...