dubbo之原理

RPC原理

RPC就是远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。

原理

dubbo之原理_第1张图片

 一个完整的RPC主要包括三部分:

        1.服务注册中心(Registry):负责将本地服务发布成远程服务,并进行管理,提供给消费者使用

        2.服务提供者(RPC Server):负责提供接口定义和服务实现类

        3.服务消费者(RPC Client):通过远程代理调用远程服务

过程:

        1.服务提供者启动后向注册中心注册机器i、端口以及提供的服务列表

        2.服务消费者启动后向注册中心获取服务提供者的服务列表

        3.服务注册中心可实现负载均衡和故障切换

RPC调用过程

dubbo之原理_第2张图片 

1.客户端调用服务

2.客户端存根(Client stub)接收到调用后,负责将方法、参数等组装成能够进行网络传输的消息体

3.客户端将消息发送到服务端

4.服务端存根(Server stub)收到消息后进行反序列化

5.服务端存根(Server stub)根据结果调用服务

6.执行服务并将结果返回给服务端存根(Server stub)

7.服务端存根(Server stub)将返回结果进行序列化

8.服务端将信息发送给客户端

9.客户端存根(Client stub)接收到结果后,进行反序列化

10.客户端得到结果

RPC 就是要把 2、3、4、7、8、9 这些步骤都封装起来

http与rpc的区别

        1.rpc基于tcp协议,也可以基于http协议;http基于http协议

        2.rpc可以让请求报文体积更小,提高传输效率;http请求中会包含很多无用的信息

        3.rpc可以基于thrift实现高效的二进制传输,http大部分是通过json来实现的,字节大小和序列化耗时都比thrift要更消耗性能

        4.rpc自带负载均衡,http需要配置nginx来实现

        5.rpc内部的服务调用,性能消耗低,传输效率高,服务治理方便,http用于对外的异构环境,浏览器接口调用,APP接口调用,第三方接口调用等

dubbo原理

原理

dubbo之原理_第3张图片

 

主要包括五个节点:Provider、Consumer、Container、Register、Monitor

  1. Provider:服务提供者
  2. Consumer:服务订阅者
  3. Container:服务运行的容器
  4. Register:注册中心
  5. Monitor:监控中心,统计服务调用次数和调动时间

dubbo工作过程:

    1.服务容器负责启动,加载,运行服务提供者。
    2.服务提供者在启动时,向注册中心注册自己提供的服务。
    3.服务消费者在启动时,向注册中心订阅自己所需的服务。
    4.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
    5.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
    6.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

架构原理

dubbo架构有10层:

    service层(接口层):给服务提供者和消费者实现的(留给开发人员实现)
    config层(配置层):针对dubbo进行各种配置。
    proxy层(服务代理层):服务提供者调用的是接口,需要实现类,所以先生成动态代理类。
    registry层(服务注册层):负责服务的注册与发现
    cluster层(集群层):封装多个服务提供者的路由及负载均衡,将多个实例组合成一个服务。
    monitor层(监控层):对rpc接口的调用次数和调用时间进行监控。
    protocol层(协议层)(远程调用层):封装rpc调用,使用不同协议,如:dubbo、rest、……等。
    exchange层(信息交换层):封装请求响应模式,同步转异步。
    transport层(网络传输层):封装netty和mina为统一接口。
    serialize层:(数据序列化层):用于序列化数据

你可能感兴趣的:(Java,spring,dubbo,java,rpc,http)