Apache Thrift 学习第二篇(安装&试用)

[size=medium] 这一篇,我们来试着安装Thrift,并运行Thrift自带的例子,以对Thrift有个感性的认识。[/size]

[size=large][b]一、下载[/b][/size]

[size=medium] 从官网下载最新版:[url]http://thrift.apache.org/[/url],在写这篇博客的时候,最新版稳定版是0.8.0。官网给的有安装教程以及系统要求,可参照[url]http://thrift.apache.org/docs/install/[/url],上面有各种系统下的编译安装方法。由于我的系统是ubuntu,所以就把ubuntu下thrift的编译安装教程放到这里。

首先,在ubuntu上,系统需要需要有如下组件:[/size]

sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev


[size=medium] 如果没有JDK的话,还需要安装JDK。JDK的安装就不再细说了。

然后,如果Thrift支持下面的语言的的话还需要安装一些额外的包:

Ruby

ruby-full ruby-dev librspec-ruby rake rubygems libdaemons-ruby libgemplugin-ruby mongrel

Python

python-dev python-twisted

Php

php5-dev php5-cli

C_glib

libglib2.0-dev

Erlang

erlang-base erlang-eunit erlang-dev

Haskell

ghc6 cabal-install libghc6-binary-dev libghc6-network-dev libghc6-http-dev
[/size]
[size=large][b]二、源码的编译与安装 [/b][/size]

   #需要指定Boost库的位置,在我的机器上是/usr/include
./configure --with-boost=/usr/include
make -j 4 #4核编译
make install


[size=medium] 如果编译有错误的话,请参照[url]http://thrift.apache.org/docs/BuildingFromSource/[/url]
[/size]
[size=large][b]三、运行示例程序[/b][/size]
[size=medium]
Thrift支持多种语言之间通信,一个作为服务器,另一个作为客户端,在示例程序中我们可以选择Python和Php,用Python作为服务器,Php作为客户端。下载的源码中自带示例程序,源码目录下面有个tutorial目录,里面有README,可以查看说明。使用方法如下:[/size]

    cd tutorial
#我们用自带的例子生成Python和Php代码,下面两行代码执行后会创建目录gen-py和gen-php,里面有生成的代码。
thrift -r --gen py tutorial.thrift
thrift -r --gen php:namespace tutorial.thrift


[size=medium]tutorial里面已经有了现成的服务器代码,tutorial/py/PythonServer.py。但是在Thrift 0.8.0里面,这个代码是有问题的,需要修改

第84行,

transport = TSocket.TServerSocket(9090)

修改为transport = TSocket.TServerSocket(port = 9090)

