# Sentinel
**Repository Path**: fwu/Sentinel
## Basic Information
- **Project Name**: Sentinel
- **Description**: Sentinel 是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: a1.8
- **Homepage**: https://www.oschina.net/p/sentinel
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 394
- **Created**: 2023-04-21
- **Last Updated**: 2024-02-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Sentinel: The Sentinel of Your Microservices
### 针对官方演示版本改造成了基于底层mysql数据库存储规则&监控数据,支持集群部署,通过心跳检测各个微服务的连接并进行规则变更推送,整个服务唯一依赖MYSQL
技术方案
1、支持集群模式规则同步
2、支持规则数据持久化(采用 mysql/h2 文件内存数据库,一键启动,接入简单)
3、无需对接任何第三方,服务应用和控制台之间完成规则变更和同步工作
4、简单支持了用户、应用、权限的控制,保证多应用和用户之间协调使用
5、扩展了定时任务,实时跟踪系统异常状态,想用的人可以自己在 MonitorTask.java 中添加自己的邮件或者短信报警
## 1. 增加技术
mybatis-plus
mysql/h2 数据库持久化方案 (可以随便替换其它数据源,只需要改下配置文件 jdbc 数据源)
## 2. 核心思想
以 mysql/h2 数据库持久化方案做各种规则信息的记录
以 API 获取规则模式展示控制台具体的规则数据,实时获取服务机器规则
自定义应用服务器的启动状态,来维护服务器 sentinel 状态,和控制台的数据库做交互同步
## 3. 资源整合
整合了 API 中 HTTP 数据交互和集群流控的 jar 包,并封装在了统一的 sentinel-app-resource 模块下
[注意]:我添加了服务器重启的状态标记,所以一定要使用这个模块,才能完成服务器和控制台规则同步
增加功能
## 4. 主要功能
流控规则数据持久化
降级规则数据持久化
热点规则数据持久化
系统规则数据持久化
授权规则数据持久化
## 5. 增强功能
账户登陆信息支持
账户应用权限信息支持
账户应用操作读、写、删权限支持
控制台重启获取数据库规则数据并同步到各个应用服务器
服务器重启去请求客户端获取数据库规则并执行服务器规则刷新命令
定时任务去监控服务器资源状态,打印报警日志。使用者可以自己根据规则发送邮件或者短信报警
接入方式
## 6. 构建包和依赖环境
a、打包 sentinel-app-resource 作为依赖包,集成到应用系统,他负责维护和dashboard心跳连接,切面监控
mvn clean -U install -Dmaven.test.skip=true
b、启动 sentinel-dashboard 控制台 区分环境
c、具体案例,可以参考sentinel-app-demo 这是一个简单的系统,演示了几种规则的使用方法
## 7. 依赖示例
com.app.sentinel
sentinel-app-resource
2.0-SNAPSHOT
## 8. Portal操作方法
1. 登陆数据库
登陆 http://localhost:8080/h2
填写 JDBC URL、User Name、Password 具体参数需要自己在配置文件 application.properties 中定义
2. 配置启动账户和操作权限
直接在 h2 数据库控制到添加启动账户和操作权限(具体怎么添加数据可以自己摸索)
案例:ID username password phone 可以填写权限 (ALL,WRITE_RULE,READ_RULE,DELETE_RULE,READ_METRIC,ADD_MACHINE)
权限就是字符串加上逗号分割,如果全都有填写 [ALL], 如果只有读和删,那么填写 [READ_RULE,DELETE_RULE]
3. 配置账户应用权限
案例:ID username app_name
app_name 是服务器在控制台注册的应用名称,配置好映射关系后,这样这个用户就可以访问这些应用了
Sentinel: 首先要感谢大佬们设计出这么优秀的组件,之所以做这些增强设计,是因为并不是所有场景都能灵活对接,这个可以解耦单独对接。所以在原来的基础上做了扩展。基础功能都没有动,可以灵活进行扩展和更新,如果使用有问题,欢迎大家共同咨询沟 weixin;fwu0223