以下是使用Spring Cloud Alibaba搭建微服务的基本步骤,包括Nacos作为服务注册和发现中心,Feign用于服务间调用,以及Gateway作为API网关。
- 创建一个Maven项目作为父项目,添加Spring Cloud Alibaba依赖。
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
- 创建一个服务提供者模块,并添加Nacos Discovery依赖。
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
- 在application.properties中配置Nacos服务器地址。
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=provider-service
- 启动类添加
@EnableDiscoveryClient
注解。
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
- 创建一个服务消费者模块,并添加Feign依赖。
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
- 启动类添加
@EnableFeignClients
注解。
@SpringBootApplication
@EnableFeignClients
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
- 创建一个API接口,并使用Feign进行远程调用。
@FeignClient("provider-service")
public interface ProviderClient {
@GetMapping("/greet")
String greet(@RequestParam(value = "name") String name);
}
- 创建一个API网关模块,并添加Gateway依赖。
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
</dependencies>
- 在application.properties中配置Gateway路由规则。
spring.cloud.gateway.routes[0].id=greet-service
spring.cloud.gateway.routes[0].uri=lb://provider-service
spring.cloud.gateway.routes[