目录结构:
Spring Cloud Alibaba是Spring Cloud下的一个子项目,Spring Cloud Alibaba为分布式应用程序开发提供了一站式解决方案,它包含开发分布式应用程序所需的所有组件,使您可以轻松地使用Spring Cloud开发应用程序,使用Spring Cloud Alibaba,您只需要添加一些注解和少量配置即可将Spring Cloud应用程序整合Alibaba的分布式解决方案,并使用Alibaba中间件构建分布式应用程序系统。
1、项目所使用的的版本
Spring Cloud Alibaba Version | Spring Cloud Version | Spring Boot Version |
2.2.9.RELEASE | Spring Cloud Hoxton.SR12 | 2.3.12.RELEASE |
2、Spring Cloud Alibaba 版本及其自身所适配的各组件对应版本:
Spring Cloud Alibaba Version | Nacos Version | Sentinel Version | Seata Version | RocketMQ Version | Dubbo Version |
2.2.9.RELEASE | 2.0.4 | 1.8.5 | 1.5.2 | 4.9.4 | 2.7.13 |
Nacos是阿里巴巴2018年7月推出来的一个开源项目,是一个构建微服务应用的服务注册与发现、配置管理平台;
Nacos 属于Spring Cloud Alibaba下的一个组件;
Nacos 约等于 Spring Cloud Eureka(注册中心)+ Spring Cloud Config(配置中心)
Nacos官网:https://nacos.io/
服务端(部署一个nacos-server)+ 客户端(你的各个服务)
步骤:
1、下载Nacos的二进制压缩包
下载地址:https://github.com/alibaba/nacos/releases
2、解压下载下来的Nacos的二进制压缩包
tar -zxvf nacos-server-2.0.4.tar.gz
3、启动nacos server
[root@localhost bin]# ./startup.sh -m standalone
注:单机环境必须带-m standalone参数启动,否则无法启动,不带参数启动的是集群环境
4、访问nacos的web客户端地址:http://ip地址:8848/nacos
使用默认的用户名:nacos、密码:nacos
5、关闭nacos server
[root@localhost bin]# ./shutdown.sh
Nacos注册中心可以说是类似于Eureka-server的功能
微服务开发是controller调用controller,调用者是服务消费者,被调用者是服务提供者,服务消费者和服务提供者是相对概念,服务消费者也可以被另一个服务调用,那么此时的服务消费者也是一个服务提供者;
在实际开发中,我们会把所有服务都注册到nacos注册中心上,由nacos去维护和管理我们的所有服务。
5.1、实现服务提供者
1、pom.xml 文件中引入Nacos Discovery Starter依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.9.RELEASE</version> </dependency>
2、配置文件application.yml中添加Nacos Server地址
spring:
cloud:
nacos:
discovery:
server-addr: http://ip地址:8848/nacos
username: nacos
password: nacos
application:
name: nacos-provider
注意:如果不想使用Nacos作为你的服务注册与发现,可以将spring.cloud.nacos.discovery.enabled 设置为 false。
3、启动项目,此时就可以在Nacos的web管控台上看到注册上来的服务信息了;
5.2、实现服务消费者
消费者应用比提供者应用要稍微复杂一点,因为在消费端需要去调用提供者提供的REST服务,此时需要用到RestTemplate、OpenFeign及负载均衡Spring Cloud LoadBalancer。
1、添加OpenFeign、Nacos Discovery Starter依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
2、配置文件application.yml中添加Nacos Server地址
spring:
cloud:
nacos:
discovery:
server-addr: http://ip地址:8848/nacos
username: nacos
password: nacos
application:
name: nacos-consumer
3、新建Feign接口,调用服务提供者
// nacos-provider是服务提供者的应用名,也就是注册到Nacos中的应用名 @FeignClient(value = "nacos-provider") public interface ProductFeign { // 服务提供者对应的controller接口 @GetMapping("/product/{id}")