首页 > 其他分享 >RPC框架实现-1-总体把握

RPC框架实现-1-总体把握

时间:2024-08-10 11:24:21浏览次数:16  
标签:调用 框架 实现 中间件 RPC 方法 把握

文章目录

如何去实现RPC框架,我的思路

要实现RPC框架,作为一个没写过类似东西的小白。要考虑两点。

  • 什么是RPC,原理与实现
  • 怎么实现一个框架,如我们Java中的Spring,网络通信框架Netty
    从这两个角度来考虑RPC框架的实现。

从RPC的角度来看

RPC的角度来看,有三个主要问题(前一篇文章提到了) :

  • 如何表示数据(怎么表示传递给方法的参数,以及方法执行后的返回值)
  • 如何传递数据(如何通过网络,在两个服务的 Endpoint 之间相互操作、交换数据)
  • 如何确定方法(跨语言困难)

先看表示数据这一层面,倘若调用方和被调用方使用同种语言,那么参数返回值当然可以直接使用该种语言的数据类型或者对象。困难在于两方语言不同的情况,这时我们可以规定好一种中间数据格式,比如JSONXML等,一方的数据先转化为中间数据格式再根据另一方语言转化为对应语言的数据。这就是序列化。当然自己做的话考虑实现难度,应该只会考虑Java语言的实现。

再看传输数据,就是如何通过网络交换数据。比如通过HTTP协议,通过socket等都可以。我们既然使用Java又考虑到通信,当然使用Netty框架。

如何确定方法。首先考虑最简单的,a,b两方,a要调用b的一个固定的方法。我们当然可以直接代码里写死,a给b发一条消息,b接收到后调用方法把结果发过来。但是RPC不可能只固定调用一种方法。所以可能采取的方案是对每个方法都给上一个唯一的编号,通过编号来调用。当然这只是最简陋的做法,更好的做法可能是服务注册与服务发现加上动态代理。

从框架实现的角度来看

框架为什么会出现?是我们对于“复用”这一原则的要求不断变高。

从把代码封装成函数来复用,到把方法加参数封装成类,再到把许多函数封装到一个库中来方便使用。复用的层次不断提高。到了框架这一级别,可以说是一个半成品的应用了。比如Spring框架为我们提供了对象管理(IOC)与AOP等其他一系列功能,为我们的应用搭建了一个基础的脚手架。甚至到了框架还能再上一个层次,就是中间件。中间件已经是一个完整的应用了,可能是基于某种框架开发出的。比如缓存中间件Redis,消息队列中间件。到这个层次依然体现了“复用”的思想,因为你不会希望在开发时希望用到缓存去自己开发一个Redis吧。

有点扯远了。再拉回到框架的实现:

  • 注解的定义
  • SPI机制
  • 设计模式
    例如注解的定义就比如说Spring中的各种注解,都是框架本身定义好的注解要做什么事。方便使用
    关于SPI就不多说了了感兴趣可以自己去学习下。后面用到的时候可能也会说。

写一个框架可能与我们平时开发一个业务是十分不同的。写业务更多使用别人提供的服务。而写框架则是我们要给别人提供服务。

总结

所以结合来看,如果想写一个RPC框架,对于从没写过框架的人来说的不仅要搞明白RPC的实现原理。还需要去学习Java中一个框架应该怎么去开发。

下一篇就开始RPC的开发,开发过程参考github上的一个开源项目:
https://github.com/he2121/MyRPCFromZero
是从最简单的远程固定调用一个方法的实现开始到后面比较完整的RPC框架。

标签:调用,框架,实现,中间件,RPC,方法,把握
From: https://blog.csdn.net/qq_42939279/article/details/141087105

相关文章

  • 2024,该放弃框架来实现 Web 布局了
    在这里,我并不想评论CSS框架和库的好坏,但一个不争的现实就是,很多Web开发者很容易在众多的CSS框架库中迷失方向。甚至,每个框架和库都向Web开发者承诺,将提供更简单的样式和更流畅的Web布局。然而,在当下,现代CSS特性提供了更简单和更灵活的方法,你完全可以不依赖任何CSS......
  • 常见框架漏洞复现
    环境使用Debian虚拟机,配置docker与docker-composeaptinstalldocker.ioaptinstalldocker-compose配置后下载vulhub靶场gitclonehttps://github.com/vulhub/vulhub.git后发现,环境还是无法启动成功,重新打开终端输入dockerhub加速服务sudomkdir-p/etc/dockersudo......
  • 1、.Net UI框架:WinUI - .Net宣传系列文章
    WinUI(WindowsUILibrary)是微软提供的一个用于构建Windows应用程序的本机UI平台组件。它与Windows应用SDK紧密相关,允许开发者创建适用于Windows10及更高版本的应用程序,并且可以发布到MicrosoftStore。WinUI3是最新的一代,它提供了与操作系统分离的整个WinUIstack,支持F......
  • 【人工智能】常用的人工智能框架、模型、使用方法、应用场景以及代码实例的概述
    人工智能(AI)领域涉及众多框架和模型,这些框架和模型为开发人员提供了强大的工具,以构建和训练各种AI应用。以下是一些常用的人工智能框架、模型、使用方法、应用场景以及代码实例的概述。一、常用框架1.TensorFlow简介:TensorFlow是一个由谷歌开发的开源深度学习框架,支持大规模......
  • 框架学习第一天
    目前技术的总体架构1.框架的概念:本质为java代码规范了一系类规范2.使用框架的好处如何更好的理解框架呢,如下图spring框架概念springframework和spring学习1.springframework学习springioc概念springioc作用,组件的本质就是可以复用的java对象......
  • 基于flask+vue框架的图书管理系统[开题+论文+程序]-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,图书馆作为知识传播与学术研究的重要基地,其管理效率与服务质量直接影响着读者体验与知识获取的效率。传统的图书管......
  • 基于flask+vue框架的基于MySQL的房屋中介系统[开题+论文+程序]-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着城市化进程的加速和房地产市场的蓬勃发展,房屋中介行业作为连接房东与租客、买家的桥梁,其重要性日益凸显。然而,传统房屋中介管理方式多......
  • 基于flask+vue框架的基于“互联网+”的智慧药房管理系统[开题+论文+程序]-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着“互联网+”战略的深入实施,传统行业正经历着前所未有的变革与升级。在医疗健康领域,智慧药房作为医药零售与服务的重要一环,其管理模式......
  • 基于flask+vue框架的服装店管理系统[开题+论文+程序]-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在快速发展的零售业中,服装店作为时尚与潮流的传递者,面临着日益激烈的市场竞争和消费者需求多样化的挑战。传统的手工管理模式已难以满足服......
  • 基于flask+vue框架的大学体育器材共享平台[开题+论文+程序]-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着全民健身热潮的兴起和高校体育教育的不断发展,大学体育器材的需求量急剧增加。然而,传统的高校体育器材管理模式存在资源分配不均、使用......