20210122 Spring Cloud Alibaba - 拉勾教育
Spring Cloud Alibaba 出现的背景
-
第一代 Spring Cloud (主要是 Spring Cloud Netflix )很多组件已经进入停更维护模式
-
SCA 是由一些阿里巴巴的开源组件和云产品组成的, 2018 年, Spring Cloud Alibaba 正式入住了 Spring Cloud 官方孵化器。
-
在父 pom 中引入 SCA 依赖
<!--SCA --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <!--SCA -->
Nacos 服务注册和配置中心
- 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
- Nacos ( Dynamic Naming and Configuration Service )是阿里巴巴开源的一个针对微服务架构中服务发现、配置管理和服务管理平台。
- Nacos 就是注册中心 + 配置中心的组合( Nacos = Eureka+Config+Bus )
- Nacos 官网
- Nacos GitHub
- Spring Cloud Alibaba
2021年1月22日
最新稳定版本是1.4.1
,最新版本已到 2- 视频使用版本:
1.2.0
- 可以集成 Dubbo 作为 Dubbo 的注册中心
Nacos 功能特性:
- 服务发现与健康检查
- 动态配置管理
- 动态 DNS 服务
- 服务和元数据管理(管理平台的角度, Nacos 也有一个 ui 页面,可以看到注册的服务及其实例信息(元数据信息)等),动态的服务权重调整、动态服务优雅下线,都可以去做
Nacos 单例服务部署:
Linux : sh startup.sh -m standalone
Windows : cmd startup.cmd
Nacos 管理界面:
http://127.0.0.1:8848/nacos/#/login
默认端⼝:8848
账号和密码:nacos/nacos
Nacos 相关依赖
<!--nacos service discovery client依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--nacos config client 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
配置示例(bootstrap.yml
):
spring:
cloud:
nacos:
discovery:
# 集群中各节点信息都配置在这里(域名-VIP-绑定映射到各个实例的地址信息)
server-addr: 127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850
# nacos config 配置
config:
server-addr: 127.0.0.1:8848,127.0.0.1:8849,127.0.0.1:8850
# 锁定server端的配置文件(读取它的配置项)
namespace: 07137f0a-bf66-424b-b910-20ece612395a # 命名空间id
group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置
file-extension: yaml #默认properties
# 根据规则拼接出来的dataId效果:lagou-service-resume.yaml
ext-config[0]:
data-id: abc.yaml
group: DEFAULT_GROUP
refresh: true #开启扩展dataId的动态刷新
ext-config[1]:
data-id: def.yaml
group: DEFAULT_GROUP
refresh: true #开启扩展dataId的动态刷新
Sentinel 分布式系统的流量防卫兵
Sentinel 分为两个部分:
- 核心库:( Java 客户端)不依赖任何框架 / 库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。
- 控制台:( Dashboard )基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。
Sentinel Dashboard:
启动: java -jar sentinel-dashboard-1.7.1.jar &
⽤户名/密码: sentinel/sentinel
Sentinel 依赖:
<!--sentinel 核⼼环境 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
配置文件:
spring:
cloud:
sentinel:
transport:
dashboard: 127.0.0.1:8080 # sentinel dashboard/console 地址
port: 8719 # sentinel会在该端口启动 http server,那么这样的话,控制台定义的一些限流等规则才能发送传递过来,如果8719端口被占用,那么会依次+1
代码相关:
@SentinelResource
- 兜底类中的方法为
static
静态方法 - 可以基于 Nacos 实现 Sentinel 规则持久化