RPC简易框架开发

本文深入浅出地介绍了RPC(远程过程调用)的基本概念及其实现原理,包括RPC的工作流程、影响性能的因素以及如何利用Spring、Netty等技术构建一个简易的RPC框架。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 什么是rpc

    1. RPC,即 Remote Procedure Call(远程过程调用),采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答通知。在服务端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务端获得进程参数,进行业务操作,发送答复信息,等待下一个调用信息。最后,客户端调用进程接受答复信息,获得答复结果,然后继续业务操作。
    2. 通俗一点就是,调用远程计算机上的服务,就像调用本地服务一样。
    3. RPC可基于HTTP或TCP协议实现,Web Service是基于HTTP 协议的RPC,它具有良好的跨平台性,但其性能却不如基于TCP 协议的 RPC。会两方面会直接影响 RPC 的性能,一是传输方式,二是序列化。
    4. TCP是传输层协议,HTTP是应用层协议,传输层较应用层更为底层,在数据传输方面越底层越快。就序列化而言,Java提供了默认的序列化方式,但是在高并发场景下会带来瓶颈, 现在也出现了好多优秀的序列化框架,从而提供更高效的性能,如protobuf、hessian、jackson等。
  • RPC的简易结构

    输入图片说明

  • 框架中使用的技术
    Spring:它是最强大的依赖注入框架,也是业界的权威标准。
    Netty:它使 NIO 编程更加容易,屏蔽了 Java 底层的 NIO 细节。
    Protostuff:它基于 Protobuf 序列化框架,序列化更高效。
    ZooKeeper:提供服务注册与发现功能,开发分布式系统的必备选择,同时它也具备天生的集群能力。

  • 工程目录结构

    输入图片说明

  • 目录结构结构说明

    rpc-client:创建netty客户端,通过动态代理调用对象,服务发现。
    rpc-common:序列化、编码、解码
    rpc-registry:服务注册、服务发现
    rpc-sample-app:模拟远程调用的应用端
    rpc-sample-interfaces:服务接口
    rpc-sample-service:服务实现,具体业务逻辑编写
    rpc-server:netty服务端,将业务实现发布为远程服务

  • 源码

    gitee地址:https://gitee.com/riseee/rpc-sample

转载于:https://my.oschina.net/riseee/blog/1586122

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值