Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
forked from wosyingjun/HRPC

A light-weight high performance RPC framework base on Netty and Zookeeper

Notifications You must be signed in to change notification settings

vostro2013/HRPC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

1 Commit

Repository files navigation

##HRPC

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

##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

 <!--扫描需求发布的服务所在的包-->
 <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

 <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 ?

About

A light-weight high performance RPC framework base on Netty and Zookeeper

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%

AltStyle によって変換されたページ (->オリジナル) /