SpringCloud Alibaba

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

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

      

SpringCloud Alibaba 

        找到 Nacos 下的 bin 目录:cd  /Users/zhang/devTools/nacos/bin        进入

        Nacos 单机启动命令:sh startup.sh -m standalone

        Nacos 停止命令sh shutdown.sh

SpringCloud Alibaba

 Nacos Client 微服务

1、创建独立 springboot 应用

SpringCloud Alibaba

 2、引入 nacos client依赖

SpringCloud Alibaba

3、编写配置文件

SpringCloud Alibaba

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 地址

                

SpringCloud Alibaba

服务间通信

 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 进行管理

          

SpringCloud Alibaba

        c. 自身项目中引入 nacos client 依赖

        d. 配置配置文件      

        e. 直接启动项目出现报错,发现当前项目在启动时,并不会等待拉取配置完成之后再启动,因此直接报错,解决方案:让当前项目在启动时预先拉取配置,在已拉取的配置信息启动

        application.yml 改为 bootstrap.yml

SpringCloud Alibaba

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 文件添加所有集群节点

SpringCloud Alibaba         4. 修改 nacos 各自端口号

                 nacos/conf/applicatino.properties                8841        8843        8845       

                 注意:nacos2.0 之后端口号连续的话有可能会报错

SpringCloud Alibaba

nacos 高可用

1、配置 nginx.conf 配置文件

SpringCloud Alibaba

 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: 流量规则        熔断        负载规则….

SpringCloud Alibaba

4、Sentinel 使用

        Sentinel 开源组件

                Sentinel(项目中实现  流量控制 熔断  降级)  ——> Hystrix

                Sentinel  dashboard(哨兵仪表盘组件)  ————>Hystrix DashBoard 

5、Sentinel  实现原理

            

SpringCloud Alibaba

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

       

SpringCloud Alibaba

        用户名密码:sentinel

Sentinel  组件保护微服务

1、开发微服务        独立 springboot 应用

2、添加 rest 接口   作为 sentinel 资源

3、在微服务中引入 sentinel 组件

4、配置项目中配置文件链接到 sentinel  dashboard

SpringCloud Alibaba5、直接启动微服务

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进行处理,非常感谢!

上一篇 2022年6月23日
下一篇 2022年6月23日

相关推荐