Spring Cloud Alibaba(一)

Spring Cloud Alibaba(一)

一、亿级流量电商网站微服务架构详解

  • 图解架构

在这里插入图片描述

  • 微服务架构优势

    • 高可用(核心业务不出问题、边缘业务出问题不影响整个业务)
    • 项目开发管理难度低(代码冲突等…)
    • 更自由的添加服务器
    • 自然水平拆分数据库
  • 微服务架构劣势

    • 分布式事务(数据一致性问题)
    • 维护成本变高
  • 更适合大型团队

二、 nacos注册中心

  • 引入客户端Jar包

  • application.yml 添加配置

    • spring.cloud.nacos.discovery…
      在这里插入图片描述
  • nacos图形界面

    • 画面展示

      在这里插入图片描述

  • 远程调用 通过服务名称

    • Nacos默认继承了Ribbon的支持

    • RestTemplate添加 @LoadBalanced 支持服务间通过服务名调用(默认是轮询的负载均衡)

      在这里插入图片描述

  • 当前架构

    在这里插入图片描述

  • RestTemplate远程通过服务名调用的原理

    • 通过Ribbon进行负载均衡和服务调用
    • LoadBalancerInterceptor
      • 切出url中的域名,去注册中心中获取服务名对应的机器Ip和Port
    • 定时拉取服务列表 更新服务
  • Nacos

    • 启动时注册到注册中心
    • 定时任务 心跳
  • 当前已实现 添加服务器负载均衡 不需要修改任何配置

    • 通过心跳或者注册到注册中心实现
  • 当前访问的机器如果已经下线依旧发送请求时

    • Ribbon会提供Retry机制
  • 服务注册与发现的高并发测试

    • TPS可以达到13000以上
  • Nacos支持高并发原理

    • 高并发的实现

    • 服务注册与拉取的读写冲突问题

      • 防止脏读问题

        • 写入之前加锁 拉取服务阻塞
        • 大量加锁 会影响并发问题
      • CopyOnWrite思想

        • 复制副本 写入副本当中 然后替换的真正的注册表中
        • 读写分离

        在这里插入图片描述

      • Eureka对于高并发的支持

        • Eureka多级缓存机制

          在这里插入图片描述

三、Feign远程调用

  • 实战使用

    • 添加Pom配置
    • 添加注解
      • @EnableFeignClients
    • 添加接口
      • @FeignClient
        • value = 调用的服务名称
      • 通过Spring Mvc的注解进行调用
  • 原理

    • 动态代理
      在这里插入图片描述

    • 通过拼接URL生成地址 通过Ribbon进行远程调用

四、Sentinel分布式限流降级组件

  • 高可用

    • 边缘服务出现问题不影响主业务运行

    • 服务出现问题

      • 服务降级(Feign Fallback)

        • 通过补偿手段 保证数据最终一致性
      • 服务限流

        • 通过Redis

          • 通过压力测试 测试到接口并发数
          • 通过Redis进行原子计数器 实现限流功能
        • 通过Sentinel

          • 使用sentinel-dashboard服务端(默认为8080端口)

            在这里插入图片描述

          • 服务端画面可以收集到客户端的访问数据

          • 通过画面控制 (QPS:每秒访问次数)

            在这里插入图片描述

          • 达到限流次数之后

            • 只访问规定次数
            • FLow Limiting
      • 服务熔断

        • 调用的时候到达一定次数之后 不再调用远程方法(直接调用本地的方法)到达一定时间后 试探性调用

        • 打开熔断开关

        • 使用方法

          • 通过sentinel-dashboard配置

          • RT(异常频率)

            在这里插入图片描述

  • 实战使用

    • 引入Pom配置
    • 配置
      • feign.sentinel.enable = true
      • Feign接口上添加FallBack方法(降级方法)
        • 降级方法中记录日志 添加到数据库之类的 后期使用定时任务进行数据的补偿
  • 原理

    • 降级原理
      • 调用使用 try catch
      • 在catch中调用降级方法
    • 限流+熔断原理
      • 滑动时间窗算法
    • QPS计算原理

五、Seata分布式事务

  • 实战使用
    • 搭建Seata服务端 执行数据库脚本
    • 项目中引入Seata客户端
    • 添加注解
      • @GlobalTransactional
  • 原理解析
    • 几种分布式模式
      • AT模式(默认)
        • Server端负责协调服务
        • 每个服务正常调用
        • 服务执行的结果通知到协调服务
          • 事务不一致的情况下 协调服务发起事务回滚请求
          • 利用回滚日志反向补偿 可以理解Mysql的Undo日志
        • 事务一致的情况下 直接提交服务
      • TCC模式(try commit cancel)
    • 底层使用的大量的锁 对于高并发的支持不好!
    • 对于并发支持不好 但是对于数据一致性支持较好!

六、Spring Cloud Gateway

  • GateWay网关+Pinpoint链路追踪+Prometheus&

  • 理解网关

    • 类似于设计模式中的门面模式

    • 所有后端服务通过网关访问、前端访问通过网关进行服务的访问

    • 实战使用

      • Pom引入

      • 配置

        在这里插入图片描述在这里插入图片描述

      • 功能列举

        • 统一路由
        • 大促限流
        • 权限认证
    • 原理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值