C/C++教程

【备战春招】第14天 实现RPC框架

本文主要是介绍【备战春招】第14天 实现RPC框架,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称:实现RPC框架

课程章节:第1章 理论篇

课程讲师: 司马极客

课程内容:

一、理论篇

1、RPC概念

  • RPC: 

Remote Procedure Call,远程过程调用。

分布式系统常见的一种通信方法,从跨进程到跨物理机已经有几十年的历史。

  • 跨进程交互形式:

RESTfull、WebService、HTTP、基于DB做数据交换、基于MQ做数据交换,以及RPC。

2、图解交互形式

https://img4.sycdn.imooc.com/63f3939f0001efa213040734.jpg

  • 现有框架对比

https://img1.sycdn.imooc.com/63f393a9000153f413040736.jpg

3、核心原理

  • 整体架构

https://img4.sycdn.imooc.com/63f393af0001ae6014500814.jpg

  • 调用过程

https://img1.sycdn.imooc.com/63f393c40001aedd14500816.jpg

4、技术栈

  • 基础知识:JavaCore、Maven、反射

  • 动态代理(生成Client存根实际调用对象):JAVA自带的动态代理

  • 序列化(JAVA对象与二进制数据互转):

  • fastjson

  • 序列化:Java对象转为二进制数组

  • 反序列化:二进制数组转为Java对象

  • 多络通信(传输序列化后的数据):jetty、URLConnection

二、实战篇

1、类图

五个模块:协议模块、Server模块、Client模块、序列化模块、网络模块

《图片》

2、创建工程

rpc-client,Client模块;

rpc-codec,序列化模块;

rpc-common,公用方法模块;

rpc-proto,server与client间协议定义所属模块;

rpc-server,对service进行管理;

rpc-transport,网络通信模块;

https://img3.sycdn.imooc.com/63f393dc0001d9b914440814.jpg

https://img3.sycdn.imooc.com/63f393e500017ea314020816.jpg

3、pom依赖设置&lombok配置

  • 引入依赖及工程编译的版本

https://img1.sycdn.imooc.com/63f393f1000168c414480816.jpg

  • 定义依赖的版本

https://img3.sycdn.imooc.com/63f393fc0001b9be14500816.jpg

  • lombok插件安装

https://img2.sycdn.imooc.com/63f394040001383f14480816.jpg

4、各模块定义类

1)server至client的协议类

定义Peer类,表示网络传输的一个端点,两个变量:hosts、port;

定义ServiceDescriptor类,表示服务,四个变量:clazz、method、returnType、parameterTypes;

定义Request类,表示RPC的一个请求,两个变量:ServiceDescriptor类对象service、Object数组parameters;

定义Response类,表示RPC的返回,三个变量:服务返回编码code、具体的错误信息message、返回的数据data;

2)反射工具类

定义ReflectionUtils类,包含三个方法,

newInstance根据class创建对象、getPublicMethods获取某个class的共有方法、invoke调用指定对象的指定方法

3)序列化模块

定义Encoder序列化、Decoder反序列化接口,基于json的序列化、反序列化的实现JSONEncoder、JSONDecoder

继续进行网络模块实现client、server

实现server模块、client模块

5、案例验证

  • server启动

https://img1.sycdn.imooc.com/63f394240001bacc14500816.jpg

https://img1.sycdn.imooc.com/63f3942a000145fb14540816.jpg

  • client调用

https://img1.sycdn.imooc.com/63f3943200019f4514540820.jpg

课程收获:

对RPC的调用过程有了初步的认识,不过对于各种跨进程的调用形式间的差异仍不太清楚,还需继续学习了解。


这篇关于【备战春招】第14天 实现RPC框架的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!