HRPC 轻量级高性能 RPC 框架

程序名称:HRPC

HRPC 介绍

HRPC

HRPC是一款基于Netty和Zookeeper设计的轻量级高性能RPC框架。

特性

  • 采用Protostuff序列化;

  • 高性能,负载均衡;

  • 支持服务的注册和订阅;

  • 支持同步及异步2种调用方式;

  • 长连接,自动重连;

  • 采用cglib动态代理;

  • 代码简答,易上手;

  • 支持Spring;

HRPC结构图

服务注册中心

服务端

通过Spring配置

<?xml version=1.0 encoding=UTF-8?>
<beans xmlns=http://www.springframework.org/schema/beans
       xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
       xmlns:context=http://www.springframework.org/schema/context
       xsi:schemaLocation=http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd>
    <!--扫描需求发布的服务所在的包-->
    <context:component-scan base-package=com.yingjun.rpc.service.impl/>
    <context:property-placeholder location=classpath:system.properties/>
    <!--服务端配置-->
    <bean id=rpcServer class=com.yingjun.rpc.server.RPCServer>
        <constructor-arg name=zookeeper value=${zookeeper.address}/>
        <constructor-arg name=serverAddress value=${server.address}/>
    </bean>
</beans>
public interface UserService {
    public User getUser(String phone);
    public User updateUser(User user);
}
@HRPCService(UserService.class)
public class UserServiceImpl implements UserService {
    @Override
    public User getUser(String phone) {
        User user =new User(111,yingjun,phone);
        return user;
    }
    @Override
    public User updateUser(User user) {
        user.setName(yingjun@update);
        return user;
    }
}

客户端

Spring配置

<?xml version=1.0 encoding=UTF-8?>
<beans xmlns=http://www.springframework.org/schema/beans
       xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
       xmlns:context=http://www.springframework.org/schema/context
       xsi:schemaLocation=http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd>
    <context:annotation-config/>
    <context:property-placeholder location=classpath:system.properties/>
    <!--客户端配置-->
    <bean id=rpcClient class=com.yingjun.rpc.client.RPCClient>
        <constructor-arg name=zookeeper value=${zookeeper.address}/>
        <!--订阅需要用到的接口-->
        <constructor-arg name=interfaces>
            <list>
                <value>com.yingjun.rpc.service.OrderService</value>
                <value>com.yingjun.rpc.service.UserService</value>
                <value>com.yingjun.rpc.service.GoodsService</value>
            </list>
        </constructor-arg>
    </bean>
</beans>
UserService userService = rpcClient.createProxy(UserService.class);
User user1 = userService.getUser(188888888);
logger.info(result: + user1.toString());
AsyncRPCProxy asyncProxy = rpcClient.createAsyncProxy(UserService.class);
asyncProxy.call(getUser, new AsyncRPCCallback() {
     @Override
     public void success(Object result) {
         logger.info(result: + result.toString());
     }
     @Override
     public void fail(Exception e) {
         logger.error(result: + e.getMessage());
     }
 }, 188888888);

https://github.com/wosyingjun/HRPC#why-choose-protostuff

为什么选择Protostuff ?

HRPC 官网

https://github.com/wosyingjun/HRPC

相关编程语言

MuPlayer 是一款跨平台、轻量级的音频播放解决方案,...
OS FLV 是一个 开源和可嵌入网页的flv播放器。 这个...
DewPlayer音乐播放器,样式很简单,而且很实用.播放器...
JW FLV MEDIA PLAYER是一个开源的在网页上使用的Fla...
Speakker 是一个基于 Web 浏览器的音乐播放器,只提...
Player Framework 是一个开源的支持 HTML5 的视频播...