栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

sentinel dashboard分布式改造设计&实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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. elastic-job原理

elastic-job可以看作是分布式quartz,单个作业节点使用quartz调起,作业集群使用zookeeper协调

改造关联运行实例服务监听服务分片服务,依赖znode存储

Ø 运行实例服务 注册服务为sentinel client实例,注意区别,不是作业运行实例

Ø 监听服务 监听实例下线,设置需要分片标记

Ø 分片服务 重写分片服务,获取sentinel client实例作为分片item

这里不详述,可参考elastic-job的源码原理分析文章

分布式调度引擎 elastic-job3 源码分析 (四) 核心服务 I_szlhj的博客-CSDN博客

7. 技术架构

改造后的技术架构

Ø metrics fetcher分拆出来,成为独立服务

transport 保留原有metrics采集机制

elasticjob 集成elasticjob,实现分布式分片采集

持久/输出 metrics存储或输出,支持elasticsearch/Prometheus

Ø dashboard保留原有metric展示,rule库

Ø 服务增加实例服务,用于注册到zookeeper

8. 代码结构

TBD

9. 效果

TBD

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/775913.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号