03、分布式组件 Spring Cloud
https://spring.io/projects/spring-cloud
一、SpringCloud Alibaba
1 SpringCloud Alibaba 简介
1.1 简介
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案
。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
https://github.com/alibaba/spring-cloud-alibaba
1.2 为什么要使用 ?
很多组件都停止服务
SpringClouid的几大痛点:
- SpringCloud部分组件停止维护和更新,给开发带来不便;
- SpringCloud部分环境搭建复杂,没有完善的可视化界面,我们需要大量的二次开发和定制;
- SpringCloud配置复杂,难以上手,部分配置差别难以区分和合理应用
SpringCloud Alibaba的优势:
- 阿里使用过的组件经历了考验,性能强悍,设计合理,现在开源出来大家用;
- 成套的产品搭配完善的可视化界面给开发运维带来极大的便利;
- 搭建简单,学习曲线低。
结合SpringCloud Alibaba我们最终的技术搭配方案:
- SpringCloud Alibaba - Nacos : 注册中心 (服务发现/注册)
- SpringCloud Alibaba- Nacos: 配置中心 (动态配置管理)
- SpringCloud - Ribbon: 负载均衡
- SpringCloud - Feign: 声明式HTTP客户端(调用远程服务)
- SpringCloud Alibaba - Sentinel: 服务容错(限流、降级、熔断)
- SpringCloud - Gateway: API 网关 (webflux 编程模式)
- SpringCloud - Sleuth:调用链监控
- SpringCloud Alibaba - Seata: 原Fescar, 即分布式事务解决方案
<dependencyManagement>
<dependencies>
<!-- spring cloud alibaba-->
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2 SpringCloud Alibaba - Nacos [作为注册中心]
Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台,他是使用 java 编写的,需要依赖 java 环境
Nacos 文档地址: https://nacos.io/zh-cn/docs/quick-start.html
2.1 下载 nacos-server
https://github.com/alibaba/nacos/releases
2.2 启动 nacos-server
-
cmd 运行startup.cmd 文件
-
访问localhost:8848/nacos/
-
使用默认的 nacos/nacos 登录
2.3 注册进入 nacos 中
1、首先,修改 pom.xml 文件,引入 Nacos Discovery Starter
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2、在应用的 /resource /application.properties 中配置 Nacos Server地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
3、使用@EnableDiscoveryClient 开启服务注册发现功能
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
public static void