netty实现的RPC框架
自己手撸了一个nettyRPC框架,希望在这里给有兴趣的同学们做个参考。
要想实现nettyrpc需要了解的技术要点如下:
spring的自定义注解、spring的bean的有关初始化。
反射和动态代理的使用。
了解socket的使用。
了解zookeeper的使用。
了解nio原理。
了解netty的基本操作。
再了解了以上的技术要点后,就可以开始我们的自定义nettyrpc框架之旅了。
没有操作过以上技术的同学也不用担心,我前面的几篇博客都是介绍这几个技术要点的,大家可以先去了解一下前面的技术再来构建框架。
我把这几篇博客的代码和这次框架的源码都上传到了github上,全部封装在了一个项目里,大家可以克隆到自己的本地学习。
github地址: https://github.com/wenbingshen/nettyRpc
在这里我不想讲很多的原理,需要学习框架原理的可以自己去查找相关的资料学习,我主要是给大家撸框架的代码实现帮助。
首先我们的框架架构主要如下所示:

client是rpc客户端的实现,这个是框架里的客户端实现,不是操作框架的客户端,大家一定要弄明白;common包主要是封装了一些常量;proxy包是代理和反射的使用;registry包是服务的注册和发现;server是服务端的实现;utils主要是编码和序列化有关的操作。
框架开发完,我们完成调用框架的客户端和服务端的开发。

RpcBootstrap启动服务器,ClientTest启动客户端
服务端启动结果:

客户端结果:

对框架代码有不懂得,可以先去学习前面的几篇博客,源码都在github上有。
github地址:https://github.com/wenbingshen/nettyRpc
netty实现的RPC框架的更多相关文章
- 基于netty手写RPC框架
		代码目录结构 rpc-common存放公共类 rpc-interface为rpc调用方需要调用的接口 rpc-register提供服务的注册与发现 rpc-client为rpc调用方底层实现 rpc- ... 
- 主流的RPC框架有哪些
		RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展.Java中的RPC框架比较多,各有特色,广泛使用的有RMI.Hessian.Dubbo等.RPC还 ... 
- Netty自娱自乐之类Dubbo RPC 框架设计构想 【上篇】
		之前在前一篇的<Netty自娱自乐之协议栈设计>,菜鸟我已经自娱自乐了设计协议栈,gitHub地址为https://github.com/vOoT/ncustomer-protocal.先 ... 
- 精通并发与 Netty (二)常用的 rpc 框架
		Google Protobuf 使用方式分析 对于 RPC 协议来说,最重要的就是对象的发送与接收,这就要用到序列化与反序列化,也称为编码和解码,序列化与反序列化和网络传输一般都在对应的 RPC 框架 ... 
- 《Java 编写基于 Netty 的 RPC 框架》
		一 简单概念 RPC: ( Remote Procedure Call),远程调用过程,是通过网络调用远程计算机的进程中某个方法,从而获取到想要的数据,过程如同调用本地的方法一样. 阻塞IO :当阻塞 ... 
- java编写基于netty的RPC框架
		一 简单概念 RPC:(Remote Procedure Call),远程调用过程,是通过网络调用远程计算机的进程中某个方法,从而获取到想要的数据,过程如同调用本地的方法一样. 阻塞IO:当阻塞I/O ... 
- 手写RPC框架(netty+zookeeper)
		RPC是什么?远程过程调用,过程就是业务处理.计算任务,像调用本地方法一样调用远程的过程. RMI和RPC的区别是什么?RMI是远程方法调用,是oop领域中RPC的一种实现,我们熟悉的restfull ... 
- 基于Netty重构RPC框架
		下面的这张图,大概很多小伙伴都见到过,这是Dubbo 官网中的一张图描述了项目架构的演进过程.随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在 ... 
- 基于Netty和SpringBoot实现一个轻量级RPC框架-协议篇
		基于Netty和SpringBoot实现一个轻量级RPC框架-协议篇 前提 最近对网络编程方面比较有兴趣,在微服务实践上也用到了相对主流的RPC框架如Spring Cloud Gateway底层也切换 ... 
随机推荐
- WPF支持OneWay,TwoWay,OneTime,Default和OneWayToSource
			原文:WPF支持OneWay,TwoWay,OneTime,Default和OneWayToSource 无论是目标属性还是源属性,只要发生了更改,TwoWay 就会更新目标属性或源属性. OneWa ... 
- ASP.NET MVC4使用JCrop裁剪图片并上传
			需要用到的jquery插件Jcrop .Jquery.form 百度webuploader插件( http://fex.baidu.com/webuploader/ ) 引用下载好的css和js文件 ... 
- linux下计划任务学习记录
			0x01 计划任务简介 linux 中计划任务主要分为”循环执行”和”只执行一次”两种,分别对应的时 crond 服务 和 atd 服务: 0x02 只执行一次的计划任务 0x02.1 atd 服务说 ... 
- 零元学Expression Blend 4 - Chapter 11 用实例了解布局容器系列-「Border」
			原文:零元学Expression Blend 4 - Chapter 11 用实例了解布局容器系列-「Border」 将教大家以实做案例认识Blend 4 的布局容器,此章介绍的布局容器是Blend ... 
- 网络文件系统nfs文件系统使用(很全面)
			一.NFS简介 1.NFS就是Network FileSystem的缩写,它的最大功能就是可以通过网络让不同的机器,不同的操作系统彼此共享文件(sharefiles)——可以通过NFS挂载远程主机的目 ... 
- UWP开发-自适应布局
			了解css的人知道,对于不同的屏幕尺寸,css使用一种名为媒体查询的东东来适用不同的屏幕尺寸,以提升用户体验.当用户使用PC等大屏幕的设备时,网页将呈现一种布局形式:而当用户使用手机等小屏幕设备时,布 ... 
- PyCharm安装MicroPython插件
			转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇 前言 PyCharm可以说是当今最流行的一款Pyth ... 
- CDC-更改数据捕获存储过程 (Transact-SQL)-学习
			背景: 在SQLServer2008之前,对数据变更的捕获通常使用触发器.时间戳等低效高成本的功能来实现,所以很多系统都没有做数据变更或者仅仅对核心表做监控. 适用环境: 仅在SQLServer200 ... 
- 主要C++流派,看看你是哪一流
			1. 经典C++流:类是核心,例程多用C Runtime的,很少用模版,一般是正统教育的结果.2. 古典C流:基本上当C用,偶尔用用对象,不使用异常,喜欢怀旧.3. MFC流:秉承MFC的风格,主要使 ... 
- Excel求值表达式——太好用了
			这个需要通过宏表函数EVALUATE来实现,首先需要自定义名称.如果数据在A列,那么在B列自定义名称,按Ctrl+F3键,在“定义名称框”中选择“新建”,然后输入名称为“结果”,数据来源输入=EVAL ... 
