第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

微服務(wù)進(jìn)程間通信之Thrift

標(biāo)簽:
微服務(wù)

微服务进程间的通信可以是同步的消息调用,也可以是异步的.
异步的调用,我们一般使用消息队列
那么同步的调用中, 比较流行的解决方案是 REST和Thrift

下面介绍下thrift:

Apache Thrift 是一个编写跨语言RPC客户机和服务器的框架。Thrift为定义api提供了一个C风格的IDL。使用Thrift编译器生成客户端存根和服务器端框架。编译器为各种语言生成代码,包括c++、Java、Python、PHP、Ruby、Erlang和Node.js。

Thrift接口由一个或多个服务组成。服务定义类似于Java接口。它是一组强类型方法。Thrift方法可以返回一个(可能是空的)值,也可以定义为单向方法。返回值的方法实现交互的请求/响应样式。客户端等待响应并可能抛出异常。单向方法对应于交互的通知样式。服务器不发送响应。

Thrift支持各种消息格式:JSON、二进制和压缩二进制。二进制比JSON更有效,因为它的解码速度更快。而且,顾名思义,压缩的二进制是一种高效的空间格式。当然,JSON对人类和浏览器都很友好。Thrift还为您提供了多种传输协议的选择,包括原始TCP和HTTP。原始TCP可能比HTTP更有效。然而,HTTP是防火墙、浏览器和人类友好的。

下面是Thrift架构:

图片描述

Thrift便于不同语言间共享数据和调用, 目前已经支持28中程序设计语言.
Thrift是专门为支持跨客户机和服务器代码的非原子版本更改而设计的。我们可以升级服务器,同时仍然能够服务老客户端;或者让新客户端向旧服务器发出请求。

为了更形象地了解 Thrift, 下面是一个简单的Demo(这个Demo来自Thrift官网的Tutorial):

  1. 使用Thrift需要三步, 第一步就是定义thrift接口文件, 同时通过Thrift编译器来生成对应的代码.

例如, 生成Java代码:

thrift -r --gen java tutorial.thrift

将生成的代码导入Eclipse:

图片描述

  1. 编写Client代码

建立连接,直接调用:

try {
      TTransport transport;
      if (args[0].contains("simple")) {
        transport = new TSocket("localhost", 9090);
        transport.open();
      }
      else {
        /*
         * Similar to the server, you can use the parameters to setup client parameters or
         * use the default settings. On the client side, you will need a TrustStore which
         * contains the trusted certificate along with the public key. 
         * For this example it's a self-signed cert. 
         */
        TSSLTransportParameters params = new TSSLTransportParameters();
        params.setTrustStore("../../lib/java/test/.truststore", "thrift", "SunX509", "JKS");
        /*
         * Get a client transport instead of a server transport. The connection is opened on
         * invocation of the factory method, no need to specifically call open()
         */
        transport = TSSLTransportFactory.getClientSocket("localhost", 9091, 0, params);
      }

      TProtocol protocol = new  TBinaryProtocol(transport);
      Calculator.Client client = new Calculator.Client(protocol);

      perform(client);

      transport.close();
    } catch (TException x) {
      x.printStackTrace();
    } 
  1. 编写Server代码

设定一个监听的端口, 处理Client的请求.

try {
      TServerTransport serverTransport = new TServerSocket(9090);
      TServer server = new TSimpleServer(new Args(serverTransport).processor(processor));

      // Use this for a multithreaded server
      // TServer server = new TThreadPoolServer(new TThreadPoolServer.Args(serverTransport).processor(processor));

      System.out.println("Starting the simple server...");
      server.serve();
    } catch (Exception e) {
      e.printStackTrace();
    }
  1. 启动Server, 运行Client, 这样Client就可以RPC调用Server.

以上,Thrift, 很广泛的应用于微服务架构中,欢迎讨论!

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消