littlebot
Published on 2025-04-02 / 0 Visits
0

【源码】基于Netty+Kyro+Zookeeper的简易RPC框架

项目简介

本项目是基于Netty、Kyro和Zookeeper实现的简易RPC框架。RPC(远程过程调用)框架可让客户端像调用本地方法一样调用远程服务器上的方法。借助该框架,开发者能轻松实现分布式系统中的服务调用,还可学习RPC底层原理和Java编码实践。

项目的主要特性和功能

核心功能

  1. 服务注册与发现:以Zookeeper为注册中心,服务提供者将服务注册到Zookeeper,服务消费者通过Zookeeper获取服务地址。
  2. 网络传输:基于Netty实现高效网络传输,支持NIO(非阻塞IO)。
  3. 序列化与反序列化:支持Kyro、Hessian和Protostuff等多种序列化协议,保障数据网络传输的高效性与安全性。
  4. 动态代理:运用动态代理技术,客户端能像调用本地方法一样调用远程方法,屏蔽网络传输细节。
  5. 负载均衡:支持随机负载均衡和一致性哈希负载均衡等多种策略,确保服务调用的高效性与稳定性。

扩展功能

  1. 服务版本管理:支持服务的版本管理,便于服务的升级和回滚。
  2. 服务分组:支持服务的分组管理,利于服务的分类和隔离。
  3. 集成Spring:通过注解方式集成Spring,简化服务的注册和引用。
  4. 心跳机制:支持Netty心跳机制,保证客户端和服务器之间连接稳定。

安装使用步骤

1. 导入项目

将项目复制到本地,使用IDEA打开项目,等待项目初始化完成。

2. 初始化git hooks

为保证代码格式正确,项目使用Check Style工具。提交代码前会自动运行Check Style检查,可通过以下命令初始化git hooks: bash chmod +x ./init.sh ./init.sh

3. 配置CheckStyle插件

在IDEA中安装CheckStyle插件并配置: 1. 打开IDEA的Preferences -> Plugins,搜索并安装CheckStyle插件。 2. 配置CheckStyle插件,确保其能正确运行。

4. 下载并运行Zookeeper

使用Docker下载并运行Zookeeper: bash docker pull zookeeper:3.5.8 docker run -d --name zookeeper -p 2181:2181 zookeeper:3.5.8

5. 启动服务

服务提供端

实现接口并发布服务: ```java @RpcService(group = "test1", version = "version1") public class HelloServiceImpl implements HelloService { @Override public String hello(Hello hello) { return "Hello description is " + hello.getDescription(); } }

public class NettyServerMain { public static void main(String[] args) { new AnnotationConfigApplicationContext(NettyServerMain.class); NettyServer nettyServer = new NettyServer(); nettyServer.start(); } } ```

服务消费端

通过注解引用服务并进行调用: ```java @Component public class HelloController { @RpcReference(version = "version1", group = "test1") private HelloService helloService;

public void test() throws InterruptedException {
    String hello = this.helloService.hello(new Hello("111", "222"));
    System.out.println(hello);
}

} ```

6. 运行测试

在IDEA中运行服务提供端和服务消费端的main方法,确保服务能正常启动和调用。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】