一、dubbo基本原理
dubbo架构图如下:
节点角色说明
调用关系说明:
0.服务容器负责启动,加载,运行服务提供者。
1.服务提供者在启动时,向注册中心注册自己提供的服务。
2.服务消费者在启动时,向注册中心订阅自己所需的服务。
3.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
具体详细内容请参加dubbo官方文档
http://dubbo.apache.org/en-us/
二、入门demo简介
该demo包含三个项目,分别是:
服务提供端项目:provider
服务消费端项目:consumer
共用服务接口项目:api
依赖关系如图:
api项目是一个jar项目,将生成的jar打包到maven仓库,作为provider和consumer项目的依赖导入。
三、dubbo-远程调用(RPC)具体实现
1、启动zookeeper
在启动服务提供者项目之前要先启动zookeeper,因为我们需要把服务提供方注册到zookeeper中,然后才能被服务消费方发现并调用。
基于Docker安装zookeeper:
dockers search zookeeper
docker pull zookeeper
2.dubbo接口服务api项目
新建maven项目api,注意将其pom.xml中的打包方式改为jar
然后在com.dubbo.api.service包下新建DemoService接口,如下:
public interface DemoService {
String sayHello(String name);
}
项目结构如图:
然后编译项目(install一下即可),在E:\temp\api\target\目录下找到该jar,然后打包到本地maven仓库,打开cmd命令窗口,输入以下令如下:
mvn install:install-file -Dfile=E:\temp\api\target\api.jar -DgroupId=com.dubbo.api -DartifactId=api -Dversion=1.0.0 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true
注意:jar路径该为你自己的路径
三.dubbo服务提供者provider项目
新建maven项目provider,并在pom.xml中添加以下依赖:
<dependency>
<groupId>com.dubbo.api</groupId>
<artifactId>api</artifactId>
<version>1.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
<dependency>
<groupId>com.alibaba