背景
微服务是目前java主流开发架构,微服务架构技术栈有,服务注册中心,网关,熔断限流,服务同学,配置中心等组件,其中,熔断限流主要3个功能特性,限流,熔断,快速失败,本文分析限流熔断组件sentinel,为后续使用,扩展,故障排除提供技术储备,特别是dashboard的分布式改造
本文sentinel版本是1.8.8
参考和术语
限流 控制调入流量,防止流量过大造成系统崩溃
熔断/快速失败 断路有延迟的服务,防止雪崩效应;断路探测,恢复服务路由
sentinel简介
下图是sentinel的技术技术架构图
sentinel技术架构没有比官方的原理图更清楚了,总体看,sentinel是责任链架构模式,分两部分,前部分是请求处理的拓扑构建和数据统计,后部分是规则+数据得出结论,是否放行资源(api/服务方法)调用
逻辑架构
上图左边是sentinel的代码包结构,右边是分析场景
1. 代码包说明
dashboard 仪表板/管理台,transport注册,构建机器/app资料,规则管理
transport 远程服务/心跳,内置到资源内,dashboard的metric fetcher拉取资源metrics;注册到dashboard
core 核心包,sentinel核心实体,Entry,Node,插槽,Context
spring 提供aop,注解注入sentinel启动逻辑
metrics sentinel以扩展方式提供metrics
adapter 覆盖常用远程调用组件,启动sentinel
rule-datasource 规则的配置中心,实现规则热变更
集群流控
2. 分析场景说明
动态规则/transport 分析两个重要的组件
启动/初始化 分析sentinel启动,组件初始化
调用资源/构建插槽链
插槽链 sentinel核心组件,重点分析
集群流控 分析sentinel分布式流控
NEXT 源码分析