Remote Invocation Framwork,高性能远程调用框架,海豚RPC框架,基于Netty+ProtoBuf+ZooKeeper
- 基于Spring架构设计(也支持非Spring架构)
- 支持Spring注解@RpcResource方式注入远程接口
- 支持@RPCService注解声明远程服务接口
- 支持ProtoBuf进行传输中的序列化
- 基于Netty进行通信,客户端与服务端有心跳检测及重连机制
- 服务的注册与发现基于ZooKeeper
<?xml version="1.0" encoding="UTF-8"?>
<dolphin>
<!-- RPC客户端配置 -->
<client>
<global>
<group>${app.env}</group>
</global>
<selector>
<class>com.dolphin.rpc.proxy.ServiceConnectorSelector</class>
</selector>
<services>
<service>
<group>debug</group>
<name>userService</name>
</service>
</services>
<timeout>3000</timeout>
<retry-times>3</retry-times>
</client>
<!-- 注册中心配置 -->
<registry>
<datasource>
<url>${registry.db.url}</url>
<username>${registry.db.username}</username>
<password>${registry.db.password}</password>
</datasource>
<customer>com.dolphin.rpc.registry.zookeeper.ZooKeeperServiceConsumer</customer>
<provider>com.dolphin.rpc.registry.zookeeper.ZooKeeperServiceProvider</provider>
</registry>
</dolphin>
<?xml version="1.0" encoding="UTF-8"?>
<dolphin>
<!-- RPC客户端配置 -->
<client>
<global>
<group>${app.env}</group>
</global>
<selector>
<class>com.dolphin.rpc.proxy.ServiceConnectorSelector</class>
</selector>
<timeout>3000</timeout>
<retry-times>3</retry-times>
</client>
<!-- RPC服务配置 -->
<service>
<group>${app.env}</group>
<!-- RPC服务名 -->
<name>userService</name>
<!-- 主机IP,可不配,程序会自动获取 -->
<ip>10.1.1.31</ip>
<!-- RPC服务端口 -->
<ports>
<port>${service.port1}</port>
<port>${service.port2}</port>
</ports>
</service>
<!-- 注册中心配置 -->
<registry>
<datasource>
<url>${registry.db.url}</url>
<username>${registry.db.username}</username>
<password>${registry.db.password}</password>
</datasource>
<customer>com.dolphin.rpc.registry.zookeeper.ZooKeeperServiceConsumer</customer>
<provider>com.dolphin.rpc.registry.zookeeper.ZooKeeperServiceProvider</provider>
</registry>
</dolphin>
@RPCResource
private UserService userService;
@Component
public class RpcBoot implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
ServerBoot serverBoot = new ServerBoot();
serverBoot.start();
}
}
private UserService userService = RPCFactory.getService(UserService.class);
ServerBoot serverBoot = new ServerBoot();
serverBoot.start();