Spring Cloud Alibaba(一)
一、亿级流量电商网站微服务架构详解
- 图解架构
-
微服务架构优势
- 高可用(核心业务不出问题、边缘业务出问题不影响整个业务)
- 项目开发管理难度低(代码冲突等…)
- 更自由的添加服务器
- 自然水平拆分数据库
- …
-
微服务架构劣势
- 分布式事务(数据一致性问题)
- 维护成本变高
-
更适合大型团队
二、 nacos注册中心
-
引入客户端Jar包
-
application.yml 添加配置
- spring.cloud.nacos.discovery…
- 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的注解进行调用
- @FeignClient
-
原理
-
动态代理
-
通过拼接URL生成地址 通过Ribbon进行远程调用
-
四、Sentinel分布式限流降级组件
-
高可用
-
边缘服务出现问题不影响主业务运行
-
服务出现问题
-
服务降级(Feign Fallback)
- 通过补偿手段 保证数据最终一致性
-
服务限流
-
通过Redis
- 通过压力测试 测试到接口并发数
- 通过Redis进行原子计数器 实现限流功能
-
通过Sentinel
-
使用sentinel-dashboard服务端(默认为8080端口)
-
服务端画面可以收集到客户端的访问数据
-
通过画面控制 (QPS:每秒访问次数)
-
达到限流次数之后
- 只访问规定次数
- FLow Limiting
-
-
-
服务熔断
-
调用的时候到达一定次数之后 不再调用远程方法(直接调用本地的方法)到达一定时间后 试探性调用
-
打开熔断开关
-
使用方法
-
通过sentinel-dashboard配置
-
RT(异常频率)
-
-
-
-
-
实战使用
- 引入Pom配置
- 配置
- feign.sentinel.enable = true
- Feign接口上添加FallBack方法(降级方法)
- 降级方法中记录日志 添加到数据库之类的 后期使用定时任务进行数据的补偿
-
原理
五、Seata分布式事务
- 实战使用
- 搭建Seata服务端 执行数据库脚本
- 项目中引入Seata客户端
- 添加注解
- @GlobalTransactional
- 原理解析
- 几种分布式模式
- AT模式(默认)
- Server端负责协调服务
- 每个服务正常调用
- 服务执行的结果通知到协调服务
- 事务不一致的情况下 协调服务发起事务回滚请求
- 利用回滚日志反向补偿 可以理解Mysql的Undo日志
- 事务一致的情况下 直接提交服务
- TCC模式(try commit cancel)
- AT模式(默认)
- 底层使用的大量的锁 对于高并发的支持不好!
- 对于并发支持不好 但是对于数据一致性支持较好!
- 几种分布式模式
六、Spring Cloud Gateway
-
GateWay网关+Pinpoint链路追踪+Prometheus&
-
理解网关
-
类似于设计模式中的门面模式
-
所有后端服务通过网关访问、前端访问通过网关进行服务的访问
-
实战使用
-
Pom引入
-
配置
-
功能列举
- 统一路由
- 大促限流
- 权限认证
-
-
原理
-