7 |
8 | ## 一个基于netty的RPC框架
9 |
10 | 1. 基于netty NIO、IO多路复用。
11 | 2. client与server端建立心跳包保活机制。发生未知断连时,重连保证可靠长连接。
12 | 3. 使用kryo序列化,自定义传输包,及传输格式,避免TCP沾包问题。
13 | 4. 支持zookeeper或nacos做服务注册中心。
14 | 5. 可在注解中配置server端业务线程池核心线程数及最大线程数,客户端可通过注解自由选择接口对应负载均衡策略。
15 | 6. 可轻松整合SpringBoot进行使用。
16 |
17 | ## Getting Start
18 |
19 | ### 启动
20 | #### API式启动
21 | 1. com.polyu.rpc.test.api.server.ServerTest.java 服务端启动
22 | 2. com.polyu.rpc.test.api.client.ClientTest.java 客户端启动 并rpc调用HelloService.hello()
23 |
24 | #### 与SpringBoot整合启动(由于未发布到远程仓库,所以需本地maven install。)
25 |
26 | 1. 客户端
27 | - maven
28 | ```xml
29 |
30 | com.polyu
31 | netty-client
32 | 1.0-SNAPSHOT
33 |
34 | ```
35 | - springboot
36 | ```java
37 | @Component
38 | public class Test {
39 |
40 | @BRpcConsumer(version = "1.0", loadBalanceStrategy = RpcLoadBalanceConsistentHash.class, timeOutLength = 1000L)
41 | private static HelloService helloService;
42 |
43 | public static void test() throws InterruptedException {
44 | String yyb = helloService.hello("yyb");
45 | System.out.println("yyb = " + yyb);
46 | }
47 | }
48 | ```
49 | - application.properties
50 | ```properties
51 | bRPC.client.registry.type=zookeeper
52 | bRPC.client.registry.address=127.0.0.1:2181
53 | bRPC.client.registry.target.name=springbootApplication
54 | bRPC.client.timeout.checkInterval=500
55 | ```
56 | 2. 服务端
57 | - maven
58 | ```xml
59 |
60 | com.polyu
61 | netty-server
62 | 1.0-SNAPSHOT
63 |
64 | ```
65 | - springboot
66 | ```java
67 | @BRpcProvider(value = HelloService.class, version = "1.0")
68 | public class HelloServiceImpl implements HelloService {
69 |
70 | @Override
71 | public String hello(String name) throws InterruptedException {
72 | return name;
73 | }
74 | }
75 | ```
76 | - application.properties
77 | ```properties
78 | bRPC.server.application.name=springbootApplication
79 | bRPC.server.address=127.0.0.1:12277
80 | bRPC.server.registry.type=zookeeper
81 | bRPC.server.registry.address=127.0.0.1:2181
82 | ```
83 | ### 注册中心部署
84 | #### Docker Zookeeper部署(例 同样支持nacos)
85 |
86 | 1. 拉取zk镜像 指令:docker pull zookeeper:3.4.14
87 | 2. 查看镜像id 指令:docker images
88 | 3. 拉起容器 指令:docker run -d -p 2181:2181 --name b-zookeeper --restart always {imageId}
89 | 4. 查看容器id 指令:docker ps -a
90 | 5. 进入容器 指令:docker exec -it {containerId} /bin/bash
91 | 6. 起注册中心 指令:./bin/zkCli.sh
92 |
93 |
94 |