回顾
大家好,我是老马。
我们前面学习了 5 分钟入门 spring cloud 实战笔记 和 dubbo 2.7 的 3种入门案例实战,
小伙伴肯定已经有了最基本的认识。
工作使用过 rpc 框架的肯定也觉得 so easy,那后面我们就来一起从零实现属于自己的 rpc 框架。
懂得原理,以后哪怕遇到 GRPC 之类的,上手都会变得简单很多。
知识储备
建议学习的小伙伴有扎实的 java 基础,最好有一定的 rpc 框架使用经验。
建议的基础储备如下:
Java 并发实战学习
TCP/IP 协议学习笔记
Netty 权威指南学习
为了便于大家理解,这个系列采用渐进式开发,希望每一位小伙伴都可以看懂。
let's go!
服务端的启动
maven 依赖
这里网络包我们使用成熟的 netty,后续有时间将对 netty 进行一下深入学习,此处不做展开。
io.netty netty-all 4.1.17.Final
其实最基础的实现也可以从 java 的 socket 开始,不过原理的是类似的,netty 在网络通信方面做了很多封装和改良,我们要学会站在巨人的肩膀上。
服务端核心代码
基于 netty 的服务端,整体部分是固定的,不要求大家死记硬背。
package com.github.houbb.rpc.server.core;import com.github.houbb.log.integration.core.Log;import com.github.houbb.log.integration.core.LogFactory;import com.github.houbb.rpc.server.constant.RpcServerConst;import com.github.houbb.rpc.server.handler.RpcServerHandler;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.*;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.socket.nio.NioServerSocketChannel;/** * rpc 服务端 * @author binbin.h