帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:IMP  protoc  proto  Implementation  JAVA  protocol  
A Java implementation of the TChannel protocol.

  • 源代码名称:tchannel-java
  • 源代码网址:http://www.github.com/uber/tchannel-java
  • tchannel-java源代码文档
  • tchannel-java源代码下载
  • Git URL:
    git://www.github.com/uber/tchannel-java.git
  • Git Clone代码到本地:
    git clone http://www.github.com/uber/tchannel-java
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/uber/tchannel-java
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • 用于JVM的 TChannel

    Build Statuscodecov.ioRelease

    协议的Java实现。

    稳定性:稳定,稳定。稳定。

    stable

    示例

    // create TChannel for server, and register a RequestHandlerTChannel server =newTChannel.Builder("ping-server").build();
    server.makeSubChannel("ping-server")
    . register("ping-handler", newRawRequestHandler() {
     @OverridepublicRawResponsehandleImpl(RawRequestrequest) {
     returnnewRawResponse.Builder(request)
    . setTransportHeaders(request.getTransportHeaders())
    . setHeader("Polo")
    . setBody("Pong!")
    . build();
     }
     });// listen for incoming connectionsserver.listen();// create another TChannel for client.TChannel client =newTChannel.Builder("ping-client").build();RawRequest request =newRawRequest.Builder("ping-server", "ping-handler")
    . setHeader("Marco")
    . setBody("Ping!")
    . build();// make an asynchronous requestTFuture<RawResponse> responseFuture = client
    . makeSubChannel("ping-server").send(
     request,
     server.getHost(),
     server.getListeningPort()
     );// block and wait for the responsetry (RawResponse response = responseFuture.get()) {
     System.out.println(response);
    }// shutdown the channel after doneserver.shutdown();
    client.shutdown();

    概述

    TChannel是一个具有以下目标的网络协议:

    • 请求/响应模型
    • 多个请求跨同一个TCP套接字进行多路复用
    • responses响应
    • 流请求和响应
    • 所有帧 checksummed
    • 传输任意载荷
    • 易于使用多种语言实现
    • 接近redis性能

    这里协议旨在在数据中心网络上运行以进行内部进程通信。

    协议

    TChannel框架具有固定长度头和 3个可变长度字段。 底层协议没有给这些字段赋值,但是包含的客户端/服务器实现使用第一个字段来表示RPC模型中的惟一端点或者函数 NAME 。 接下来的两个字段可以用于任意数据。 一些建议使用 3字段的方法有:

    • URI路径,HTTP方法和标头作为 JSON,正文
    • 函数 NAME,标头,Thrift/protobuf

    但是,请注意TChannel支持的唯一编码是 UTF-8. 如果需要 JSON,则需要在TChannel之外进行stringify和解析。

    设计支持高效路由和转发数据,其中路由信息只需要解析第一个或者第二个字段,但 3rd 字段在不进行解析的情况下。

    插件生成

    mvn clean package

    运行测试

    mvn clean test

    更多示例

    参见示例

    运行Ping服务器/客户端示例:

    mvn package# ping serverjava -cp tchannel-example/target/tchannel-example.jar com.uber.tchannel.ping.PingServer -p 8888# ping clientjava -cp tchannel-example/target/tchannel-example.jar com.uber.tchannel.ping.PingClient -h localhost -p 8888 -n 1000

    拉请求必须有完整的测试,并至少由一个其他参与方审阅。 为了确保没有性能降低,你必须运行基准测试。

    插件发布

    创建一个用于 oss.sonatype.org的帐户。 你可以在这里注册 !

    这将是你对 ~/.m2/settings.xml的凭据,将需要将更改推送到Sonatype索引。

    为Sonatype提供一个票证,以获取发布 com.uber.tchannel 组ID所需的权限。 { 示例 }

    生成和共享PGP签名。

    a 。$ gpg --gen-key

    选择 RSA and RSA (default) 使用 2048位密钥。 到期时间为你的( 但永不过期可能是最简单的选择) 。

    c 。$ gpg --list-secret-keys 将列出你的密钥。

    gpg --list-keys的结果中获取 pub ID,然后执行如下操作 $ gpg --keyserver hkp://pool.sks-keyservers.net --send-keys ******** 上传你的pub 。

    设置

    pom.xml 已经具有所需的配置。 对 ~/.m2/settings.xml 进行以下更改,使用( 1 ) 中的凭据。

    <settings>
     <servers>
     <server>
     <id>ossrh</id>
     <username>your-username-here</username>
     <password>your-password-here</password>
     </server>
     </servers>
    </settings>

    mvn help:effective-settings 将协助清除输入错误。

    运行 make release

    你将看到与在这里的Nexus 存储库管理器的变更相关的活动。 完整版本可以以在 12 -24个小时之间完成,并且可以以从它的他项目中消耗工件。

    Licenced



    文章标签:JAVA  IMP  Implementation  proto  protocol  protoc  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语