一個幾乎零依賴的RPC:eyer-rpc

jopen 9年前發布 | 9K 次閱讀 eyer-rpc WEB服務/RPC/SOA

一個幾乎零依賴的RPC,通信網絡拋棄了笨重了netty使用了原生的javaNIO包四個類完成封裝。
</div>

一個簡單的服務 (單機版)

public class TestServer {
        public static void main(String[] args) throws IOException {

        NioConfig.registered(new KryoSerializer());
        final ServerHandler handler = new ServerHandler();
        NioConfig.registered(handler);
        NioConfig.initSessionHandler();
        //需要導出的服務接口 以及對應的實現類
        handler.services.put(UserService.class, new RemoteUserService());
        Server server = new Server(new InetSocketAddress("0.0.0.0",6161),new Acceptor("acceptor-1",new ReactorPool(1)));

    }
}</pre> <h3><a href="http://www.baiduhome.net/lib/submit/add/#服務引用"></a>服務引用 </h3>

public class ProxyClientTest {
        public static void main(String[] args) throws Exception {
                  NioConfig.registered(new KryoSerializer());
                  final Handler invocationHandler = new ClientHandler();
                  NioConfig.registered(invocationHandler);
                  NioConfig.registered(new Connector("connector",new ReactorPool(1)));
                  NioConfig.initSessionHandler();

              URL url = new URL();
              url.setHost("localhost");
              url.setPort(6161);
              Invoker invoker = new SimpleInvoker(url,50);

              ProxyClient proxyClient = new ProxyClient(invoker);
              final AtomicLong counter = new AtomicLong(0);
              UserService userService = proxyClient.refService(UserService.class);
              userService.save(new User());
        clientProxy.close();
    }
}</pre> <h3><a href="http://www.baiduhome.net/lib/submit/add/#一個簡單的服務-zookeeper注冊中心集群版"></a>一個簡單的服務 (zookeeper注冊中心集群版) </h3>

集群版本采用和dubbo一樣的基于注冊中心無狀態的模式。可以說是精簡版的dubbo

public class ZookeeperServer {

    public static void main(String[] args) throws IOException {

        NioConfig.registered(new KryoSerializer());
        final ServerHandler handler = new ServerHandler();
        NioConfig.registered(handler);
        NioConfig.initSessionHandler();

        handler.services.put(UserService.class, new RemoteUserService());
        Server server = new Server(new InetSocketAddress("0.0.0.0", 6161), new Acceptor("acceptor-1", new ReactorPool(1)));

        ZooKeeperClient zooKeeperClient = new DefaultZookeeperClient("192.168.1.66:2181");
        String format = "/eyer/" + URLEncoder.encode(String.format("rpc/%s:%s/Services", "localhost", 6161), "UTF-8");
        zooKeeperClient.create(format, true);
    }
}</pre> <h3><a href="http://www.baiduhome.net/lib/submit/add/#服務引用-1"></a>服務引用 </h3>

public class ZookeeperClient {
        public static void main(String[] args) throws Exception {
                  NioConfig.registered(new KryoSerializer());
                   final Handler invocationHandler = new ClientHandler();
                   NioConfig.registered(invocationHandler);
                   NioConfig.registered(new Connector("ZookeeperProxyServicePerf-connector-1",new ReactorPool(1)));
                   NioConfig.initSessionHandler();

               Invoker invoker = new ZookeeperInvoker("192.168.1.66:2181",new PollingBalance(),50);

               ProxyClient proxyClient = new ProxyClient(invoker);


               UserService userService = proxyClient.refService(UserService.class);
        System.out.println(save);
        clientProxy.close();
    }
}</pre> <p><strong>項目主頁:</strong><a href="http://www.baiduhome.net/lib/view/home/1447491651507" rel="nofollow" target="_blank">http://www.baiduhome.net/lib/view/home/1447491651507</a></p>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!