Dubbo:Dubbo服务发现
文章目录
- Dubbo服务发现
- 1. Dubbo服务架构
- 2. 案例环境搭建
- 3. service2微服务
- 3.1 定义service2-api
- 3.2 定义service2-server
- 4. application1调用service2
- 4.1 引用service2
- 4.2 实现远程调用
- 5. service1微服务
- 5.1 定义service1-api
- 5.2 定义service1-server
- 5.3 application1调用service1
Dubbo服务发现
Dubbo是阿里巴巴公司开源的RPC框架,在国内有着非常大的用户群体,但是其微服务开发组件相对Spring Cloud 来说并不那么完善。
官方网站:.html
Spring Cloud Alibaba微服务开发框架集成了Dubbo,可实现微服务对外暴露Dubbo协议的接口,Dubbo协议相比RESTful协议速度更快。
RPC:RPC是远程过程调用(Remote Procedure Call)的缩写形式,调用RPC远程方法就像调用本地方法一样,非常方便。
下面案例讲解具体调用过程实现:
1. Dubbo服务架构
下图是微服务采用Dubbo协议的系统架构图:
组件说明:
- 客户端:前端或外部系统
- API网关:系统唯一入口,路由转发
- application-1 :应用1,前端提供Http接口,接收用户的交互请求
- service-1 :微服务1,提供业务逻辑处理服务
- service-2:微服务2,提供业务逻辑处理服务
交互流程:
- 网关负责客户端请求的统一入口,路由转发,前端通过网关请求后端服务。
- 网关收到前端请求,转发请求给应用。
- 应用接收前端请求,调用微服务进行业务逻辑处理
- 微服务为应用提供业务逻辑处理的支撑,为应用提供Dubbo协议接口
优势分析:
此架构同时提供RESTful和Dubbo接口服务,应用层对前端提供RESTful接口,RESTful是互联网通用的轻量级交互协议,方便前端接入系统;微服务层向应用层提供Dubbo接口,Dubbo接口基于RPC通信协议速度更快。
本架构采用阿里开源的Nacos,集服务发现和配置中心于一身,支持RESTful及Dubbo服务的注册。
2. 案例环境搭建
父工程:仍然使用nacos-dicovery。
application1:使用nacos-restful-consumer。
service1微服务:需要新建
service2微服务:需要新建
api网关:这次没有搭建
3. service2微服务
service2对外暴露dubbo协议的接口,考虑远程接口可能 会被其它多个服务调用,这里将service2的接口单独抽取出api工程,service2微服务工程的结构如下:
service2-api:存放接口,独立成一个工程方便被其它服务工程依赖。
service2-server:存放接口实现,即dubbo服务的实现部分。
3.1 定义service2-api
1、创建service2工程
父级 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"xmlns:xsi=""xsi:schemaLocation=".0.0 .0.0.xsd"><parent><artifactId>nacos-discovery</artifactId><groupId>com.yyl.nacos</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>nacos-dubbo-service2</artifactId></project>
2、创建service2-api工程
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"xmlns:xsi=""xsi:schemaLocation=".0.0 .0.0.xsd"><parent><artifactId>nacos-dubbo-service2</artifactId><groupId>com.yyl.nacos</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>service2-api</artifactId></project>
3、定义接口
package com.yyl.microservice.service2.api;/* Created by Administrator.*/
public interface Service2Api {public String dubboService2();
}
3.2 定义service2-server
1、创建service2-server工程
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"xmlns:xsi=""xsi:schemaLocation=".0.0 .0.0.xsd"><parent><artifactId>nacos-dubbo-service2</artifactId><groupId>com.yyl.nacos</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>service2-server</artifactId><dependencies><dependency><groupId>com.yyl.nacos</groupId><artifactId>service2-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies></project>
2、定义接口实现
注意:使用@org.apache.dubbo.config.annotation.Service标记dubbo服务
如下图所示:
package com.yyl.microservice.service2.service;import com.yyl.microservice.service2.api.Service2Api;/* @author Administrator* @version 1.0/
@org.apache.dubbo.config.annotation.Service
public class Service2ApiImpl implements Service2Api {public String dubboService2() {return "dubboService2";}
}
3、定义启动类
package com.yyl.microservice.service2;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/* @author Administrator* @version 1.0/
@SpringBootApplication
public class Service2Bootstrap {public static void main(String[] args) {SpringApplication.run(Service2Bootstrap.class,args);}
}
4、定义配置文件bootstrap.yml
注意:Spring Boot 2.1 需要设定 allow-bean-definition-overriding (允许bean定义重写覆盖)为true
server:port: 56040 #启动端口 命令行注入spring:application:name: dubbo-service2main:allow-bean-definition-overriding: true # Spring Boot 2.1 需要设定cloud:nacos:discovery:server-addr: 127.0.0.1:8848
dubbo:scan:# dubbo 服务扫描基准包base-packages: com.yyl.microservice.service2.serviceprotocol:# dubbo 协议name: dubbo# dubbo 协议端口port: 20891registry:address: nacos://127.0.0.1:8848application:qos-enable: false #dubbo运维服务是否开启consumer:check: false #启动时就否检查依赖的服务
5、启动service2-server
启动成功观察nacos的服务列表
6、bootstrap.yml配置说明
配置 | 说明 |
---|---|
dubbo.scan.base-packages | 指定 Dubbo 服务实现类的扫描基准包,将@org.apache.dubbo.confifig.annotation.Service 注解标注的service暴露为dubbo服务。 |
dubbo.protocol | Dubbo 服务暴露的协议配置,其中子属性 name 为协议名称, port 为dubbo协议端口可以指定多协议,如:dubbo.protocol.rmi.port=1099 |
dubbo.registry | Dubbo 服务注册中心配置,其中子属性 address 的值 “nacos://127.0.0.1:8848 ”,说明 dubbo服务注册到nacos相当于原生dubbo的xml配置中的 <dubbo:registry address="10.20.153.10:9090" /> |
bootstrap.yml内容的上半部分为SpringCloud的相关配置:
-
spring.application.name : Spring 应用名称,用于 Spring Cloud 服务注册和发现。
该值在 Dubbo Spring Cloud 加持下被视作
dubbo.application.name
,因此,无需再显示地配置dubbo.application.name
-
spring.cloud.nacos.discovery : Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
4. application1调用service2
根据dubbo服务的架构图,我们将nacos-restful-consumer作为application1,实现application1调用 service2。
4.1 引用service2
在nacos-restful-consumer工程中引用service2依赖
在pom.xml中引入service2-api的依赖
<dependency><groupId>com.yyl.nacos</groupId><artifactId>service2-api</artifactId><version>1.0-SNAPSHOT</version>
</dependency>
引入 spring-cloud-starter-dubbo依赖,它会根据接口生成代理对象
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
4.2 实现远程调用
修改nacos-restful-consumer工程的RestConsumerController:
@org.apache.dubbo.config.annotation.Reference
Service2Api service2Api;@GetMapping(value = "/service2")
public String service2(){//远程调用service2String providerResult = service2Api.dubboService2();return "远程调用 consumer dubbo invoke |"+providerResult;
}
注意:这里的 @Reference 注解是 org.apache.dubbo.config.annotation.Reference
测试: 请求:http://127.0.0.1:56020/service2
显示:
dubboService2 表明service2调用成功。
5. service1微服务
service1采用和service2相同的工程结构。
本节实现service1对外暴露dubbo接口,并用实现service1调用service2。
5.1 定义service1-api
1、创建service1工程
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"xmlns:xsi=""xsi:schemaLocation=".0.0 .0.0.xsd"><parent><artifactId>nacos-discovery</artifactId><groupId>com.yyl.nacos</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>nacos-dubbo-service1</artifactId></project>
2、创建service1-api工程
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"xmlns:xsi=""xsi:schemaLocation=".0.0 .0.0.xsd"><parent><artifactId>nacos-dubbo-service1</artifactId><groupId>com.yyl.nacos</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>service1-api</artifactId></project>
3、定义接口
package com.yyl.microservice.service1.api;/*** Created by Administrator.*/
public interface Service1Api {public String dubboService1();
}
5.2 定义service1-server
1、创建service1-server工程
由于实现service1调用service2,这里需要引入 service2依赖。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"xmlns:xsi=""xsi:schemaLocation=".0.0 .0.0.xsd"><parent><artifactId>nacos-dubbo-service1</artifactId><groupId>com.yyl.nacos</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>service1-server</artifactId><dependencies><dependency><groupId>com.yyl.nacos</groupId><artifactId>service1-api</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- 引入 service2依赖--><dependency><groupId>com.yyl.nacos</groupId><artifactId>service2-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
</dependencies>
</project>
2、定义接口实现
package com.yyl.microservice.service1.service;import com.yyl.microservice.service1.api.Service1Api;
import com.yyl.microservice.service2.api.Service2Api;/*** @author Administrator* @version 1.0**/
@org.apache.dubbo.config.annotation.Service
public class Service1ApiImpl implements Service1Api {@org.apache.dubbo.config.annotation.ReferenceService2Api service2Api;public String dubboService1() {//远程调用service2String s = service2Api.dubboService2();return "先调用 dubboService1 | 再调用"+s;}
}
3、定义启动类
package com.yyl.microservice.service1;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author Administrator* @version 1.0**/
@SpringBootApplication
public class Service1Bootstrap {public static void main(String[] args) {SpringApplication.run(Service1Bootstrap.class,args);}
}
4、定义配置文件bootstrap.yml
server:port: 56030 #启动端口 命令行注入spring:application:name: dubbo-service1main:allow-bean-definition-overriding: true # Spring Boot 2.1 需要设定cloud:nacos:discovery:server-addr: 127.0.0.1:8848
dubbo:scan:# dubbo 服务扫描基准包base-packages: com.yyl.microservice.service1.serviceprotocol:# dubbo 协议name: dubbo# dubbo 协议端口port: 20881registry:address: nacos://127.0.0.1:8848application:qos-enable: false #dubbo运维服务是否开启consumer:check: false #启动时就否检查依赖的服务
5、启动service1-server
启动成功观察nacos的服务列表
5.3 application1调用service1
1、在application1引入 service1-api的依赖
<dependency><groupId>com.yyl.nacos</groupId><artifactId>service1-api</artifactId><version>1.0-SNAPSHOT</version>
</dependency>
2、在application1的controller中调用service1接口
@org.apache.dubbo.config.annotation.Reference
Service1Api service1Api;@GetMapping(value = "/service3")
public String service3(){//远程调用service1String providerResult = service1Api.dubboService1();return "远程调用 consumer dubbo invoke |"+providerResult;
}
3、测试,请求http://127.0.0.1:56020/service3
显示 :
表明调用service1成功,service1调用service2成功。
Dubbo:Dubbo服务发现
文章目录
- Dubbo服务发现
- 1. Dubbo服务架构
- 2. 案例环境搭建
- 3. service2微服务
- 3.1 定义service2-api
- 3.2 定义service2-server
- 4. application1调用service2
- 4.1 引用service2
- 4.2 实现远程调用
- 5. service1微服务
- 5.1 定义service1-api
- 5.2 定义service1-server
- 5.3 application1调用service1
Dubbo服务发现
Dubbo是阿里巴巴公司开源的RPC框架,在国内有着非常大的用户群体,但是其微服务开发组件相对Spring Cloud 来说并不那么完善。
官方网站:.html
Spring Cloud Alibaba微服务开发框架集成了Dubbo,可实现微服务对外暴露Dubbo协议的接口,Dubbo协议相比RESTful协议速度更快。
RPC:RPC是远程过程调用(Remote Procedure Call)的缩写形式,调用RPC远程方法就像调用本地方法一样,非常方便。
下面案例讲解具体调用过程实现:
1. Dubbo服务架构
下图是微服务采用Dubbo协议的系统架构图:
组件说明:
- 客户端:前端或外部系统
- API网关:系统唯一入口,路由转发
- application-1 :应用1,前端提供Http接口,接收用户的交互请求
- service-1 :微服务1,提供业务逻辑处理服务
- service-2:微服务2,提供业务逻辑处理服务
交互流程:
- 网关负责客户端请求的统一入口,路由转发,前端通过网关请求后端服务。
- 网关收到前端请求,转发请求给应用。
- 应用接收前端请求,调用微服务进行业务逻辑处理
- 微服务为应用提供业务逻辑处理的支撑,为应用提供Dubbo协议接口
优势分析:
此架构同时提供RESTful和Dubbo接口服务,应用层对前端提供RESTful接口,RESTful是互联网通用的轻量级交互协议,方便前端接入系统;微服务层向应用层提供Dubbo接口,Dubbo接口基于RPC通信协议速度更快。
本架构采用阿里开源的Nacos,集服务发现和配置中心于一身,支持RESTful及Dubbo服务的注册。
2. 案例环境搭建
父工程:仍然使用nacos-dicovery。
application1:使用nacos-restful-consumer。
service1微服务:需要新建
service2微服务:需要新建
api网关:这次没有搭建
3. service2微服务
service2对外暴露dubbo协议的接口,考虑远程接口可能 会被其它多个服务调用,这里将service2的接口单独抽取出api工程,service2微服务工程的结构如下:
service2-api:存放接口,独立成一个工程方便被其它服务工程依赖。
service2-server:存放接口实现,即dubbo服务的实现部分。
3.1 定义service2-api
1、创建service2工程
父级 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"xmlns:xsi=""xsi:schemaLocation=".0.0 .0.0.xsd"><parent><artifactId>nacos-discovery</artifactId><groupId>com.yyl.nacos</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>nacos-dubbo-service2</artifactId></project>
2、创建service2-api工程
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"xmlns:xsi=""xsi:schemaLocation=".0.0 .0.0.xsd"><parent><artifactId>nacos-dubbo-service2</artifactId><groupId>com.yyl.nacos</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>service2-api</artifactId></project>
3、定义接口
package com.yyl.microservice.service2.api;/* Created by Administrator.*/
public interface Service2Api {public String dubboService2();
}
3.2 定义service2-server
1、创建service2-server工程
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"xmlns:xsi=""xsi:schemaLocation=".0.0 .0.0.xsd"><parent><artifactId>nacos-dubbo-service2</artifactId><groupId>com.yyl.nacos</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>service2-server</artifactId><dependencies><dependency><groupId>com.yyl.nacos</groupId><artifactId>service2-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies></project>
2、定义接口实现
注意:使用@org.apache.dubbo.config.annotation.Service标记dubbo服务
如下图所示:
package com.yyl.microservice.service2.service;import com.yyl.microservice.service2.api.Service2Api;/* @author Administrator* @version 1.0/
@org.apache.dubbo.config.annotation.Service
public class Service2ApiImpl implements Service2Api {public String dubboService2() {return "dubboService2";}
}
3、定义启动类
package com.yyl.microservice.service2;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/* @author Administrator* @version 1.0/
@SpringBootApplication
public class Service2Bootstrap {public static void main(String[] args) {SpringApplication.run(Service2Bootstrap.class,args);}
}
4、定义配置文件bootstrap.yml
注意:Spring Boot 2.1 需要设定 allow-bean-definition-overriding (允许bean定义重写覆盖)为true
server:port: 56040 #启动端口 命令行注入spring:application:name: dubbo-service2main:allow-bean-definition-overriding: true # Spring Boot 2.1 需要设定cloud:nacos:discovery:server-addr: 127.0.0.1:8848
dubbo:scan:# dubbo 服务扫描基准包base-packages: com.yyl.microservice.service2.serviceprotocol:# dubbo 协议name: dubbo# dubbo 协议端口port: 20891registry:address: nacos://127.0.0.1:8848application:qos-enable: false #dubbo运维服务是否开启consumer:check: false #启动时就否检查依赖的服务
5、启动service2-server
启动成功观察nacos的服务列表
6、bootstrap.yml配置说明
配置 | 说明 |
---|---|
dubbo.scan.base-packages | 指定 Dubbo 服务实现类的扫描基准包,将@org.apache.dubbo.confifig.annotation.Service 注解标注的service暴露为dubbo服务。 |
dubbo.protocol | Dubbo 服务暴露的协议配置,其中子属性 name 为协议名称, port 为dubbo协议端口可以指定多协议,如:dubbo.protocol.rmi.port=1099 |
dubbo.registry | Dubbo 服务注册中心配置,其中子属性 address 的值 “nacos://127.0.0.1:8848 ”,说明 dubbo服务注册到nacos相当于原生dubbo的xml配置中的 <dubbo:registry address="10.20.153.10:9090" /> |
bootstrap.yml内容的上半部分为SpringCloud的相关配置:
-
spring.application.name : Spring 应用名称,用于 Spring Cloud 服务注册和发现。
该值在 Dubbo Spring Cloud 加持下被视作
dubbo.application.name
,因此,无需再显示地配置dubbo.application.name
-
spring.cloud.nacos.discovery : Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
4. application1调用service2
根据dubbo服务的架构图,我们将nacos-restful-consumer作为application1,实现application1调用 service2。
4.1 引用service2
在nacos-restful-consumer工程中引用service2依赖
在pom.xml中引入service2-api的依赖
<dependency><groupId>com.yyl.nacos</groupId><artifactId>service2-api</artifactId><version>1.0-SNAPSHOT</version>
</dependency>
引入 spring-cloud-starter-dubbo依赖,它会根据接口生成代理对象
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
4.2 实现远程调用
修改nacos-restful-consumer工程的RestConsumerController:
@org.apache.dubbo.config.annotation.Reference
Service2Api service2Api;@GetMapping(value = "/service2")
public String service2(){//远程调用service2String providerResult = service2Api.dubboService2();return "远程调用 consumer dubbo invoke |"+providerResult;
}
注意:这里的 @Reference 注解是 org.apache.dubbo.config.annotation.Reference
测试: 请求:http://127.0.0.1:56020/service2
显示:
dubboService2 表明service2调用成功。
5. service1微服务
service1采用和service2相同的工程结构。
本节实现service1对外暴露dubbo接口,并用实现service1调用service2。
5.1 定义service1-api
1、创建service1工程
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"xmlns:xsi=""xsi:schemaLocation=".0.0 .0.0.xsd"><parent><artifactId>nacos-discovery</artifactId><groupId>com.yyl.nacos</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>nacos-dubbo-service1</artifactId></project>
2、创建service1-api工程
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"xmlns:xsi=""xsi:schemaLocation=".0.0 .0.0.xsd"><parent><artifactId>nacos-dubbo-service1</artifactId><groupId>com.yyl.nacos</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>service1-api</artifactId></project>
3、定义接口
package com.yyl.microservice.service1.api;/*** Created by Administrator.*/
public interface Service1Api {public String dubboService1();
}
5.2 定义service1-server
1、创建service1-server工程
由于实现service1调用service2,这里需要引入 service2依赖。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"xmlns:xsi=""xsi:schemaLocation=".0.0 .0.0.xsd"><parent><artifactId>nacos-dubbo-service1</artifactId><groupId>com.yyl.nacos</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>service1-server</artifactId><dependencies><dependency><groupId>com.yyl.nacos</groupId><artifactId>service1-api</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- 引入 service2依赖--><dependency><groupId>com.yyl.nacos</groupId><artifactId>service2-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
</dependencies>
</project>
2、定义接口实现
package com.yyl.microservice.service1.service;import com.yyl.microservice.service1.api.Service1Api;
import com.yyl.microservice.service2.api.Service2Api;/*** @author Administrator* @version 1.0**/
@org.apache.dubbo.config.annotation.Service
public class Service1ApiImpl implements Service1Api {@org.apache.dubbo.config.annotation.ReferenceService2Api service2Api;public String dubboService1() {//远程调用service2String s = service2Api.dubboService2();return "先调用 dubboService1 | 再调用"+s;}
}
3、定义启动类
package com.yyl.microservice.service1;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author Administrator* @version 1.0**/
@SpringBootApplication
public class Service1Bootstrap {public static void main(String[] args) {SpringApplication.run(Service1Bootstrap.class,args);}
}
4、定义配置文件bootstrap.yml
server:port: 56030 #启动端口 命令行注入spring:application:name: dubbo-service1main:allow-bean-definition-overriding: true # Spring Boot 2.1 需要设定cloud:nacos:discovery:server-addr: 127.0.0.1:8848
dubbo:scan:# dubbo 服务扫描基准包base-packages: com.yyl.microservice.service1.serviceprotocol:# dubbo 协议name: dubbo# dubbo 协议端口port: 20881registry:address: nacos://127.0.0.1:8848application:qos-enable: false #dubbo运维服务是否开启consumer:check: false #启动时就否检查依赖的服务
5、启动service1-server
启动成功观察nacos的服务列表
5.3 application1调用service1
1、在application1引入 service1-api的依赖
<dependency><groupId>com.yyl.nacos</groupId><artifactId>service1-api</artifactId><version>1.0-SNAPSHOT</version>
</dependency>
2、在application1的controller中调用service1接口
@org.apache.dubbo.config.annotation.Reference
Service1Api service1Api;@GetMapping(value = "/service3")
public String service3(){//远程调用service1String providerResult = service1Api.dubboService1();return "远程调用 consumer dubbo invoke |"+providerResult;
}
3、测试,请求http://127.0.0.1:56020/service3
显示 :
表明调用service1成功,service1调用service2成功。
发布评论