HRPC 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
HRPC 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: GPL
开发语言: Java
操作系统: 跨平台
收录时间: 2016-09-01
提 交 者: wosyingjun

HRPC

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

特性

  • 采用Protostuff序列化;

  • 高性能,负载均衡;

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

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

  • 长连接,自动重连;

  • 采用cglib动态代理;

  • 代码简答,易上手;

  • 支持Spring;

HRPC结构图

服务注册中心

服务端

1. 通过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>

2. 服务接口

public interface UserService {
    public User getUser(String phone);
    public User updateUser(User user);
}

3. 注册服务实现

@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;
    }
}

客户端

1. 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>

2. 同步调用

UserService userService = rpcClient.createProxy(UserService.class);
User user1 = userService.getUser("188888888");
logger.info("result:" + user1.toString());

3. 异步调用

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");

为什么选择Protostuff ?

展开阅读全文

代码

HRPC 的相关资讯

还没有任何资讯

HRPC 的相关博客

hrpc:简单的rpc框架(spring+zookeeper+netty)

server配置 rpc接口定义 package com.rpc.sample.api; //此接口,暴露给客户端调用 public interface Animal { String sound...

简单轻量级的RPC框架—HRPC

Features Serialize by protostuff High performance, load balance and failover Service registration and subscription ba...

hadoop rpc协议客户端与服务端的交互流程

  尽管这里是hadoop的rpc服务,但是hadoop还是做到了一次连接仅有一次认证。具体的流程待我慢慢道来。   客户端:这里我们...

PNAS-2018-病原菌在植物免疫下的转录组

之前的研究一直关注的是宿主(植物)的转录组在病原菌侵染条件下有什么变化,而很少研究病原菌在植物免疫刺激下的变化。主要还是...

Hadoop的RPC

Hadoop的RPC RPC RPC就是远程过程调用,具体什么是RPC,看一个例子就会明白。 比如客户端有一个RPC协议类Protocol。 interfce...

HRPC 的相关问答

还没有任何问答,马上提问

评论 (5)

加载中
为何开源出来的rpc都说自己是高性能的? 有横向对比数据吗? #HRPC#
2016/09/02 08:41
回复
举报
2016/09/02 15:46
回复
举报
2016/09/02 15:48
回复
举报
isFavorited #HRPC#
2016/09/02 15:50
回复
举报
感觉不太靠谱,简单但是不太合适生产环境 #HRPC#
2016/09/02 17:16
回复
举报
更多评论
5 评论
173 收藏
分享
返回顶部
顶部