本文主要是介绍基于springboot/netty 自己开发的rpc框架nrpc,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
github地址:https://github.com/lhyxcxy/nrpc/
说明
使用springboot+netty 实现了rpc框架demo,参考了dubbo、xxl-job,短时间搭建而成、可能有bug,代码有点乱,后期有时间再改吧,仅供学习使用。
使用
本项目使用maven,导入即可用,不需安装其他的软件如 zookeeper。自己简单实现了注册中心。
实现技术
相关使用例子参考nrpc-test模块本框架主要实现的技术如下:
netty 相关
- 异步IO
- Reactor多线程模型
- http粘包拆包
- 序列化反序列化
- 零拷贝
。。。。。。。。。。。。。。。。
springboot相关
-
自定义NRpcReference注解、并实现在容器创建过程中对@NRpcReference标注的属性进行注入。
-
自定义 NRpcService 注解、实现在容器创建过程中扫描所有的@NRpcService注解类、加入到spring容器中。
-
还实现了@EnableNRpc,@EnableNRpcConfig,@NRpcComponentScan等接口
-
实现spring.factories的自动配置
-
手写starter
-
java多线程ThreadPoolExecutor、锁等
-
负载均衡算法
-
自己实现注册中心
。。。。。。。。。。。。。。。。。
还没时间处理的问题
-
consumer 没有定时更新 provider列表
-
注册时,一个微服务只注册一个节点appid,然后对于service列表根据appid注册。这样对于注册中心就没有provider和consumer的区别
-
对于项目包结构,以及线程的管理 要整理一下,例如在destory时要关闭线程池或线程,清除相关缓存等操作
-
获取服务列表等相关与注册中心有关的操作要优化
。。。。。。模块
-
nrpc #nrpc 模块
- nrpc-common #公共模块
- nrpc-core #核心模块
- nrpc-log #日志模块
- nrpc-registry #注册中心模块
- nrpc-spring-boot-autoconfigure #springboot 自动配置模块
- nrpc-spring-boot-starter #springboot starter模块
-
nrpc-test #测试nrpc模块
- nrpc-test-api #api接口
- nrpc-test-consumer #测试消费者模块
- nrpc-test-provider #测试生产者模块
代码
nrpc-common
nrpc-core
nrpc-log
nrpc-registry
autoconfigure
nrpc-test
这篇关于基于springboot/netty 自己开发的rpc框架nrpc的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!