仿写Dubbo-初识Dubbo

概念

Dubbo

在Dubbo官网介绍到,Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题。

RPC

RPC(Remote Procedure Call)远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。

Dubbo架构

Dubbo基本架构由以下四个部分组成:

仿写Dubbo-初识Dubbo_第1张图片

①提供者:提供者包括服务容器和服务提供者程序。服务容器负责启动,加载,运行服务提供者程序。服务提供者程序需要在服务启动时,向注册中心注册自己提供的服务。

②消费者:即服务消费者,是调用远程服务的消费方。消费者在启动时需要向注册中心订阅自己所需要的服务。拉取数据之后存放到本地。在远程调用时,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

③注册中心:是服务注册与发现的中心,功能是存放服务提供者列表和返回服务提供者地址列表给消费者,如果有变更,将基于长连接推送变更数据给消费者。

④监控中心:服务消费者和提供者,在内存中累计调用次数和调用时间,定时发送一次统计数据到监控中心。

Dubbo调用流程

仿写Dubbo-初识Dubbo_第2张图片

①Proxy:代理加了@Reference注解的成员变量,由Proxy负责接口调用逻辑。

②Cluster:负责感知提供者列表信息。

③Protocol:负责提供者和消费者之间协议交互数据。

④Service:真实的业务逻辑。被代理接口的实现类。 

我的架构

根据以上Dubbo相关概念以及逻辑图,我构思了一幅自己的架构图。按照这个来实现自己的Dubbo框架。我只留了这三部分

仿写Dubbo-初识Dubbo_第3张图片

 根原来的架构一样,提供者负责业务逻辑,启动时向注册中心注册自己的服务;消费者负责远程调用,启动时从注册中心拉取提供者服务列表;注册中心负责存储提供者列表。

我的调用流程

因为从零开始搞,所以我把控制层调用逻辑也加上了。我的调用流程如图:

仿写Dubbo-初识Dubbo_第4张图片

整个服务启动之后,用户发送请求调用controller,controller调用接口,接口通过代理调用服务提供者。

①Proxy:代理的是加了@Reference注解的接口。

②socket:代理通过socket向服务提供者发送交互数据,收到响应之后,把调用数据返回给接口,实现远程调用。

你可能感兴趣的:(Dubbo/Cloud,dubbo,java,rpc)