分布式链路追踪
场景
- 动态展示服务调用链路
- 分析服务调用链路的瓶颈
- 服务链路故障发现
核心思想
本质: 记录日志
-
Trace,一个请求对应一个 Trace
服务追踪单一从客户发起请求,抵达被追踪系统的边界开始,到被追踪系统向客户返回响应的过程。 -
Trace Id, 请求发送到分布式系统的入口时,服务跟踪框架为该请求分配的唯一跟踪标识
-
Span 跨度,封装日志数据
- Trace Id
- parent Id,依赖关系记录
- 开始时间戳
- 结束时间戳
- 请求信息
- span Id
-
Span 核心事件
CS :client send/start 客户端/消费者发出⼀个请求,描述的是⼀个span开始
SR: server received/start 服务端/⽣产者接收请求 SR-CS属于请求发送的⽹络延 迟
SS: server send/finish 服务端/⽣产者发送应答 SS-SR属于服务端消耗时间
CR:client received/finished 客户端/消费者接收应答 CR-SS表示回复需要的时 间(响应的⽹络延迟)
消费者CS ———————————>生产者SR
消费者CR <———————————生产者SS
Spring Cloud Sleuth
追踪服务框架,记录日志的方式来记录踪迹数据。服务请求经过哪些服务,服务处理时长。
Zipkin
Sleuth 的数据信 息发送给 Zipkin 进⾏聚合,利⽤ Zipkin 存储并展示数据。
Zipkin 包括Zipkin Server和 Zipkin Client两部分,Zipkin Server是⼀个单独的服 务,Zipkin Client就是具体的微服务
统一认证方案
认证:验证用户的合法身份,才能访问受保护的资源
单点登录: ⼀个认证中⼼(充当认证平台⻆⾊),所有的服务都要到这个认证中⼼做认证。只 做⼀次登录,就可以在多个授权范围内的服务中自由访问
OAuth2授权过程
- 请求授权
- 用户(资源所有者)确认登录
- 客户端(第三方网站)收到授权许可,向认证服务器申请令牌
- 认证服务器验证授权许可 返回 Access Token
- 客户端携带Access Token 访问资源服务器
- 资源服务器 验证 Access Token 有效性
- 返回受保护的资源给客户端
JWT
JSON Web Token
结构
三部分,xxx.yyy.zzz
- Header, 令牌的类型及使用的哈希算法,Base64编码得到第一部分
- Payload,
- Signature ,签名 防止 jwt 内容篡改
Spring Cloud Alibaba
Nacos
- 临时实例和持久化实例之分
- 保护阈值是[0,1]的浮点数,当前健康实例数 / 当前服务总实例数 的比例值 < 保护阈值,保护阈值触发(状态true),nacos将会把该服务所有的实例信息全部提供给消费者,防止流量洪峰到来,造成雪崩
Nacos数据模型
Namespace,Group,集群 都是为了进行归类管理,把服务和配置文件进行分类,分类后实现隔离
Namespace + Group + Service ,锁定具体服务
Namespace + Group + DataId ,锁定具体配置文件
服务下有集群,集群下有实例
Sentinel
熔断降级,流量限制的功能
分为两部分
- 核心库,java客户端 不依赖框架/库
- 控制台,Dashboard 基于 SpringBoot开发
流控规则
- 流控模式,关联 A接口调用B, 流控模式 配置A关联 B。当B接口调用达到阈值,限流 A接口











网友评论