# feige-rpc
**Repository Path**: lzrd-java/feige-rpc
## Basic Information
- **Project Name**: feige-rpc
- **Description**: 飞鸽RPC是一个非常轻量级,且容易修改整合到实际项目中的JAVA远程调用框架,基于NIO框架netty开发,轻松支持高并发,支持服务负载均衡,无缝整合spring
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 51
- **Created**: 2016-11-22
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
####飞鸽RPC是一个非常轻量级,且容易修改整合到实际项目中的远程调用框架,基于NIO框架netty开发,轻松支持高并发,支持服务负载均衡,无缝整合spring
##一、provider配置
服务器配置 feige.properties 放在classpath下
#服务绑定的ip,可选
feige.host=127.0.0.1
#服务端口
feige.port=10221
#服务调用时处理线程池线程数量
feige.poolsize=50
feige.host=127.0.0.1
#协议以及对象序列化配置,本配置为可选,不配置则对象序列化使用java原生序列化
feige.protocol=io.feige.rpc.protocol.kryo.KryoObjectProtocol
###服务导出,提供两种方式,任选一种即可
####1. API导出服务
RpcProducerService rpcProducerService = new RpcProducerService(); //该对象全局唯一即可,不能重复实例化
rpcProducerService.start();
rpcProducerService.exportService(serviceInterfaceName, serviceObj);
####2. spring配置
##二、consumer使用配置
配置 feige.properties 放在classpath下
#协议以及对象序列化配置,本配置为可选,不配置则对象序列化使用java原生序列化;如果一个应用同时包括服务提供者和调用者 feige.properties配置文件可以合并
feige.protocol=io.feige.rpc.protocol.kryo.KryoObjectProtocol
需要调用的服务配置,每个服务可以配置多个服务提供者,即host的配置,可以根据你的配置自动进行负载均衡
feige-import.xml 该文件放在classpath:feige/feige-import.xml
io.feige.rpc.TestService
30
130.255.2.107
10221
1
130.255.2.107
10222
2
###服务调用
####1. API调用
RpcConsumerService rpcConsumerService=new RpcConsumerService();//该对象全局唯一即可,不要重复实例化
rpcConsumerService.start("feige/feige-import.xml");
//由于与服务器建连需要一定时间,还没有建连成功就调用会出异常,所以这睡眠2秒,便于测试
Thread.sleep(2000);
TestService service=rpcConsumerService.getProxyService(TestService.class);
service.test();
####2. spring整合
##三、后续
监控、自动发现服务、性能优化、多语言
##四、特别说明
1.feige.protocol配置为io.feige.rpc.protocol.kryo.KryoObjectProtocol时,所有类必需有默认构造方法,否则会出错,因为kryo依赖默认构造方法,但kryo序列化效率确实比java原生序列化高
2.服务提供者与调用者feige.protocol如果要配置,配置必需一致
##五、下载
jar包下载:[http://www.feige.io/rpc/](http://www.feige.io/rpc/)
示例项目:[http://www.feige.io/rpc/samples/](http://www.feige.io/rpc/samples/)