랭킹으로 돌아가기
luxiaoxun/NettyRpc
JavaA simple RPC framework based on Netty, ZooKeeper and Spring
nettyrpc-frameworkspringzookeeper
주요 지표
스타 성장
스타
2.4k
포크
1.1k
주간 성장
—
이슈
6
1k2k
2016년 3월2017년 11월2019년 8월2021년 5월2023년 2월2024년 10월2026년 7월
아티팩트Maven
git clone https://github.com/luxiaoxun/NettyRpc.gitREADME
NettyRpc
An RPC framework based on Netty, ZooKeeper and Spring
中文详情:Chinese Details
Features:
- Simple code and framework
- Service registry/discovery support by ZooKeeper
- High availability, load balance and failover
- Support different load balance strategy
- Support asynchronous/synchronous call
- Support different versions of service
- Support different serializer/deserializer
- Dead TCP connection detecting with heartbeat
Design:

How to use (netty-rpc-test)
Define an interface:
public interface HelloService { String hello(String name); String hello(Person person); }Implement the interface with annotation @NettyRpcService:
@NettyRpcService(HelloService.class, version = "1.0") 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(); } }Run zookeeper
For example: zookeeper is running on 127.0.0.1:2181
Start server:
- Start server with spring config: RpcServerBootstrap
- Start server without spring config: RpcServerBootstrap2
Call the service:
- Use the client:
final RpcClient rpcClient = new RpcClient("127.0.0.1:2181"); // Sync call HelloService helloService = rpcClient.createService(HelloService.class, "1.0"); String result = helloService.hello("World"); // Async call RpcService client = rpcClient.createAsyncService(HelloService.class, "2.0"); RPCFuture helloFuture = client.call("hello", "World"); String result = (String) helloFuture.get(3000, TimeUnit.MILLISECONDS);- Use annotation @RpcAutowired:
public class Baz implements Foo { @RpcAutowired(version = "1.0") private HelloService helloService1; @RpcAutowired(version = "2.0") private HelloService helloService2; @Override public String say(String s) { return helloService1.hello(s); } }
관련 저장소