自己设计一个的轻量级的RPC框架

自己设计一个的轻量级的RPC框架

#前言

本人是一个java小菜鸟 但是希望自己成为一个大牛。目前真正学习分布式和微服务的一些相关知识,由于公司没有相关的项目,所以学习起来比较困难。本身深入了解分布式的相关知识,所以开始自己设计一个轻量级的RPC框架(底下会有githup地址)

RPC简介

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。

RPC技术选择

1.netty
Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。由于jdk的nio使用比较复杂,并且自己之前看过netty的相关书籍,刚刚好拿来练手
2.zookeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。本项目主要是用来注册和发现服务用的,服务端将服务的一些server信息和ip信息存储到zookeeper上面,客户端获取信息并将其调用
3.Spring
由于目前开发项目都是依赖于Spring的全家桶,所有本项目也用Spring来托管对象。主要是用了自定义的Spring标签来实现自己注册bean的需求 后期会详细讲解。
4.负载均衡
由于同一个服务会有好几个服务器来部署,导致会有n个ip地址指向该服务。负载均衡能够更加合理的利用服务器资源。
ps:目前只完成了简单的轮询。后期会逐渐加入权重,hash一致等。

RPC流程图

在这里插入图片描述

主体流程
1.服务端将服务向zookeeper注册
2.服务端开启netty服务
3.客户端在zookeeper上获取服务信息
4.通过负载均衡向服务端发起请求
5.服务端调用服务将信息返回给客户端

后期展望

1.netty进一步优化
2.负载均衡算法的增加
3.支持zookeeper集群

githup地址:https://github.com/lijialun-leo/rpc (持续修改中)

猜你喜欢

转载自blog.csdn.net/a294634473/article/details/88105669