使用Google ProtoBuff完成RPC服务的通信

本文介绍了如何利用Google Protobuf与Netty构建RPC服务的通信过程。首先讲解了RPC与RMI、Web Service的区别,然后阐述了Protobuf的学习路径和作用。通过详细步骤,包括下载Protobuf编译器、编写.proto文件、生成代码,以及搭建Netty服务器和客户端,展示了如何集成Protobuf完成RPC方法调用。
摘要由CSDN通过智能技术生成

需求:
    使用netty完成一个RPC服务器的编写和调用,在通信的过程中使用protobuff来传递数据
前提:
    protobuff官网:https://developers.google.com/protocol-buffers/ (需要翻墙)
困惑:
    RPC和RMI的区别?
        原理都是类似的,只是RMI是使用Java编写的不能跨语言,RPC是支持跨语言的
    RPC和webservice的区别
        webservice 使用http协议进行通信,RPC使用socket进行通信,socket效率更高
        webservice使用xml进行数据通信,xml最臭名昭著的就是比较占空间,而且遍历和查找很不方法,rpc使用体积更小,速度更快,解析更强的框架进行数据传递(数据的压缩比决定了数据的大小),日入使用Google protobuff 、grpc、apache thrift等。
protobuf 的学习过程
    1. 首先找到官网学习一下什么是protobuf

 

   2. 下载protobuf的编译器(https://github.com/google/protobuf)

  3. 配置protobuff编译器的环境变量

  4. 阅读protobuff的文档(https://developers.google.com/protocol-buffers/docs/javatutorial)

       编写protobuff程序主要有散步

 

   5. protobuff解决的问题

 

netty集成protobufff完成RPC的方法调用

实现步骤:

1. 进入protobuff需要jar包

 

2. 编写protobuff的.proto文件(该文件我们也成为idl(interface description language)文件)

 

[Java] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<font style="color:rgb(77, 77, 77)"><font face="&quot;"><font style="font-size:16px">syntax = "proto2";
package com.baidu.netty.proto;
option java_package = "com.baidu.netty.sixExample";
option java_outer_classname = "TeacherData";
option optimize_for=SPEED;
  
message Teacher
{
    required int32 id = 1;
    optional string name = 2;
  
    enum GenderType
    {
        MALE = 0;
        FEMALE = 1;
    }
    message Student
    {
        required int32 id = 1;
        optional string name = 2;
        optional string email = 3;
        optional GenderType gender = 4 [default = MALE];
    }
}</font></font></font>

 

3. 使用protobuff的编译器生产代码(几乎所有的RPC框架都有代码生成框架)

    protoc --java_out=代码存放的目录  .proto文件存放的位置

4. 简单测试生成的类是否能够使用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值