如何实现简单的RPC服务

27 篇文章 0 订阅

说RPC必有的一句话:RPC(Remote Promote Call) 一种进程间通信方式。允许像调用本地服务一样调用远程服务。

如何像调用本地服务一样调用远程服务?可以将RPC框架整体分为三部分:客户端、服务端、注册中心


服务端将自己对外提供的服务注册到注册中心,暴露出来;客户端通过服务端提供的接口到注册中心发现服务,并完成服务的调用。

那么客户端、服务端和注册中心都需要做什么事情呢?

客户端:1、引用服务端暴露出来的接口;2、与注册服务器连接;3、对调用服务接口创建代理,并向注册中心发送请求;4、最后获取返回的结果。

服务端:1、实现对外暴露的接口;2、与注册服务器连接;3、将服务端的接口全部注册到注册中心;4、处理RPC请求,并将结果返回。

注册中心:1、服务端注册服务;2、客户端发现服务。

上面是一个完整的RPC服务调用的过程,但是在实现一个RPC框架的时候,希望RPC更加通用,服务端只需要将服务注册上去即可,客户端只要调用接口就行。那么RPC框架应该做哪些事情呢?接下来说的服务端是指RPC服务端。

1、RPC服务端在面向服务提供者(生产者)的时候,需要让其扫描生产者中所有提供的服务(使用RPC服务端注解的方式),这种方式,需要在RPC服务端启动的时候就要注册到注册中心,启动RPC服务器。

2、RPC服务器可以通过反射机制,自动执行服务端接口并返回结果;

3、RPC服务器面向客户端(消费者)的时候,首先通过代理的方式将调用的接口进行封装,并发送出去,获取处理后的结果。

根据上面的分析具体都需要哪些类来实现相应的功能呢?

1、实现一个注解,该注解的作用,实现了注解的方法(类)就是对外提供的方法(类);

2、RPCServer类,扫描使用了上面注解的方法或类,并将其注册到zookeeper中(register),然后启动netty服务端,主要作用是监听客户端的调用,处理客户端RPC请求(handler类);

3、Proxy类,RPC服务代理类,主要作用是将调用的服务封装为请求,并发现zookeeper中服务(discover),然后通过netty客户端发送请求,获得返回的结果。
---------------------
作者:逢五必更
来源:CSDN
原文:https://blog.csdn.net/u014418064/article/details/79575041
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值