首页 > 其他分享 >手写简单的RPC

手写简单的RPC

时间:2024-04-18 20:45:42浏览次数:21  
标签:java new RPC 简单 import 手写 com public myrpc

手写简单的RPC

1.何为RPC

RPC(Remote Procedure Call,远程过程调用)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

2.工作原理

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送应答信息,然后等待下一个调用信息,最后,客户端调用进程接收应答信息,获得进程结果,然后调用执行继续进行。

3.架构描述

本例通过服务生产者(provider)服务消费者(comsumer)服务框架(framework)三个模块实现简单的RPC案例。

其中服务生产者者负责提供服务,服务消费者通过http请求去调用服务提供者提供的方法,服务框架负责处理服务消费者调用服务提供者的相关逻辑处理。

image

本例中,消费端需要调用接口ProviderService.class 中的某个方法。生产者模块提供了其具体实现类ProviderServiceImpl.class ;最后,消费者需要通过RPC去调用生成者提供的这个方法。

废话不多说,直接上代码!

4.服务生产者具体实现

相关文章

  • browserless 屏幕捕捉以及pdf 导出简单试用
    基于browserless以及puppeteer我们可以快速的进行屏幕捕捉生成图片以及导出pdf文件,以下是一个简单的试用环境准备docker-composeversion:"3"services:app:image:browserless/chrome:latestports:-"3000:3000"......
  • dremio SchemaMutability 简单说明
    dremioSchemaMutability属于一个枚举,定义了schema的可变性能力()参考定义publicenumSchemaMutability{@Tag(1)ALL(true,true,true,true), @Tag(2)NONE(false,false,false,false), @Tag(3)SYSTEM_TABLE(false,true,false......
  • nmap的简单使用
    Nmap是一款开源免费的网络发现(NetworkDiscovery)和安全审计(SecurityAuditing)工具。软件名字Nmap是NetworkMapper的简称Nmap下载地址:http://nmap.org/download.html nmap包含四项基本功能:1.主机发现(hostDiscovery)2.端口扫描(PortScanning)3.版本侦测(VersionDetec......
  • dbt flags 变量简单说明
    通过flags可以使用dbtcli的一些参数,比较常用的是对于增量物化处理的场景参考使用{%ifflags.FULL_REFRESH%}droptable...{%else%}--no-op{%endif%}说明支持的参数都在flags中可以看看,一些dbtadapter的实现都会使用到此变量参考......
  • 【安卓逆向】从逆向登录协议开始到frida rpc的初探
    本来是闲着无聊逆向一下喜马拉雅的登录协议日常抓包,分析数据包,有一个password字段想分析一下这个password这个字段,jadx搜索一下啊 经过frida多次的hook定位,发现这个方法便是加密过程,点进去可以hook一下这个方法查看一下functionhook(){letLoginRequest=Java.......
  • React 简单登录平台Demo(0):环境配置
    目录前言Create-react-app环境配置文件路径添加组件添加tailWindcss文件tailwind.config.js添加compilecss目标常见错误添加路由简单路由添加复杂路由添加LoginPageMainPagerouter.js总结前言这次用React简单写一个登录网页的DemoCreate-react-app环境配置create-react-app......
  • Unity超简单2步制作列表组件方法
    1、创建画布(Canvas),并创建UI→滚动视图(ScrollView);2、展开Viewport,选中Content,添加组件GridLayoutGroup和ContentSizeFitter;单元格大小Y修改每一个列表项的高度,到这里列表组件就制作好了。下面是制作列表项。3、右键Content,创建空物体GameObject,改名为item;4、右键item,U......
  • 图像简单处理
    需求:对上面多张这样的图像,将成员识别出来,读取本周活跃值。生成一张全部由成员组成的大图思路:使用OpenCVSharp进行目标区域边框检测,根据大小过滤目标区域。使用Tesseract对指定位置进行文字识别(貌似识别精度不高,有乱码。)主要代码usingSystem;usingSystem.Collections.Gener......
  • springboot简单正确的使用构造函数注入
    一个一个写构造函数太麻烦了,而且代码会显得非常多,这里我们可以采用lombok快捷注入但是我们并不是所有的成员变量都需要进行注入,所以使用@RequiredArgsConstrucotr需要构造函数的部分添加上final关键字"Alwaysuseconstructorbaseddependencyinjectioninyourbeans.Alwa......
  • 30.swagger springboot中简单整理
    类似postman接口在线测试API接口哈哈我也不太懂接口还没前后端整合过呢也就是注释你的各种接口吧可有可无先说依赖问题这个是swagger2的依赖当然出现问题了已经更新到了swagger3了参考:https://cloud.tencent.com/developer/article/1936862https://mvnrepos......