美文网首页
RPC服务框架Apache Thrift学习笔记--简单示例

RPC服务框架Apache Thrift学习笔记--简单示例

作者: 2hanson | 来源:发表于2016-12-02 13:51 被阅读0次

    前置声明:
    如果读者还没安上一篇文章的流程安装好Thrift,那建议您先看上一篇文章

    开始示例:
    第一步:首选创建一个后缀为.thrift文件,取名为tutorial.thrift
    文件内容如下图1,大致功能是有个叫Tutorial的服务,它有一个ping的接口,返回一个32为的有符号整数:



    图1
    第二步:用Thrift自动生成相应语言的代码,比如C++, Python, PHP等对应的server端以及client端代码,而且能在它们之间无缝的结合

    C++

    thrift --gen cpp tutorial.thrift
    
    这个命令之后就会在当前目录下多出 gen-cpp目录

    Python

    thrift --gen py tutorial.thrift
    

    这个命令之后就会在当前目录下多出 gen-py目录
    PHP

    thrift --gen php tutorial.thrift
    

    这个命令之后就会在当前目录下多出 gen-php目录
    第三步:运行相应的server服务以及和client端进行通信(server和client是可以混搭的,下面会介绍用python的client和C++的server进行通信)

    C++ Server
    改下红框里的代码


    g++ -DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H -Wall -I/usr/local/include/thrift *.cpp -L/usr/local/lib -lthrift -o simple_server
    

    然后运行可执行文件就能起服务了

    ./simple_server
    

    C++ Client
    Thrift不会像Server那样自动生成Client的文件,需要自己改


    g++ -Wall -I/usr/local/include/thrift -c client.cpp -o client.o
    g++ -Wall -I/usr/local/include/thrift -c Tutorial.cpp -o Tutorial.o
    g++ -Wall -I/usr/local/include/thrift -c tutorial_constants.cpp -o tutorial_constants.o
    g++ -Wall -I/usr/local/include/thrift -c tutorial_types.cpp -o tutorial_types.o
    g++ -L/usr/local/lib client.o Tutorial.o tutorial_constants.o tutorial_types.o -o client -lthrift
    

    然后运行可执行文件就能调用服务器接口了

    ./client
    

    会返回Hello World
    Python Server



    执行运行:

    python server.py
    

    Python Client



    用python的client和C++的server进行通信:



    其他:

    运行C++的时候可能会报、error:./CppServer: error while loading shared libraries: libthrift-1.0.0-dev.so: cannot open shared object file: No such file or directory
    解决方法:
    1、使用find命令查找缺失的libthrift-1.0.0-dev.so共享库文件所在位置:find /usr/local/ -name "libthrift-1.0.0*”
    2、将找到的目录位置写入 /etc/ld.so.conf 配置文件,这个文件记录了编译时使用的动态链接库的路径,使用命令:sudo vim /etc/ld.so.conf ,在末尾增加报错文件的路径
    3、然后使用ldconfig命令,使配置生效
    4.再运行测试程序正常
    参考文章:
    http://thrift.apache.org/tutorial/
    http://blog.csdn.net/ceasadan/article/details/52277136

    相关文章

      网友评论

          本文标题:RPC服务框架Apache Thrift学习笔记--简单示例

          本文链接:https://www.haomeiwen.com/subject/mcxqmttx.html