OCTO-RPC集成 Thrift 0.11.0

OCTO-RPC集成 Thrift 0.11.0

摘要:OCTO是美团的服务治理框架,2019年开源,主要包括 octo-rpc, octo-portal, octo-mns 三大模块。octo-rpc原生集成了Thrift 0.9.3,本文主要介绍如何集成Thrift 0.11.0版本到octo-prc。

一、环境

Mac, homebrew, git, jdk8, maven3

二、目标

使用zookeeper作为服务的注册中心,不使用octo-mns,不使用cat作为trace

三、Thrift 0.11.0版本安装

目前Thrift最新版本是0.12.0,homebrew里的默认安装版本是0.12.0,未提供0.11.0的版本, 安装Thrift 0.11.0的步骤如下:

  1. 复制formula文件thrift.rb到本地
class Thrift < Formula
  desc "Framework for scalable cross-language services development"
  homepage "https://thrift.apache.org/"
  url "https://www.apache.org/dyn/closer.cgi?path=/thrift/0.11.0/thrift-0.11.0.tar.gz"
  sha256 "c4ad38b6cb4a3498310d405a91fef37b9a8e79a50cd0968148ee2524d2fa60c2"
  bottle do
    cellar :any
    rebuild 1
    sha256 "5b99e08e1a69b6b9e39769982efec86fd773753d39439ca89011e180bcdb9249" => :mojave
    sha256 "3a0d80b8f12a25fc87a4fe58722357c932c320a5d9a79f27346d21bcb956a337" => :high_sierra
    sha256 "85bc8f2f5634985803ae738a548710cb6f0ca71acb0a35b7b2f29631b894820d" => :sierra
  end
  head do
    url "https://github.com/apache/thrift.git"
    depends_on "autoconf" => :build
    depends_on "automake" => :build
    depends_on "libtool" => :build
    depends_on "pkg-config" => :build
  end
  depends_on "bison" => :build
  depends_on "boost"
  depends_on "openssl"
  def install
    system "./bootstrap.sh" unless build.stable?
    args = %W[
      --disable-debug
      --disable-tests
      --prefix=#{prefix}
      --libdir=#{lib}
      --with-openssl=#{Formula["openssl"].opt_prefix}
      --without-erlang
      --without-haskell
      --without-perl
      --without-php
      --without-php_extension
      --without-ruby
      --without-java
      --without-python
    ]
    ENV.cxx11 if ENV.compiler == :clang
    # Don't install extensions to /usr:
    ENV["PY_PREFIX"] = prefix
    ENV["PHP_PREFIX"] = prefix
    ENV["JAVA_PREFIX"] = buildpath
    system "./configure", *args
    ENV.deparallelize
    system "make"
    system "make", "install"
  end
  test do
    system "#{bin}/thrift", "--version"
  end
end
复制代码
  1. 如果已经安装其他版本,先卸载,brew uninstall thrift

    brew install ./thrift.rb

  2. 查看安装是否成功

    thrift --version


四、octo-rpc集成Thrift 0.11.0

  1. 代码下载

    git clone github.com/Meituan-Dia…

  2. 升级Thrift 版本到0.11.0, 更新 dorado/pom.xml

    <libthrift.version>0.11.0</libthrift.version>

  3. 注解mns-invoker依赖

     <!-- 
         <dependency>
             <groupId>com.meituan.octo</groupId>
             <artifactId>mns-invoker</artifactId>
             <exclusions>
                 <exclusion>
                     <artifactId>libthrift</artifactId>
                     <groupId>org.apache.thrift</groupId>
                 </exclusion>
             </exclusions>
         </dependency>
     -->
    复制代码
  4. 使用thrift 0.11.0生成代码, gen_thrift.sh脚本文件放置在 octo-rpc/dorado 目录下,执行命令 chmod +x gen_thrift.sh & ./gen_thrift.sh

     #!/bin/bash
     
     #dorado/dorado-test/dorado-test-api
     files=$(ls dorado-test/dorado-test-api/src/main/resources/thrift/)
     for filename in $files
     do
         echo $filename
         thrift --gen java dorado-test/dorado-test-api/src/main/resources/thrift/$filename
     done
     cp -rf gen-java/* dorado-test/dorado-test-api/src/main/java/
     rm -rf gen-java
     
     # dorado-protocol-octo
     files=$(ls dorado-protocol/dorado-protocol-octo/src/main/resources/idl/)
     for filename in $files
     do
        echo $filename
        thrift --gen java dorado-protocol/dorado-protocol-octo/src/main/resources/idl/$filename
     done
     cp -rf gen-java/* dorado-protocol/dorado-protocol-octo/src/main/java/
     rm -rf gen-java
    
    复制代码
  5. 更新类com.meituan.dorado.serialize.thrift.ThriftIDLSerializer.java, 不兼容导致

    TApplicationException.read(protocol) -> TApplicationException.readFrom(protocol)
    复制代码
  6. 模块编译

    mvn clean install -Dmaven.test.skip=true -pl -dorado-registry/dorado-registry-mns,-dorado-trace/dorado-trace-cat

  7. 整体打成一个jar包

    cd dorado-build && mvn clean install -Dmaven.test.skip=true

转载于:https://juejin.im/post/5d01fd2bf265da1b7004a3ad

猜你喜欢

转载自blog.csdn.net/weixin_34380296/article/details/93182070
今日推荐