sentinel dashboard分布式改造设计解释
1. 背景
微服务是目前java主流架构,微服务架构技术栈有,服务注册中心,网关,熔断限流,服务通讯,配置中心等组件,其中,熔断限流主要3个功能特性,限流,熔断,快速失败。
熔断限流的sentinel dashboard是演示级别,表现在metrics采集是单机版,metrics存储在内存,不支持分布式,高可用,因此需要改造

2. 参考和术语
限流 控制调入流量,防止流量过大造成系统崩溃
熔断/快速失败 断路有延迟的服务,防止雪崩效应;断路探测,恢复服务路由
3. sentinel简介
sentinel的介绍没有比官方的原理图更清楚了,总体看,sentinel是责任链,分两部分,前部分是请求处理的拓扑构建和数据统计,后部分是规则+数据得出结论,是否放行

下图是sentinel代码结构图

core 核心代码,slot链,即上原理图的责任链;
node, 统计数据结构
adapter 适配器,植入sentinel的逻辑
spring 集成spring,支持aop植入sentinel的逻辑;spring boot支持放在spring cloud Alibaba
transport 嵌入的web服务,使用命令模式
dashboard 仪表盘/管理台,采集并展示metrics,更新规则
rule-datasource 规则存储数据源
4. 场景视图

改造的模块有3个,服务注册,metrics采集,metrics持久
5. dashboard与transport原理与源码分析
dashboard和transport是重构目标,需要了解其原理,找出技术方案

dashboard 传统的spring mvc/servlet应用
transport transport是一个嵌入式的web服务,总体架构server->分发->命令处理;另外还有心跳功能
Metricfetcher metrics采集,单点多线程
SentinelApiClient 封装dashboard与服务(sentinel client)的交换,有很好的扩展性,很容易就实现新CommandHandler
6. 分布式服务组件
sentinel dashboard依赖分布式服务组件,这里简单介绍一下

改造使用运行实例服务和监听服务,分片服务,依赖znode存储等组件
Ø 运行实例服务 注册服务为sentinel client实例,注意区别,不是作业运行实例
Ø 监听服务 监听实例下线,设置需要分片标记
Ø 分片服务 重写分片服务,获取sentinel client实例作为分片item
更详细的解释,可参考
7. 技术架构
改造后的技术架构

拆分metrics fetcher
> transport注册作为分片项,元素据transport address,目标服务可以不是微服务
> transport注册和心跳,增加基于zk的实现
> 采集使用elastic-jobx定时调度
> 分布式组件选举,主节点负责分配服务实例
> 主节点监听
>> fectcher实例变更
>> 服务实例,app类型
> metrics存储/输出,elasticsearch/Prometheus
8. 弹性资源
随着弹性资源平台的完成,集成到弹性资源,提供高弹性伸缩
看弹性资源组件的设计参看:https://blog.csdn.net/szlhj/category_12446958.html
v1.0 非动态资源分配

v2.0 动态资源分配,支持服务数量的弹性(忙/闲)
更多推荐



所有评论(0)