Apache Thrift的简单使用

Apache Thrift的简单使用

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

 

Apache Thrift的简单使用

———————-

 

1. 简介

Thrift是Facebook的一个开源项目,主要是一个跨语言的服务开发框架。它有一个代码生成器来对它所定义的IDL定义文件自己主动生成服务代码框架。用户仅仅要在其之前进行二次开发即可,对于底层的RPC通讯等都是透明的。眼下它支持的语言有C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml.

 

2. 下载与安装

能够在http://incubator.apache.org/thrift/download/去下载它的最新版本号,眼下最新版本号是0.5.0。另外你也能够check出它的svn,方法例如以下:

svn co http://svn.apache.org/repos/asf/thrift/trunk thrift

cd thrift

 

在它的jira中看到,它的0.6版本号也非常快就会出来了。

 

我的本本是debian 6.0,假设用ubuntu的兄弟安装方法也是一样的

 

 

这时thrift的代码生成器和一些库文件就生成好了。

 

你能够用例如以下命令看一下thrift的版本号信息

 

 

 

3. 一个简单的样例

在thrift源码文件夹有一个叫tutorial的文件夹,进行当中后执行thrift命令生成对应的服务代码:

 

 

执行完之后会在当前文件夹看到一个gen-cpp文件夹,当中就是thrfit命令生成的代码

 

这时你cd到tutorial/cpp文件夹,执行make,生成对应的CppServer与CppClient程式。

 

这时你能够用./CppServer执行服务端,让其监听一个特定的port

 

这时你能够用./CppClient执行client程式,让其去连接服务端,调用其所相应的服务。默认调用后会输出例如以下信息:

 

 

 

假设你的终端中也出现了如上的信息,恭喜你,执行成功了。假设在执行CppServer的时候找不到动态库,看看你是不是执行了make install,假设执行了,再执行一下sudo ldconfig试试。再用ldd CppServer看一下它有没有找到对应的动态库了。

 

4. 样例分析

 

4.1 Thrift IDL的分析

 

这边有两个IDL文件,内容例如以下:

 

 

 

4.2 服务端与client代码的分析

   4.2.1 c++服务端

   在tutorial/cpp文件夹中的CppServer.cpp是它的服务代码,主要分成两部分,

   一部分是main方法用于做一些初始化与服务的启动,第二部分对于IDL中定义的接口的实现

  

 

 

还有一部分例如以下:

 

4.2.2 c++client

 

4.2.3 其他代码的实现

在tutorial文件夹中有其他代码的样例,如erl,java,python,perl,ruby等。

 

5 參考

1. http://incubator.apache.org/thrift/

2. http://incubator.apache.org/thrift/static/thrift-20070401.pdf

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118323.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • tabnine激活(JetBrains全家桶)「建议收藏」

    (tabnine激活)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html4M7HSKPBXS-eyJsaWN…

    2022年3月29日
  • F1 score,micro F1score,macro F1score 的定义

    F1 score,micro F1score,macro F1score 的定义本篇博客可能会继续更新最近在文献中经常看到precesion,recall,常常忘记了他们的定义,在加上今天又看到评价多标签分类任务性能的度量方法microF1score和macroF2score。决定再把F1score一并加进来把定义写清楚,忘记了再来看看。F1scoreF1score(以下简称F1)是用来评价二元分类器的度量,它的计算方法如下:F1  …

    2022年10月14日
  • 面试逻辑题_经典的20道逻辑题

    面试逻辑题_经典的20道逻辑题第一题:10颗完全相同的糖果,分给三个小朋友,每个人至少一颗糖,有几种分法第二题:-2到2区间,xy两个数相加小于1的概率其实就是在平面坐标系中画出x+y=1的直线。求直线下面的面积就好了

    2022年8月1日
  • 谷歌浏览器安装postman插件_nik插件安装方法

    谷歌浏览器安装postman插件_nik插件安装方法最近使用了一个向后台发送请求的插件,简单方便,功能强大,推荐给大家使用!Chrome版本68.0.3440.75(正式版本)(64位)Postman版本4.1.31、安装POSTMAN插件Chrome浏览器——>更多工具——>扩展程序选择加载已解压的扩展程序选择POSTMAN文件夹完成样例2、加载模板打开POSTMAN客…

    2022年9月16日
  • Navicat Premium 15激活【2021最新】

    (Navicat Premium 15激活)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月28日
  • jsp printwriter_java socket编程

    jsp printwriter_java socket编程JavaPrintWriter类在本教程中,我们将通过示例来学习JavaPrintWriter及其print()和printf()方法。java.io包的PrintWriter类可用于以通常可读的形式(文本)写入输出数据。它继承了抽象类Writer。PrintWriter的工作方式与其他写入器不同,PrintWriter将原始数据(int、float、char等)转换为文本格式。然后它将格式…

    2022年8月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号