Thrift初试

Restful 基于 Http 进行通信。html

  • 开放、标准、简单、兼容性升级容易;
  • 性能略低。在 QPS 高或者对响应时间要求苛刻的服务上,能够用 RPC,RPC采用二进制传输、TCP 通信,因此一般性能更好。

RPC通信git

  • 效率相对较高
  • 耦合度强,若是兼容性处理很差的话,一旦服务器端接口升级,客户端就要更新,即便是增长一个参数,而 rest 则比较灵活。

最佳实践:对内一些性能要求高的场合用 RPC,对内其余场合以及对外用 Rest。好比 web 服务器和视频转码服务器之间通信能够用 restful 就够了,转帐接口用 RPC 性能会更高 一些。github

以上参考:老杨的课件。web

 

Thrift是一个跨语言通讯的服务框架,不一样语言开发的程序能够经过Thrift来进行通讯。apache

使用

下载:http://www.apache.org/dyn/closer.cgi?path=/thrift/0.11.0/thrift-0.11.0.exe服务器

把 thrift-***.exe 解压到磁盘,更名为 thrift.exe(用起来方便一些)restful

编写 **.thrift 文件(IDL)框架

根据IDL,自动生成对应的语言代码:性能

thrift -gen csharp f:\netcore\Thrifts\school.thriftrest

 

一个简单实例

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/

相关文章
相关标签/搜索