springcloud框架下采用Grpc实现远程过程调用

一、RPC 简介
 参考:
       http://itindex.net/detail/52530-rpc-%E6%A1%86%E6%9E%B6-%E5%88%86%E6%9E%90
 简介:
   RPC(Remote Procedure Call Protocol)——远程过程调用协议。使得程序像访问本地资源一样,去访问远端系统资源。更具体的将,像调用本地api一样,调用远端api。
 
 RPC调用框架 :
     RMI实现: 利用java.rmi包实现,基于Java远程方法协议(Java Remote Method Protocol) 和java的原生序列化。 
     Hessian: 是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 基于HTTP协议,采用二进制编解码。 
     protobuf-rpc-pro : 是一个Java类库,提供了基于 Google 的 Protocol Buffers 协议的远程方法调用的框架。基于 Netty 底层的 NIO 技术。支持 TCP 重用/ keep-alive、SSL加密、RPC 调用取消操作、嵌入式日志等功能。 
     THRIFT: 是一种可伸缩的跨语言服务的软件框架。它拥有功能强大的代码生成引擎,无缝地支持C + +,C#,Java,Python和PHP和Ruby。thrift允许你定义一个描述文件,描述数据类型和服务接口。依据该文件,编译器方便地生成RPC客户端和服务器通信代码。 底层通讯基于SOCKET。 
     AVRO:标准性的云计算的数据交换和 存储的Protocol。支持HTTP,TCP两种协议。
二、GRPC原理 参考:https://juejin.im/entry/59bb30f76fb9a00a616f1b73 背景: 基于HTTP/2之上的二进制协议(Protobuf序列化机制) 一个连接可以多路复用,并发处理多个请求和响应 多语言的类库实现 服务定义文件和自动代码生成(.proto文件和protobuf编译工具) 可以对框架进行功能定制和扩展(例如: 对接Zookeeper,域名解析服务,SLB服务等) 流程: 三、GRPC例子 源码:git@github.com:xiangqian19831224/grpc-example.git 1、client
package com.rpc.mail;
import java.util.concurrent.TimeUnit;
import com.rpc.mail.SendMailServiceGrpc.SendMailServiceBlockingStub;
import io.grpc.ManagedChannel;
import io.grpc.netty.NettyChannelBuilder;

public class GrpcClient {
   public static void main(String[] args) throws Exception {
      ManagedChannel channel = NettyChannelBuilder.forAddress("127.0.0.1", 8080).usePlaintext(true).build();
      //同步调用(异步调用的话,就是:SendMailServiceGrpc.newFutureStub(channel))
      SendMailServiceBlockingStub stub = SendMailServiceGrpc.newBlockingStub(channel);

      //设置请求参数
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值