springcloud alibaba
1、springcloud
spring团队开源微服务工具集帮助我们快速构建分布式系统(微服务系统)
提供spring组织netflix开源解决方案
2、springcloud alibaba
alibaba团队开源微服务工具集帮助我们快速构建分布式系统(微服务系统)提供alibaba解决方案
3、springcloud alibaba
最新版本: 2021.0.1.0
官方定义:spring Cloud Allibaba provides a one-stop solut ion(解决方案) for distributed application development (分布式应用开发)
spring cloud 阿里巴巴为分布式应用开发了提供一站 式解决方案
包含开发分布式应用的所有组件
4、 springcloud alibaba 特性 特点 提供了哪些组件
a. Flow control and service degradation:服务流量控制和 服务降级(熔断)====> Sentinel 替换 springcloud 原有 Systrix 组件
b. Service registration and discovery:服务注册和发现组件 ====> Nacos 替换 springcloudconsul 和 eureka 组件
c. Distributed configuration:统一配置中心组件 ====> Nacos 替换 springcloud config 组件
d. Event-driven:事件驱动利用 MQ RocketMQ ====> 事件驱动 替换Bus 组件实现消息总线
e. Message Bus:消息总线(异步处理)
f. Distributed Transaction:分布式事务 ====> Seata
g. Dubbo RPC:集成 Dubbo 实现服务间通信 ====> Dubbo RPC ==>替换原始项目中 RestTemplate Openfeign
5、微服务项目实战开发 Springcloud NetFlix + SpringCloud Spring + Springcloud Alibaba
1. 服务注册中心 ===> Nacos
2. 服务间通信负载均衡 ===> HttpRest a. ResrTemplate+Ribbon b. openfeign
3. 服务流控和服务降级 ===> Sentinel
4. 服务网关组件 ===> Gatway
5. 统一配置中心 ===> Nacos
nacos 持久化配置
1、nacos 持久化
持久化:管理的配置信息持久化
注意:默认 nacos 存在配置信息持久化,默认的持久化方式为内嵌数据库derby
缺点:无法友好的展示数据
官方建议:在生产情况下推荐将配置存入mysql数据库 注意:nacos到目前为止仅仅支持mysql
2、将nacos持久化到mysql中
a. 安装 mysql数据库服务 版本在 5.7 以后
b. 如果 nacos 持久化到 mysql 数据库
1.创建一个数据库 nacos 编码为 utf-8
2.在 nacos 库中执行 nacos-mysql.sql
3.修改 nacos 配置文件持久化到mysql 中 编辑 application.properties
springcloud alibaba 环境搭建
1、创建全局父项目
维护 springcloud 依赖 Hoxton.SR6
维护 alibaba 依赖 2.2.1.RELEASE
继承 springboot 父项目 2.2.5.RELEASE
2、父项目中的依赖维护
Nacos 组件
1、Nacos 组件 Name Service(服务注册中心) Configuration Service(配置宗鑫)
Nacos = Name + Configuration + Service
作用:服务注册中心(关注)统一配置中心
2、 使用 Nacos 组件 ====> Nacos 软件 服务注册中心
a. 访问 Nacos 官方网站:home
b. github 仓库地址:https://github.com/alibaba/nacos
c.下载地址:Releases · alibaba/nacos · GitHub
找到 Nacos 下的 bin 目录:cd /Users/zhang/devTools/nacos/bin 进入
Nacos 单机启动命令:sh startup.sh -m standalone
Nacos 停止命令sh shutdown.sh
Nacos Client 微服务
1、创建独立 springboot 应用
2、引入 nacos client依赖
3、编写配置文件
nacos server 服务注册中心细节
1、安装并启动 nacos server
默认监听 web 端口:8848
访问 web 界面:localhost/nacos 用户名密码:nacos
2、开发微服务进行服务注册
a. 创建独立 springboot 应用
b. 引入依赖 springcloud-starter-alibaba-nacos-discovery
c. 编写配置
# nacos server 总地址
spring.cloud.nacos.server-addr=localhost:8848
# 注册 nacos 地址
服务间通信
1、服务间通信
两种方式:1.Http RestTemplate 推荐 2.RPC
2、使用 Rest 方式实现服务间通信
1.RestTemplate
2. RestTemplate + Ribbon
3. OpenFeign 方式调用
nacos统一配置中心使用
1、启动 nacos server
nacos 作为统一配置中心:
1.他管理配置文件的方式是在自己所在服务器上形成一个版本库,因此不需要再创建远程版本库
2.开发微服务作为统一配置中心客户端将配置交给 nacos 进行管理
2、开发微服务作为统一配置中心客户端将配置交给 nacos 进行管理
a. 开发config client 微服务 独立 springboot 应用
b. 将自身的配置交给 nacos 进行管理
c. 自身项目中引入 nacos client 依赖
d. 配置配置文件
e. 直接启动项目出现报错,发现当前项目在启动时,并不会等待拉取配置完成之后再启动,因此直接报错,解决方案:让当前项目在启动时预先拉取配置,在已拉取的配置信息启动
application.yml 改为 bootstrap.yml
nacos 配置中心细节
1、统一配置中心 nacos
dataId细节:代表完整配置文件名称 ===> spring.cloud.nacos.config.name
完整配置文件名称 = prefix(前缀)+(env)环境 + file-extension(后缀)
dataId = spring.cloud.nacos.config.name + spring.cloud.nacos.config.file-extension
dataId = ${prefix} + ${spring.profile+active} + ${file-extension}
2、微服务拉取配置
3、统一配置中心 nacos 三个重要概念
命名空间:namespace 默认 nacos 安装完成之后会有一个默认命名空间 这个命名空间名字为 public 作用:站在项目中角度隔离每一个项目配置文件
组:group 默认 nacos 中在管理配置文件时不显示执行 group 名称之默认的组名称为 DEFAULT_GROUP 作用:站在项目中每个服务角度,隔离同一个项目中不同服务的配置
文件名:dataId 获取一个配置文件唯一标识
nacos 集群
1、集群规划
nacos01 127.0.0.1:8845
nacos02 127.0.0.1:8846
nacos03 127.0.0.1:8847
mysql 127.0.0.1:3306
nginx 127.0.0.1:8999
2、搭建 nacos 集群注意事项
a. 数据持久化必须配置 mysql 持久化
b. 要求一个机器启动时当前内存不能少于 3G
3、搭建 nacos 集群
1. 准备三个 nacos 节点,并连接 mysql 数据库
2. 重新初始化 mysql 数据
3. 修改 nacos conf 目录中 cluster.conf 文件添加所有集群节点
4. 修改 nacos 各自端口号nacos/conf/applicatino.properties 8841 8843 8845
注意:nacos2.0 之后端口号连续的话有可能会报错
nacos 高可用
1、配置 nginx.conf 配置文件
2、启动测试
Sentinel 哨兵
1、Sentinel 哨兵
作用:alibaba 开源用来对现有微服务系统进行保护 ====> 替换 Hystrix
Hystrix 豪猪 用来保护微服务系统主要用来解决服务雪崩====> 服务熔断
Sentinel 组件 用来解决服务雪崩 ===> 服务熔断机制(服务降级)、服务流控 等….
Sentinel 规则网址:Home · alibaba/Sentinel Wiki · GitHub
Sentinel 官方网址:home
2、Sentinel 简介 Sentinel 历史
- 2012年,Sentinel诞生于阿里巴巴,主打流量控制。
- 2013-2017 年,Sentinel 快速成长,成为阿里巴巴所有微服务的基础组件。它被用于6000多个应用程序,几乎涵盖了所有核心电子商务场景。
- 2018 年,Sentinel 演变为一个开源项目。
- 2020 年,Sentinel Go发布,带来云原生生态的进化。
- 2021 年,Sentinel Rust发布。
- 2022 年,Sentinel 演变为“流量治理”的云原生组件
3、Sentinel 概念
资源 Resource:java 中一切皆资源,服务/demo 资源:是一个微服务访问路径 rest 接口
规则 Rule: 流量规则 熔断 负载规则….
4、Sentinel 使用
Sentinel 开源组件
Sentinel(项目中实现 流量控制 熔断 降级) ——> Hystrix
Sentinel dashboard(哨兵仪表盘组件) ————>Hystrix DashBoard
5、Sentinel 实现原理
Sentinel DashBoard 使用
1、下载:Tags · alibaba/Sentinel · GitHub
2、运行:sentinel-dashboard-1.8.1.jar
3、直接启动 springboot 应用 jar 包
java -jar sentinel-dashboard-1.8.1.jar
注意:默认端口是 8080
进入 jar 包目录:cd /Users/zhang/devTools
指定端口启动:java -jar -Dserver.port=9191 sentinel-dashboard-1.8.1.jar
4、访问 dashboard管理界面
http://127.0.0.1:9191
用户名密码:sentinel
Sentinel 组件保护微服务
1、开发微服务 独立 springboot 应用
2、添加 rest 接口 作为 sentinel 资源
3、在微服务中引入 sentinel 组件
4、配置项目中配置文件链接到 sentinel dashboard
5、直接启动微服务6、查看启动微服务
注意:dashboard信息必须在指定服务进行资源调用之后才能进行初始化配置
关于系统吞吐量相关观念
1、QPS
Query-Per-Second:QPS 称之为系统每秒的请求数
5/s
2、RT
Response Time:RT 每个请求响应时间 单位毫秒级
Sentinel 中对系统的保护规则
1、五大规则
a. 流控规则:流量控制(flow control)
定义:其原理就是监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。
b. 降级规则:熔断降级(Degrade Service)
定义:其原理是监控应用中资源调用请求,达到指定阈值时自动触达熔断降级
c. 热点规则
热点:何为热点点即经常访问的数据。
定义:其原理很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。
d. 系统规则(Systemflow)
定义:其原理 Sentinel 系统自适应限流从整体维度对应用入口流量进行控制
e. 授权规则 黑白名单控制规则
定义: 很多时候,我们需要根据调用来源来判断该次请求是否允许放行,这时候可以使用 Sentinel 的来源访问控制(黑白名单控制)的功能。来源访问控制根据资源的请求来源(origin)限制资源是否通过,若配置白名单则只有来源位于白名单时才可通过;若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。
Sentinel 流控规则
1、流控 流量控制 FlowContorll
定义:其原理是监控应用流量的 QPS 或 并发线程指数 指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。
QPS:每秒请求书 当每秒的请求书超过指定阈值之后对当前请求进行限
来源:Lovely-Zhang-1026
声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!