1 Star 1 Fork 0

Booker / My-Rpc-FrameWork

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

My-Rpc-FrameWork

介绍

My-RPC-Framework 是一款基于 Nacos 实现的 RPC 框架。网络传输实现了基于 Java 原生 Socket 与 Netty 版本,并且实现了多种序列化。

软件架构

根据实际调用需求,可选择基于 Java 原生 Socket,该步骤基于 BIO 实现。选择基于 Netty 的传输方法,则基于 NIO 实现。Nacos 实现服务的注册和提供服务地址的功能。不同序列化满足不同层面的需求:JSON,Hessian,Kryo 等框架。

项目模块

.rpc-api —— 调用接口
.rpc-common —— 工具类
.rpc-core —— 传输类
.rpc-client —— 消费端测试
.rpc-server —— 服务端测试

项目启动

通用接口

public interface HelloService {
    String hello(String name);
}

接口实现

public class HelloServiceImpl implements HelloService{
    @Override
    public String hello(HelloObject object){
        logger.info("接受到:{}",object.getMessage());
        return "调用返回值,id = " + object.getId();
    }
}

Socket 服务端(先开)

public class SocketTestServer {
    public static void main(String[] args) {
        HelloService helloService = new HelloServiceImpl();
        SocketServer socketServer = new SocketServer("127.0.0.1", 9998);
        socketServer.setSerializer(new HessianSerializer());
        socketServer.publishService(helloService, HelloService.class);
    }
}

Socket 消费端(后开)

public class SocketTestClient {
    public static void main(String[] args) {
        SocketClient client = new SocketClient();
        client.setSerializer(new HessianSerializer());
        RpcClientProxy proxy = new RpcClientProxy(client);
        HelloService helloService = proxy.getProxy(HelloService.class);
        HelloObject object = new HelloObject(12, "This is a message");
        String res = helloService.hello(object);
        System.out.println(res);
    }
}

Netty 服务端

public class NettyTestServer {
    public static void main(String[] args) {
        HelloService helloService = new HelloServiceImpl();
        NettyServer server = new NettyServer("127.0.0.1", 9999);
        server.setSerializer(new ProtobufSerializer());
        server.publishService(helloService, HelloService.class);
    }
}

Netty 消费端

public class NettyTestClient {
    public static void main(String[] args) {
        RpcClient client = new NettyClient();
        client.setSerializer(new ProtobufSerializer());
        RpcClientProxy rpcClientProxy = new RpcClientProxy(client);
        HelloService helloService = rpcClientProxy.getProxy(HelloService.class);
        HelloObject object = new HelloObject(12, "This is a message");
        String res = helloService.hello(object);
        System.out.println(res);
    }
}

参考文章

https://blog.csdn.net/qq_40856284/category_10138756.html https://github.com/CN-GuoZiyang/My-RPC-Framework

空文件

简介

暂无描述 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/bookerg/my-rpc-framework.git
git@gitee.com:bookerg/my-rpc-framework.git
bookerg
my-rpc-framework
My-Rpc-FrameWork
master

搜索帮助