Dubbo 是阿里开源的远程服务调用(RPC)的分布式框架,提供了 SOA 服务治理方案;它的架构主要有五个角色/核心组件,分为是 Container(容器)、Provider(服务的提供方)、Registry(注册中心)、Consumer(服务的消费方)、Monitor(监控中心)。
容器主要负责启动、加载、运行服务提供者;
同时服务提供者在启动时,向注册中心注册自己提供的服务;
消费者向注册中心订阅自己的服务;
注册中心返回服务提供者列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者;
对于服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另外一台调用;
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心;
Dubbo 在项目中是怎么用的?
Dubbo 在项目中主要用来实现不同系统之间的服务调用,由于项目是按照不同的功能分了不同的系统,按照三层架构又分了不同的服务,其中三层架构中的控制层作为服务的消费方,业务层和持久层共同作为服务的发布方,这样的架构实现了系统的服务化,提高了开发效率,实现了业务的解耦。
项目中通过 Dubbo 和 Spring 的整合,采用全 Spring 配置方式,只需要用 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 Spring 来加载Dubbo 的配置,完成了服务的发布和调用。我们主要在服务的暴露方通过dubbo:service标签来暴露服务,在服务的消费方通过dubbo:reference标签来引用服务,注册中心我们选用的是 zookeeper,对服务的URL进行了管理和配置。