微服务学习之thrift介绍安装

阅读本文大约需要2分钟。

最近在做一个docker+Kubernetes微服务容器化实战项目,项目中用到了很多不熟悉的组件,也遇到了挺多的问题。项目结构是这样的:

在做信息服务的时候需要安装thrift组件,遇到了点儿问题,特此记录下过程。

首先来说一下thrift:

什么是thrift?

简单来说,是Facebook公布的一款开源跨语言的RPC框架.

什么是RPC框架?

RPC全称为Remote Procedure Call,意为远程过程调用,常用的rpc框架有thrift、dubbo、grpc、motan等。

假设有两台服务器A,B。A服务器上部署着一个应用a,B服务器上部署着一个应用b,现在a希望能够调用b应用的某个函数(方法),但是二者不在同一个进程内,不能直接调用,就需要通过网络传输,在AB服务器之间建一条网络传输通道,a把参数传过去,b接收到参数调用自己的方法,得到结果,再通过网络传回给a,简单讲就是A通过网络来调用B的过程.这个过程要涉及的东西很多,比如多线程,Socket,序列化反序列化,网络I/O,很复杂,于是牛掰的程序员把这些封装起来做成一套框架,供大家使用,就是RPC框架。     

thrift的跨语言特型

thrift通过一个中间语言IDL(接口定义语言)来定义RPC的数据类型和接口,这些内容写在以.thrift结尾的文件中,然后通过特殊的编译器来生成不同语言的代码,以满足不同需要的开发者,比如java开发者,就可以生成java代码,c++开发者可以生成c++代码,生成的代码中不但包含目标语言的接口定义,方法,数据类型,还包含有RPC协议层和传输层的实现代码.

thrift的协议栈结构

thrift是一种c/s的架构体系.在最上层是用户自行实现的业务逻辑代码.第二层是由thrift编译器自动生成的代码,主要用于结构化数据的解析,发送和接收。TServer主要任务是高效的接受客户端请求,并将请求转发给Processor处理。Processor负责对客户端的请求做出响应,包括RPC请求转发,调用参数解析和用户逻辑调用,返回值写回等处理。从TProtocol以下部分是thirft的传输协议和底层I/O通信。TProtocol是用于数据类型解析的,将结构化数据转化为字节流给TTransport进行传输。TTransport是与底层数据传输密切相关的传输层,负责以字节流方式接收和发送消息体,不关注是什么数据类型。底层IO负责实际的数据传输,包括socket、文件和压缩数据流等。

下面介在Centos7.2上安装thrift:

Thirft下载安装:

这里安装源码包,即后缀是tar.gz 或者.tgz包:

wget http://mirrors.tuna.tsinghua.edu.cn/apache/thrift/0.11.0/thrift-0.11.0.tar.gz

查看README和INSTALL文件,根据README和INSTALL文件,查看thrift安装说明以及thrift依赖的软件包,然后解压源码包:

tar -zxf thrift-0.11.0.tar.gz

源码包第一步需要先执行以下命令,tarball(即后缀是.tar的包)不需要:

./bootstrap.sh

然后直接运行软件根目录下的configure脚本

./configure

查看回显,显示java和python、go编译yes,其他的no编译。

因为我只需要编译java和python、go,其他的可以忽略不管。

这里需要提前安装go的环境,可以参考:https://www.jianshu.com/p/b2222fc04f47

这里有一点需要注意,本来已经安装了jdk,用java -version看到的版本1.8的jdk。

但是./configure执行完java还是no。然后查看configure文件里有如下的代码:

大概意思是thrift编译java需要jdk和ant,然后再执行ant -version发现确实没有安装ant。那就安装ant呗:

安装ant:

这里顺便安了一下maven。

wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
yum -y install apache-maven
yum -y install ant

ant安装好了:

如果你也遇到./configure执行完java后面是no的情况,你就得首先检查jdk和ant了。

下面继续执行安装thrift的步骤:

#使用make命令进行编译
make
#使用make install命令进行安装
make install

最后验证:

输入thrift -version命令,查看输出信息判断thrift是否安装成功

$ thrift -version
Thrift version 0.11.0

如上回显,说明thrift安装成功,至此,你可以利用thrift进行开发实现。

windows安装请参考:

https://www.jianshu.com/p/42e4b5919434

原文发布于微信公众号 - 我的小碗汤(mysmallsoup)

原文发表时间:2018-09-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏琦小虾的Binary

Ubuntu环境如何上传项目到GitHub网站?

Ubuntu环境如何上传项目到GitHub网站? 之前笔者写了一篇《CMake学习笔记(三)——以笔者的Robosub竞赛为例》的博客。博客中笔者以自己的项目为...

32280
来自专栏重庆的技术分享区

Git入门

Git由Linus Torvalds为Linux内核开发设计和开发。Git为非线性分布式开发提供支持,允许多个贡献者同时处理项目。Git是最流行的分布式版本控制...

21020
来自专栏信安之路

Java代码审计-铁人下载系统

初学 java 代码审计,跟着表哥们脚步,走一遍审计流程,就选了个没有使用 Java 框架的 java 系统,作为入门。

12400
来自专栏存储

spring boot redis分布式锁

随着现在分布式架构越来越盛行,在很多场景下需要使用到分布式锁。分布式锁的实现有很多种,比如基于数据库、zookeeper等,本文主要介绍使用Redis做分布式锁...

70750
来自专栏性能与架构

为 Redis 添加 JSON 数据类型

1. 简介 Redis 本身有比较丰富的数据类型,例如 String、Hash、Set、List JSON 是我们常用的数据类型,当我们需要在 Redis 中...

1.6K60
来自专栏分布式系统和大数据处理

Kafka分布式消息系统(搭建Kafka集群) - Part.3

在前面两篇文章中,我们了解了基本概念,也安装、配置好了zookeeper集群,在这篇文章中,我们将一步步搭建kafka集群。

15030
来自专栏程序员同行者

Linux 双网卡绑定

87540
来自专栏木头编程 - moTzxx

CentOS下(rsync+crontab)触发式实现服务器间的文件备份同步

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

28620
来自专栏HappenLee的技术杂谈

NFS服务器的安装与配置

由于实验室的项目需要实现在CephFS之上建立NFS之上,所以记录一下NFS服务器的安装与配置流程。

37840
来自专栏乐沙弥的世界

Nginx 概述及日常管理

Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发...

9410

扫码关注云+社区

领取腾讯云代金券