RPC框架手撕之路---初步了解RPC(小白勿喷)

lzy
• 阅读 1085

博主小菜鸡一只,目前研二上学期,之前对rpc框架了解不多,想课余时间丰富一下自己的java知识,通过该系列博客勉励自己,内容对大佬来说可能过于简单,还请轻喷,谢谢。

初步理解:

RPC是指远程过程调用,通过网络从远程计算机程序上请求服务,此框架需要做到的是——使得客户端直接调用服务端的方法就像调用本地方法一样简单,所以一般不涉及到解析和封装HTTP请求和相应的问题。

主体结构:

主体结构,借用JavaGuide这位大佬的图:

RPC框架手撕之路---初步了解RPC(小白勿喷)

registry是注册中心,一般使用zookeeper,服务提供端 Server 向注册中心注册服务,服务消费者 Client 通过注册中心拿到服务相关信息,然后再通过网络请求服务提供端 Server。

简单来说,可以把registry看成一家家政公司,服务人员在公司里面把自己能做的事做简单的注册,然后客户在公司里面找到自己“心仪”的工作人员,然后再自己根据服务人员提供的地址,找他提供服务。

实现的关键点:

注册中心:

负责服务地址的注册于查找。服务端启动时,将服务名称及其对应地址(IP+ port)注册到注册中心,客户端根据服务名找到服务器地址,向其发送请求。

网络传输:

发送请求才能调用远程方法,请求中应该包含调用方法的类名,方法名以及一些相关参数。可以使用NIO的Netty框架。

序列化:

请求和相应在传送过程中需要转化为二进制,所以我们需要选择一种序列化协议,比如hession2、kyro、protostuff等等。

动态代理:

RPC的关键在于调用远程方法要像调用本地方法一样简单,所以使用动态代理可以屏蔽远程方法调用的细节部分,比如网络传输。当调用远程方法时,通过代理对象传输网络请求,不是传统的http协议那样。

负载均衡:

后续补充,暂时没有了解到。

有关的Java知识:

本篇文章我们先来了解以上述实现关键点中,Java部分的知识。 1、动态代理机制,用于实现远程方法调用。

2、序列化机制中,各个框架的对比。

3、线程池的使用。

4、CompletableFuture 的使用。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
2年前
RPC 定义 和 原理
一、RPC  1.RPC是什么  RPC(RemoteProcedureCallProtocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了
Wesley13 Wesley13
2年前
RPC的简单实现
RPC(RemoteProcedureCall)—远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用客户机/
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
Rpc基础 原理 框架
一.RPC的原理1.RPC是什么RPC(RemoteProcedureCallProtocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC
Stella981 Stella981
2年前
RPC简介与hdfs读过程与写过程简介
1.RPC简介RemoteProcedureCall远程过程调用协议  RPC——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
API 小达人 API 小达人
4个月前
Eolink Apikit「 零代码」快速发起 RPC 接口自动化测试
RPC(RemoteProcedureCall)远程过程调用,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC的核心思想是将远程服务抽象成一个接口,客户端通过调用这个接口,就可以实现对远程服务的访问。EolinkApikit支持多协议,RPC、DUBBO、HTTP、REST、Websocket、gRPC、TCP、UDP、SOAP、HSF等。零代码快速发起RPC接口自动化测试,可以根据RPC接口文档自动生成测试用例,开发者只需简单修改即可使用。
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
lzy
lzy
Lv1
男 · 南京航空航天大学 · 计算机渣硕
十年磨一剑,霜刃未曾试。
文章
2
粉丝
0
获赞
0