Java项目推荐:手撕RPC框架

手写一个RPC框架(Java)是一个很好的入门轮子项目。

总代码也就两千多行,比起动辄几万行的项目,手写RPC是比较容易入门。

同时RPC框架也是很重要的一个轮子。

项目代码直接开源到Github:https://github.com/youngyangyang04/RPC-Java

欢迎去star,fork

本项目专栏(前置知识,模块架构,代码详解,简历写法,面试问题,项目拓展等等)仅开放在知识星球

项目背景与简单介绍

项目背景

随着业务不断升级,系统规模不断扩大, 单体架构会产生越来越多的问题,需要引入微服务将原先架构解耦为一个个模块。

每个服务模块放在不同的服务器上,能够保证系统在高并发环境下的正常运转。

各个服务模块之间如何相互调用,就使用到了RPC协议的思想(远程调用)。

RPC介绍

概念
  1. RPC(Remote Procedure Call Protocol) 远程过程调用协议。
  2. RPC是一种通过网络从远程计算机程序上请求服务,不需要了解底层网络技术的协议。
  3. RPC主要作用就是不同的服务间方法调用就像本地调用一样便捷。
常用RPC技术或框架
  • 应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。
  • 远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。
  • 通信框架:MINA 和 Netty
为什么要有RPC?
  1. 服务化:微服务化,跨平台的服务之间远程调用;
  2. 分布式系统架构:分布式服务跨机器进行远程调用;
  3. 服务可重用:开发一个公共能力服务,供多个服务远程调用。
  4. 系统间交互调用:两台服务器A、B,服务器A上的应用a需要调用服务器B上的应用b提供的方法,而应用a和应用b不在一个内存空间,不能直接调用,此时,需要通过网络传输来表达需要调用的语义及传输调用的数据。

技术栈

  • fastjson和protobuf等主流数据序列化方式
  • 高性能网络框架netty
  • 分布式协调应用zookeeper
  • 负载均衡算法实现
  • 限流算法实现
  • 重试任务和定时任务在项目场景下的运用

项目特点:

本项目不是一口作气就带大家做一个完善的RPC,而是通过四个实现版本循序渐进带大家逐步完善RPC

每一个版本都有详细文章讲解:

每一章的详细讲解中都给出项目架构图,大家可以清晰知道,本章版本在上一版本添加了什么。

版本一,实现一个最简单可以用的RPC:

版本二,添加netty自定义编码器,解码器和序列化器,创建缓存:

版本三,添加负载均衡、超时重试 &白名单:

版本四,服务-限流、熔断:

版本五,序列化方式、配置顶、SPI 机制等

项目代码直接开源到Github:https://github.com/youngyangyang04/RPC-Java

欢迎去star,fork

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码随想录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值