# rpc-start
**Repository Path**: lxrv587/rpc-start
## Basic Information
- **Project Name**: rpc-start
- **Description**: rpc框架实现与学习
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2018-12-06
- **Last Updated**: 2021-05-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#此项目适合用来学习rpc框架原理以及实现
# MyRPC
主要使用技术以及后期开发功能简介:
1、rpc远程调用使用netty作为通信框架,采用netty主从线程模型。
2、目前开发给予tcp协议长链接的rpc远程调用,支持同步/异步回调,超时时间,后期加入接口调用统计,权限。
3、序列化目前支持jdk,hessian,jakson序列化,后面准备支持protobuf,Marshalling等序列化技术。
4、使用zookeeper作为服务的注册与发现中心。实现服务的自动注册与发现,无限监听节点的变更,提供实时可靠的服务。
5、整合spring方便使用。集成spring容器,使用更加方便快捷。
6、目前代理默认使用jdk,支持Javassist,cglib等
7、支持轮询,随机,权重随机,一致性hash 负载均衡算法
## 服务注册端
serverPort:默认开启tcp端口;
class: 提供服务的接口类(可写接口或者实现类)
并且在 com.it.netty.rpc.service.PersonServiceImpl类上加上注解@RpcService
zkAddress: zookeeper地址;
timeout:默认请求超时时间为5000毫秒,可设置2000-5000范围内;
max-flow:最大并发量
## 服务消费端
loadBanlance:负载均衡算法默认随机random,支持轮询roundRobin,定向ip访问 ip。(默认一台主机时不走负载均衡)
interface:代理接口全限定名;
zkAddress: zookeeper地址;
proxy:动态代理模式 目前支持jdk,cglib 默认jdk;
clientGroup-thread-nums:客户端event线程数;
protocol:序列化,目前支持 jdk,jakson,hessian,默认hessian;
## 交流750484746