微服务学习之thrift介绍安装
最近在做一个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
原文发布时间为:2018-09-19
本文作者:小碗汤
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Redis不懂,面试担心不过,一次性解决面试Redis题目(含答案)?
Redis是一个非常火的非关系型数据库,火到什么程度呢?只要是一个互联网公司都会使用到。Redis相关的问题可以说是面试必问的,下面我从个人当面试官的经验,总结几个必须要掌握的知识点。 介绍:Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。 传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式而分布式一般遵循 CAP 定理。 String字符串: 格式: set key value string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。 string类型是Redis最基本的数据类型,一个键最大能存储512MB。 Hash(哈希) 格式: hmset name key1 value1 key2 value2 Redis hash 是一个键值(key=>value)对集合。 Redis hash是...
- 下一篇
如何把一个运行完好的Kafka搞崩
Kafka其实也只是一个JVM进程,要想把一个进程搞崩溃,相信大家的nice idea(骚操作)也不少。本文中只是用了一种很常见的方式来使得Kafka的进程崩溃,通过分析崩溃的原因来让我们可以更合理的使用Kafka。 你可以试着在一台普通的Linux机器上创建10000个分区的主题。比如下面示例中创建一个主题topic-bomb: 执行完成之后你可以检查一下Kafka的进程是否还存在(比如通过jps命令或者ps -aux|grep kafka命令)。一般情况下,你会发现原本运行完好的Kafka服务已经崩溃。此时,你或许会想到,创建这么多个分区,是不是内存不够而引起的进程崩溃,我在启动Kafka的时候将JVM堆设置的大一点是不是就可以解决了。其实不然,创建这点儿分区而引起的内存增加完全不足以让Kafka畏惧。 想要知道真相,我们可以打开Kafka的服务日志文件($KAFKA_HOME/logs/server.log)来一探究竟,你会发现服务日志中出现大量的如下异常: 异常中最关键的信息是:“Too many open flies”,这是一种常见的Linux系统错误,通常意味着文件描述...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境