The Wayback Machine - https://web.archive.org/web/20200601121026/https://github.com/luxiaoxun/NettyRpc
Skip to content
A simple RPC framework based on Netty, ZooKeeper and Spring
Java
Branch: master
Clone or download

Latest commit

luxiaoxun
luxiaoxun Update util
Latest commit 3cf7c66 May 19, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Update util May 19, 2020
.gitignore Update git ignore Feb 13, 2020
README.md Update readme Apr 13, 2018
pom.xml Update package name Feb 6, 2020

README.md

NettyRpc

An RPC framework based on Netty, ZooKeeper and Spring
中文详情:Chinese Details

Features:

  • Simple code and framework
  • Non-blocking asynchronous call and Synchronous call support
  • Long lived persistent connection
  • High availability, load balance and failover
  • Service Discovery support by ZooKeeper

Design:

design

How to use

  1. Define an interface:

     public interface HelloService { 
     	String hello(String name); 
     	String hello(Person person);
     }
    
  2. Implement the interface with annotation @RpcService:

     @RpcService(HelloService.class)
     public class HelloServiceImpl implements HelloService {
     	public HelloServiceImpl(){}
     	
     	@Override
     	public String hello(String name) {
     		return "Hello! " + name;
     	}
    
     	@Override
     	public String hello(Person person) {
     		return "Hello! " + person.getFirstName() + " " + person.getLastName();
     	}
     }
    
  3. Run zookeeper

    For example: zookeeper is running on 127.0.0.1:2181

  4. Start server:

    Start server with spring: RpcBootstrap

    Start server without spring: RpcBootstrapWithoutSpring

  5. Use the client:

     ServiceDiscovery serviceDiscovery = new ServiceDiscovery("127.0.0.1:2181");
     final RpcClient rpcClient = new RpcClient(serviceDiscovery);
     // Sync call
     HelloService helloService = rpcClient.create(HelloService.class);
     String result = helloService.hello("World");
     // Async call
     IAsyncObjectProxy client = rpcClient.createAsync(HelloService.class);
     RPCFuture helloFuture = client.call("hello", "World");
     String result = (String) helloFuture.get(3000, TimeUnit.MILLISECONDS);
    
You can’t perform that action at this time.