否则,运行的时候会报错,TypeError: getaddrinfo() argument 1 must be string or None。而且我们在运行的时候,最好要先进入目录tutorial/py,然后以./PythonServer.py方式运行,否则由于PYTHONPATH的问题,还会有错误ImportError: No module named tutorial。当然也有其他解决办法,解决方法[url=http://www.thrift.pl/Thrift-tutorial-running-tutorial.html]看这里[/url]。

在运行PHP客户端之前,我们还有一些其他工作要做,建议这样配置:[/size]

    cd tutorial/php
cp -r ../../lib/php/src/ ./
cp -r ../gen-php ./src/packages/


[size=medium]修改下面两行代码

$GLOBALS['THRIFT_ROOT'] = './src';
$GEN_DIR = $GLOBALS['THRIFT_ROOT'].'/packages';

修改成功后运行Php客户端./php PhpClient.php
如果出现找不到类的话,需要注意PHP[url=http://php.net/manual/zh/language.namespaces.basics.php]命名空间[/url]的使用。
[/size]

[size=large][b]四、使用C++服务器[/b][/size]

[size=medium] 使用C++做服务器需要安装C++ lib,修改Makefile文件,参照wiki

[url]http://wiki.apache.org/thrift/ThriftUsageC%2B%2B[/url]

安装C++ lib的方法是:[/size]

cd thrift-0.8.0/lib/cpp/
make
sudo make install
sudo /sbin/ldconfig -v


[size=medium] 上面的第4步是更新系统lib库的,让系统库包含/usr/local/lib,否则运行C++ Server的时候,找不到libthrift-0.8.0.so。参考链接:[url]http://blog.youkuaiyun.com/shendl/article/details/5746062[/url]

下一步是更新Makefile文件, 可以参考我的Makefile([url=http://wiki.apache.org/thrift/ThriftUsageC%2B%2B]Wiki[/url]上也有更详细的说明),

我的Makefile文件如下:[/size]

#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#

BOOST_DIR := /usr/include
THRIFT_DIR := /usr/local/include/thrift
LIB_DIR := /usr/local/lib

GEN_SRC := ./gen-cpp/SharedService.cpp ./gen-cpp/shared_types.cpp ./gen-cpp/tutorial_types.cpp ./gen-cpp/Calculator.cpp
GEN_OBJ := $(patsubst %.cpp, %.o, $(GEN_SRC))

INC = -I$(THRIFT_DIR) -I$(BOOST_DIR)
.PHONY: all clean

all: server client

%.o: %.cpp
$(CXX) -Wall -DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H $(INC) -c $< -o $@

server: CppServer.o $(GEN_OBJ)
$(CXX) $^ -o $@ -L$(LIB_DIR) -lthrift

client: CppClient.o $(GEN_OBJ)
$(CXX) $^ -o $@ -L$(LIB_DIR) -lthrift

clean:
$(RM) *o server client

相关推荐

易康eCognition9.0分类|规则集和机器学习的方法的面向对象的多尺度分割分类

基于易康eCognition9.0软件的规则集和机器学习的方法的面向对象的多尺度分割分类

weixin_46493028的博客 1万+

php thrift 编译,Thrift 源码编译

Thrfit0.11版本安装构建Apache Thrift IDL编译器环境准备yum install libtool libtool-devel libevent libevent-devel flex byacc byacc-devel boost boost-devel bison bison-devel -y下载wget https://github.com/apache/thrif...

weixin_26965807的博客 269

CSIT883系统分析与项目管理——Lecture3重点概念

🎈本节课,介绍了项目集成管理当中,关于NPV这个概念相关的内容,以及介绍什么是系统需求,什么时候需要开始系统需求,如何进行调查系统需求等等相关的题目,这里供大家复习参考吧!还有还有最关键的是NPV的计算,我单独写一篇博文,需要的同学快去学习吧!

AI手套的博客 1090

thrift: error while loading shared libraries: libthriftc.so.0: cannot open shared object file: No su

问题:test@test:~/thrift-0.10.0$  thrift thrift: error while loading shared libraries: libthriftc.so.0: cannot open shared object file: No such file or directory 解决方法:输入:$sudo ldconfig test@test:~/thr

大白机器人的博客 1546

SRAM vs RRAM:存算一体芯片选型指南(含最新技术对比)

本文深入对比了SRAM与RRAM在存算一体芯片设计中的核心差异,为硬件工程师和架构师提供实战选型指南。文章从技术本质、性能、功耗、成本及设计风险等多维度剖析,指出SRAM基于成熟CMOS工艺,适合高精度、低延迟场景;而RRAM凭借非易失性和高密度潜力,在超低功耗、固定模型应用中优势明显。决策需综合项目预算、上市时间及技术储备。

e4f5g6h的博客 939

用Python玩转共现分析:从NLTK到热力图可视化(附完整代码)

本文详细介绍了如何使用Python进行文本共现分析,从NLTK基础文本处理到构建共现矩阵,并实现热力图可视化。通过完整的代码示例,帮助数据分析师和开发者掌握这一揭示词语间关联网络的实用NLP技术,快速从文本中提取语义关系和主题结构。

weixin_29313817的博客 349

Thrift最新版thrift-0.12.0在Ubuntu 16.04下的build和install及问题解决

Thrift当前最新版是0.12.0,到http://thrift.apache.org/页面右边Download个thrift-0.12.0.tar.gz压缩包,到Linux下解压,或者执行 git clone https://github.com/apache/thrift.git下载源码到本地,按照http://thrift.apache.org/docs/install/到提示,根据你到...

XCCCCZ的博客 3670

PPT| 公司网络安全意识培训 P73

近年来,随着互联网的不断发展,网络安全问题也日益凸显,各种网络安全事件层出不穷,对个人和企业的信息安全带来了巨大的威胁。针对这一现状,国家加强了对信息安全的保护,相继颁布了多项法律法规,其中最重要的就是网络安全法。本文将从网络安全法和其他相关法律入手,对信息安全的保护措施进行深入分析。 本人在四大咨询机构从事咨询工作多年,二十年一线数字化规划咨询经验,提供制造业数智化转型规划服务,顶层规划/企业架构/数据治理/数据安全解决方案资料干货. 该PPT共73页,原文获取及来源公众号:【智能制造数字化咨询】

waldensss的博客 1422

thrift php 编译,Thrift 源码编译

Thrfit0.11版本安装构建Apache Thrift IDL编译器环境准备yum install libtool libtool-devel libevent libevent-devel flex byacc byacc-devel boost boost-devel bison bison-devel -y下载wget https://github.com/apache/thrif...

weixin_31976493的博客 208

RAP BDL 里的 field ( readonly ) 到底控制了什么?——从语法到运行时的全景解析

RAP行为定义中的只读字段控制 摘要:该代码片段展示的是RAP(ABAP RESTful Application Programming)行为定义语言(BDL)中的字段控制语法,用于声明业务对象中需由框架自动维护的只读字段。field ( readonly )语句将订单ID和审计字段(CreatedBy/CreatedAt等)标记为只读,确保这些字段在更新阶段不可修改。在managed场景下,RAP框架会自动处理这些行政性数据的写入:创建时填充创建信息,更新时刷新变更记录,并利用LocalLastChang

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 154

高通平台 Android T 蓝牙技术全解析:A2DP 与 AVRCP 核心代码路径与交互流程

A2DP 接收端 - 连接流程(AVDTP 打开)

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 288

make编译五

Make的运行 有时候,我们不想让我们的makefile 中的规则执行起来,我们只想检查一下我们的命令,或是执行的序列。于是我们可以使用make 命令的下述参数: “-n” “--just-print” “--dry-run” “--recon” 不执行参数,这些参数只是打印命令,不管目标是否更新,把规则和连带规则下的命令打印出来,但不执行,这些参数对于我们调试makefil...

dianjie9145的博客 357

这款值68亿的游戏,你不实战一下吗?安排!

本文介绍了如何使用Cocos开发传送带像素消除类游戏。游戏包含像素画、传送带、炮台等核心元素,需要先解析图片生成像素数据,再通过关卡编辑器设计关卡机制。炮台会在传送带上环绕运动,发射子弹消除匹配颜色的像素点。文章详细讲解了游戏对象实现方法,包括像素生成、传送带运动轨迹、炮台瞄准算法等,并展示了实战效果。完整源码已集成到亿元Cocos小游戏实战合集中,适合对像素消除游戏开发感兴趣的开发者参考。

lsw_Cs的博客 438

Apache Thrift的简单使用

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

lemo的专栏 6万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

java学习总结——Apache thrift的.thrift文件的编写

在使用apache的thrift时,第一步是需要编写thrift的接口描述文件(.thrift)。thrift文件的格式语法如下: include "share.thrift" //引入其他的thrift文件 /** * 命名空间,也就是生成代码之后的package * namespace 语言名 空间名 **/ namespace java com.study.netty.thrift

qq_36372507的博客 3290

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【Apache Thrift】windows下thrift的安装(一)

概述   Thrift最初由Facebook开发的,后来提交给了Apache基金会将Thrift作为一个开源项目。当时facebook开发使用它是为了解决系统中各系统间大数据量的传输通信以及系统之间语言环境不同需要跨平台的特性,所以Thrift是支持跨语言,比如C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Ja

程序员小毛驴的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Apache Thrift Golang 实践

Apache Thrift Golang 实践

Stefan的博客 605

SpringBoot整合Apache Thrift

目前缺乏Spring Boot与Apache Thrift的整合包,因此自己造了一个轮子。可以应对相对简单的RPC调用场景

mgsky1的博客 3122

Apache Thrift教程

Apache Thrift教程下载Apache Thrift构建并安装Apache Thrift编译器和库编写.thrift文件生成Thrift文件到源代码客户端和服务端示例 下载Apache Thrift 首先,下载Thrift的副本。 构建并安装Apache Thrift编译器和库 然后,您将需要构建Apache Thrift编译器和库。 ./configure &amp;&amp; make 这还将为多种语言编译教程客户端和服务端。 有关此步骤的任何帮助,请参见从源代码构建指南。 编写.thrift

ccf19881030的专栏 821

Apache Thrift学习(2):Thrift使用入门

安装Thrift 在官网下载编译器:https://thrift.apache.org/download 我本机是windows,下载后的文件解压出 thrift-0.13.0.exe,重命名为:thrift.exe,随便放在一个路径下即可。 配置系统变量Path: 测试安装是否成功: .thrift 文件编写 《Apache Thrift学习(1):Thrift详细介绍》中介绍了 .thrift 文件的构成,这里不在赘述,详细的文档请大家查阅官网。 //java的包名 name

保暖透气大裤衩LeoLee的博客 729

Apache Thrift 使用指南

Apache Thrift 使用指南 Apache Thrift 是一个跨语言的服务开发框架,它允许你定义数据类型和服务接口,并且生成源代码,使得这些服务能够在不同的编程语言之间无缝通信。Thrift 设计初衷是为了高效、灵活地处理大规模分布式系统中的数据交换问题,它极大地简化了构建分布式系统的过程。 1. 项目介绍 Apache Thrift 是由 Facebook 开发并捐赠给 Apache ...

gitblog_00366的博客 1065

Apache Thrift介绍

文章目录1、简介2、Thrift IDL2.1、基本类型2.2、结构体struct2.3、容器Container2.4、枚举enum2.5、常量定义2.6、类型定义2.7、异常Exception2.8、服务定义类型Service2.9、名字空间NameSpace2.10、注释Comment2.11、include 1、简介 thrift官网 Apache Thrift软件框架用于可伸缩的跨语言服务...

weixin_44240370的博客 1440

Apache Thrift基本使用介绍

基本介绍 Thrift 是用于点对点 RPC 实现的轻量级、独立于语言的软件堆栈。 Thrift 为数据传输、数据序列化和应用程序级处理提供了清晰的抽象和实现。 代码生成系统将简单的定义语言作为输入,并生成跨编程语言的代码,这些编程语言使用抽象堆栈来构建可互操作的 RPC 客户端和服务器。 Thrift 使以不同编程语言编写的程序可以轻松共享数据和调用远程过程。 Thrift 支持 28 种编程语言,很有可能支持您当前使用的语言。 Thrift 专门设计用于支持跨客户端和服务器代码的非原子版本更改。 这使

从大数据到人工智能的博客 1298

Apache Thrift入门(安装、测试与java程序编写)

Apache thrift开发入门,开发环境的搭建,hello world的编写。

云原生社区博客分享 5019

Apache Thrift 配置和使用指南

Thrift 安装Mac 下 Thrift 安装快速安装使用 Mac 的包管理器 Homebrew。首先安装 Homebrew:ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"使用 Homebrew 安装 thrift:brew install thrift如需手动安装特定版本,请参考以下若干小节。

Chris's Notes 2358

Apache thrift 安装测试

转:https://blog.csdn.net/yuchno1/article/details/78797692 下载并安装依赖项1.我们需要首先下载boost 1.65.0, OpenSSL for Windows, Win flex-bison, libevent并安装/解压它们.2.解压boost包,依次执行bootstrap.bat和b2.exe进行编译,然后添加环境变量BOOST...

xuq09的专栏 329
上一篇: Apache Thrift 学习第一篇(架构&介绍)
下一篇: Python 新手学习列表
「已注销」
博客等级 码龄16年 1粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值