`

简单轻量级的RPC框架—HRPC

阅读更多

HRPC

HRPC is a light-weight high performance RPC framework base on Netty and Zookeeper.

github地址:https://github.com/wosyingjun/HRPC

Features

  • Serialize by protostuff
  • High performance, load balance and failover
  • Service registration and subscription base on zookeeper
  • Support asynchronous or synchronous invoking
  • Keep-Alived connection, reconnect to server automatically
  • Dynamic proxy by cglib
  • Write less do more
  • Spring support

HRPC Structure

Service Registry

Server Tutorial

1.Spring configuration
<?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.Service interfacne
public interface UserService {
    public User getUser(String phone);
    public User updateUser(User user);
}
3.Provide rpc service
@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;
    }
}

Client Tutorial

1. Spring configuration
<?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. Synchronous invoking
UserService userService = rpcClient.createProxy(UserService.class);
User user1 = userService.getUser("188888888");
logger.info("result:" + user1.toString());
3. Asynchronous invoking
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");

Why choose protostuff ?

2
0
分享到:
评论
1 楼 manzhizhen 2017-01-12  
建议包名能改成hrpc,而不是yingjun....

相关推荐

    轻量级高性能 RPC 框架 HRPC.zip

    HRPC HRPC是一款基于Netty和Zookeeper设计的轻量级高性能RPC框架。特性采用Protostuff序列化;高性能,负载均衡;支持服务的注册和订阅;支持同步及异步2种调用方式;长连接,自动重连;采用cglib动态代理;代码...

    带有Protobuf服务的简单RPC-Node.js开发

    带有Protobuf Services hrpc的简单RPC带有Protobuf Services npm install hrpc的简单RPC用法首先定义一个RPC服务消息Echo {必需的字符串值= 1; }服务示例{rpc Echo(Echo)返回(Echo){}}然后使用hrpc编译器npm ...

    .arch手写RPC.pdf

    在本文中,我们将深入探讨如何手写一个RPC(Remote Procedure Call)框架,这是一个允许在分布式系统中调用远程服务的方法的...理解这些概念和步骤,可以帮助我们构建自己的RPC框架,实现高效、可靠的分布式服务通信。

    hrpc-rs:Rust中的hRPC实施

    hrpc-rs 此回购包含Rust中hRPC的实现: hrpc包含通用代码, hrpc-build是可用于protobuf文件的代码生成器, interop是一个示例,用于根据Go示例服务器测试实现和代码生成。

    gohbaseHBasego客户端.pdf

    gohbase的特点在于其简单和轻量级的代码库,并且不需要Java环境支持,即不依赖于任何Java抽象工厂、观察者服务等。 #### 核心特性 1. **纯Go实现**:gohbase作为HBase的Go语言客户端,不依赖于Java环境,这使得它...

    hrpc-blog:前端开发学习过程

    在“hrpc-blog:前端开发学习过程”这个项目中,我们可以看到它主要关注的是前端开发的学习路径和资源。"blog全在issues里"这一描述暗示了项目中的博客文章或者学习笔记可能存储在GitHub仓库的Issue模块中,这是一个...

    drafts:IRTF-HRPC研究小组的草案

    为HRPC构建草稿 安装依赖项: # apt install ruby-kramdown-rfc2629 xml2rfc 草稿编辑工作流程: # $EDITOR draft-glossary.md # make

    基于数据挖掘的现代湖湘男科流派医家治疗激素难治性前列腺癌用药规律研究.pdf

    研究内容主要集中在探索现代湖湘男科流派中几位代表医家,即谭新华、贺菊乔、陈其华,他们在使用传统中医药治疗激素难治性前列腺癌(HRPC)方面的用药规律。激素难治性前列腺癌是指那些对激素治疗产生抵抗的前列腺癌...

    Pure-Go HBase 客户端.zip

    []byte{"cf": map[string][]byte{"a": []byte{0}}}putRequest, err := hrpc.NewPutStr(context.Background(), "table", "key", values)rsp, err := client.Put(putRequest)获取整行getRequest, err := hrpc....

    CRPC诊疗进展实用PPT学习教案.pptx

    在前列腺癌的发展过程中,有三个重要的阶段:雄激素非依赖性前列腺癌(AIPC)、激素抵抗型前列腺癌(HRPC)和去势抵抗性前列腺癌(CRPC)。AIPC通常发生在患者接受一线药物和手术去势治疗后,PSA(前列腺特异性抗原...

    High-Performance Computing Using FPGAs

    tightly coupled HRPC architectures, e.g. the Convey hybrid-core computer; reconfigurably networked HPRC architectures, e.g. the QPACE system, and standalone HPRC architectures such as EPFL’s ...

    gohbase:Pure-Go HBase客户端

    )插入一个单元格// Values maps a ColumnFamily -&gt; Qualifiers -&gt; Values.values := map [ string ] map [ string ][] byte { "cf" : map [ string ][] byte { "a" : [] byte { 0 }}}putRequest , err := hrpc ....

    python+adb命令实现自动刷视频脚本案例

    总的来说,这个案例向初学者展示了如何结合Python和ADB命令来实现简单的Android自动化操作,对于移动应用测试、自动化脚本编写或者日常的一些便捷操作非常有用。通过学习这样的实例,开发者可以进一步探索Android...

    前列腺癌的化疗.ppt

    二线内分泌治疗是针对一线治疗无效的患者,这类患者对所有内分泌疗法都不再敏感,称为激素非依赖性前列腺癌(HRPC)。这类患者的病情可能会出现症状加重、转移灶进展或血清PSA水平显著上升。在这种情况下,化疗成为...

    高精度定时器:高分辨率性能计数器-matlab开发

    在MATLAB中,实现高精度定时器通常涉及到利用系统内部的高性能计数器(High-Resolution Performance Counter,HRPC)来获取微秒甚至纳秒级别的时间戳。这在执行高速数据处理、算法性能分析或者精确计时的任务中非常...

Global site tag (gtag.js) - Google Analytics