不了解此套教程的可以移步之前章节
1.微服务解决方案 – Spring Cloud Alibaba (一)服务的注册与发现
2.微服务解决方案 – Spring Cloud Alibaba (二)服务提供者
3.微服务解决方案 – Spring Cloud Alibaba (三)服务消费者(Feign)
4.微服务解决方案 – Spring Cloud Alibaba (四)服务熔断
5.微服务解决方案 – Spring Cloud Alibaba (五)分布式配置中心
6.微服务解决方案 – Spring Cloud Alibaba (六)Dubbo远程过程调用
统一的依赖
我们选择的注册中心是nacos
,这里可以参照dubbo-spring-boot
项目里的sample
Github
<properties>
<dubbo.version>2.7.3</dubbo.version>
<dubbo-nacos.version>1.1.3</dubbo-nacos.version>
<spring-boot-mapper.version>2.1.5</spring-boot-mapper.version>
<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
<spring-cloud-alibaba.verion>2.1.0.RELEASE</spring-cloud-alibaba.verion>
<alibaba-spring-context-support.version>1.0.2</alibaba-spring-context-support.version>
</properties>
<dependencies>
<!-- Spring Cloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud Alibaba -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.verion}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Apache Dubbo -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>${dubbo-nacos.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-actuator</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-serialization-kryo</artifactId>
<version>${dubbo.version}</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-common</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.spring</groupId>
<artifactId>spring-context-support</artifactId>
<version>${alibaba-spring-context-support.version}</version>
</dependency>
</dependencyManagement>
使用idea
托管。
接口规范
提供一个接口规范,等下服务提供者需要实现接口规范,这个规范是单独一个项目。
public interface EchoService {
String echo(String string);
}
服务提供者
服务提供者需要把统一依赖管理的pom
和接口规范一起整合就可以了。
<!--统一依赖管理是我们的父级项目-->
<parent>
<groupId>com.laoshiren</groupId>
<artifactId>hello-apache-dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
...
<!--接口规范的依赖-->
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Spring Boot -->
<!-- Apache Dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.spring</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-serialization-kryo</artifactId>
</dependency>
<!-- Apache Dubbo -->
<!-- 依赖api 项目 -->
<!-- Projects -->
<dependency>
<groupId>com.laoshiren</groupId>
<artifactId>hello-apache-dubbo-provider-api</artifactId>
<version>${project.parent.version}</version>
</dependency>
<!-- Projects -->
实现接口规范
package com.laoshiren.apache.dubbo.provider.service.impl;
import com.laoshiren.apache.dubbo.provider.api.EchoService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Value;
// dubbo 的@Service注解指定版本号
@Service(version = "1.0.0")
public class EchoServiceImpl implements EchoService {
@Value("${dubbo.protocol.port}")
private String port;
@Override
public String echo(String string) {
return "Echo Hello Dubbo " + string+" port: "+port;
}
}
配置文件
spring:
application:
name: hello-dubbo-provider
main:
allow-bean-definition-overriding: true
dubbo:
scan:
base-packages: com.laoshiren.apache.dubbo.provider.service
protocol:
name: dubbo
## -1 自动分配端口号
port: 20880
registry:
## 注册中心地址
address: nacos://192.168.0.108:8848
写一个启动类启动SpringApplication.run(xxxx.class,args);
在nacos
的服务里必须看到provider
上线