selector

RPC框架简介

2019-01-16  本文已影响14人  爱漫爱

参考性能基础之常见RPC框架浅析

什么是RPC

RPC:Remote Produre Call-远程过程调用,像调用本地方法一样调用远程方法

RPC原理

RPC采用客户端(服务调用方)/服务端(服务提供方)模式,各自独自运行。客户端需要通过引用需要使用的接口,接口的实现和运行都是在服务端。RPC主要的依赖的技术包括序列化、反序列化和数据传输协议。


2019-01-14.17.45.32-image.png

一些基础概念

RPC时序图

2019-01-15.12.45.18-image.png

关于时序图的一些解释:

常见RPC框架

常见RPC框架方案有RMI(JDK自带),Hessian,Dubbo,Hprose,Thrift,HTTP等

RMI

RMI调用过程

2019-01-15.17.23.19-6401.png

Java RMI基本概念

在RMI调用中,有以下几个核心概念

1.通过接口进行远程调用

2.通过客户端stub对象和服务端skeleton对象帮助远程调用伪装成本地调用

3.通过RMI注册服务完成服务的注册与发现

Java RMI示例

接口

HelloService

// 必须继承Remote接口
public interface HelloService extends Remote {
    String sayHello() throws RemoteException;
}

接口实现

// 必须继承UnicastRemoteObject类
public class HelloServiceImpl extends UnicastRemoteObject implements HelloService {

    // 必须实现构造方法
    public HelloServiceImpl() throws RemoteException {
        super();
    }

    public String sayHello() throws RemoteException {
        return "Hello World";
    }
}

服务端(Server)

public class RmiServer {
    public static void main(String[] args) throws RemoteException {
        // 初始化服务对象示例
        HelloService helloService = new HelloServiceImpl();
        // 创建一个本地RMI服务,监听1099端口
        Registry registry = LocateRegistry.createRegistry(1099);
        // 将示例对象注册绑定到服务商,客户端可以通过Hello这个名字查找远程对象
        registry.rebind("Hello", helloService);
    }
}

客户端(Client)

public class RmiClient {
    public static void main(String[] args) throws RemoteException, NotBoundException {
        // 获取注册服务示例,这里假定获取的注册服务部署在本机上,并监听1099端口
        Registry registry = LocateRegistry.getRegistry();
        // 从注册中心查找服务名为Hello的远程对象
        HelloService helloService = (HelloService) registry.lookup("Hello");
        // 发起远程调用
        System.out.println(helloService.sayHello());
    }
}

Dubbo

Dubbo架构

2019-01-15.17.08.47-image.png
上一篇 下一篇

猜你喜欢

热点阅读