Qyl097731 / rpc

实现两种简单版的RPC,一种基于HTTP的伪RPC、另一种基于Socket协议的PRC,已完结。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

rpc

rpc 小轮子

文档

  • rpc.md(RPC简易学习文档):含有基础知识,和两个小案例的简介
  • dev.md(开发文档): 记录开发过程中的问题、解决方案和时间线
  • doc
    • 需求文档
    • 测试文档
    • 交付文档

rpc-http

快速使用

rpc-http-example

先启动Server,后启动Client即可

rpc-netty

快速使用

rpc-netty-example

先启动Server,后启动Client接口

技术栈

Juc、Zookeeper、Java集合、Netty、Maven模块管理、Java 反射机制

设计模式

装饰者模式、单例模式、工厂模式

实现的功能

  • 引入线程池来处理请求,能够使用线程池进行异步回调
  • 客户端使用TCP长连接(在多次调用共享连接)
  • TCP心跳连接检测,通过netty管道中添加handler实现心跳机制,防止过多的僵尸链接占用带宽
  • 支持不同的load balance策略
  • 支持不同的序列化/反序列化
  • 简单注解的实现
  • 服务注册与发现:服务端和客户端需要实现注册和发现服务的功能,可以使用 Zookeeper 等服务注册中心来进行管理,当服务启动或停止时,相应的服务将在注册中心上进行注册和注销,客户端通过服务注册中心获得服务端地址进行调用。 动态监测服务上下线

总结

所有的都是为了熟悉netty和rpc的流程而做的,所以功能还不够全,如整合spring、以及如何实现网页版监控、本地存根等都未实现,后续有时间再补了...

工作没找到,天天沉沦也不合适,就到这儿啦...

About

实现两种简单版的RPC,一种基于HTTP的伪RPC、另一种基于Socket协议的PRC,已完结。


Languages

Language:Java 100.0%