平台治理服务
服务简码
HADM
默认端口
8060
默认路由
/hadm/**
组件编码
hzero-admin
简介
1.1 概述
管理服务,基础服务之一,把路由、限流、熔断等功能易用化,集中在管理服务来管控,提供自动化的路由刷新、权限刷新、swagger信息刷新服务,提供界面化的服务、配置、路由、限流、熔断管理功能以及Spring Boot Admin控制台。
2.2 组件坐标
-
OP版本
<dependency> <groupId>org.hzero</groupId> <artifactId>hzero-admin</artifactId> <version>${hzero.service.version}</version> </dependency>
-
SaaS 版本
<dependency> <groupId>org.hzero</groupId> <artifactId>hzero-admin-saas</artifactId> <version>${hzero.service.version}</version> </dependency>
3.3 主要功能
- 服务管理
- 配置管理
- 路由管理
- 限流规则管理
- 熔断规则管理
- 服务监控管理
服务配置
1.1 服务配置
- 数据库配置
- 服务发现客户端配置
application.yml
hzero:
# Deprecated replace by hzero.auto-refresh.permission.enable
# permission:
# 是否自动刷新服务权限
# parse-permission: ${HZERO_PERMISSION_PARSE_PERMISSION:true}
config:
# 跳过特定服务的路由刷新
route:
skip-parse-services: register, gateway, oauth
auto-refresh:
# 是否开启权限自动刷新
permisson:
enable: ${HZERO_AUTO_REFRESH_PERMISSION_ENABLE:true}
# 是否开启路由自动刷新
route:
enable: ${HZERO_AUTO_REFRESH_ROUTE_ENABLE:true}
# 是否开启swagger信息自动刷新
swagger:
enable: ${HZERO_AUTO_REFRESH_SWAGGER_ENABLE:true}
2.2 启动类配置
@EnableHZeroAdmin是必须加上的注解,用于驱动管理服务的自动配置类,从而启用管理服务功能。
@EnableDiscoveryClient使服务作为服务发现客户端注册到注册中心,推荐使用@EnableDiscoveryClient而不是@EnableEurekaClient,@EnableDiscoveryClient更加灵活。
另外,通过@SpringBootApplication启动Spring Boot自动配置类,启动Spring Boot应用。
@EnableHZeroAdmin
@EnableDiscoveryClient
@SpringBootApplication
public class HzeroAdminApplication {
public static void main(String[] args) {
SpringApplication.run(HzeroAdminApplication.class, args);
}
}
服务管理
界面定位:HZERO菜单->服务治理->服务管理
功能说明:
- 创建服务
- 删除服务
- 修改服务
- 查询服务
需要注意的是,服务对应的服务名和服务编码应该保持一致,且与微服务的spring.application.name保持一致。
一般情况下,一个新服务hzero-demo按hzero规范注册到注册中心后,hzero-admin服务会监听到该hzero-demo服务的注册,并自动为其创建服务、路由,最后将路由信息应用到网关并为其api生成权限信息及swagger信息,此时该服务自动成为hzero体系中的一个可访问服务。
如果hzero-admin服务未开启自动刷新功能,则需要手动维护路由信息、权限信息及swagger信息,而手动维护路由信息需要先手动创建服务并关联该服务创建路由。
配置管理
界面定位:HZERO菜单->服务治理->配置管理
功能说明:
- 创建配置
- 删除配置
- 更新配置
- 查询配置
- 刷新配置
通过服务名和服务版本定位到实例,表示配置与服务的绑定关系,如果不指定服务版本,则表示该配置会应用到该服务的所有实例。
在创建配置、删除配置、更新配置时均会触发刷新配置,将配置信息应用到绑定服务上。
ps. 刷新配置过程有可能由于网络原因失败,所以需要再次手动刷新配置。
路由管理
界面定位:Hzero菜单->服务治理->路由管理
功能说明:
- 创建路由
- 删除路由
- 更新路由
- 查询路由
- 刷新路由
在创建路由、删除路由、更新路由时均会触发刷新路由,将路由信息应用到网关服务上。
ps. 刷新路由过程有可能由于网络原因失败,所以需要再次手动刷新路由。
限流规则管理
界面定位:HZERO菜单->服务治理->限流规则管理
功能说明:
- 创建、更新、删除限流规则头
- 创建、更新、删除限流规则行
- 刷新限流规则
使用方式:
- 创建限流规则头,指定限流方式,并选择限流规则所关联的网关服务
- 在限流规则头行结构中维护行信息,每个限流规则行对应一个服务路由,表示该限流规则应用到该服务路由上
- 点击【刷新配置】按钮将限流规则应用到所关联的网关服务,使限流规则生效
目前仅支持用户、角色、租户、URL、源地址五个维度的限流,未来会支持更加细粒度的组合维度(即多个维度组合,如某个角色对于某个URL的流量限制)。
熔断规则管理
目前使用hystrix,功能存在限制,后续会完善。
服务监控管理
使用Spring Boot Admin进行监控管理,通过服务发现找到的服务列表的actuator端点收集监控信息,在控制台上展示。
需要注意的是,被监控服务必须满足两个条件:1. 必须注册到注册中心 2. 必须依赖spring-boot-starter-actuator且开放监控所用的管理端点
监听服务注册并刷新路由、权限、swagger信息
此功能分解为三个: 1. 监听服务注册并刷新路由(添加网关到服务到映射关系) 2. 监听服务注册并刷新权限(允许请求到服务到鉴权通过) 3. 监听服务注册并刷新swagger信息(允许查看api信息和模拟调用)
监听服务注册并刷新路由
服务注册后,hzero-admin服务会监听到服务注册事件并从该服务拉取路由信息, 如果路由信息符合规范且与现有路由不冲突,则为其创建路由并应用到网关,使之可以通过网关访问。
Note: 路由信息是由hzero-admin服务管理的,拉取、解析路由信息以及通知网关的工作均由hzero-admin服务完成; 另外,可能在网络抖动等原因出现刷新失败或网关未应用路由的情况,这时需要手动调用路由刷新接口(POST /v1/refresh/route)。
监听服务注册并刷新权限
服务注册后,hzero-admin服务会监听到服务注册事件并通知hzero-iam服务从该服务拉取权限信息, 解析后存储到数据库和redis,存储到redis后,网关可获取到相应到权限信息。
Note: 监听和通知的工作由hzero-admin完成,真正的权限刷新(拉取、解析、保存权限信息及刷新到缓存)工作由hzero-iam完成; 另外,可能在网络抖动等原因出现刷新失败或缓存不一致的情况,这时需要手动调用权限刷新接口(POST /v1/refresh/permission)。
监听服务注册并刷新swagger信息
服务注册后,hzero-admin服务会监听到服务注册事件并通知hzero-swagger服务从该服务拉取swagger信息, 存储到数据库,存储到数据库后,hzero-swagger可获取到相应的swagger信息。
Note: 监听和通知的工作由hzero-admin完成,真正的权限刷新(拉取、解析、保存swagger信息)工作由hzero-swagger完成; 另外,可能在网络抖动等原因出现刷新失败或api不一致的情况,这时需要手动调用swagger刷新接口(POST /v1/refresh/swagger)。
api管控
界面定位:HZERO菜单->服务治理->api管控
功能说明:
- 在网关监控特定的api请求
- 对于每一组api,可以对ip进行黑白名单管理
使用方式:
- 在hzero-gateway服务上开启配置hzero.request.count=true,使得网关服务记录api访问信息。
- 在hzero-admin服务上开启配置hzero.metric.sync.enable=true,使得admin服务从网关收集监控信息,从而可以在管理页面上查看监控数据。 (同时可以通过hzero.metric.sync.sync-interval=60000来配置收集频率,毫秒为单位,默认为60秒收集一次。)
- 在页面上查看api监控信息,并对ip进行黑白名单管理。
请求监控
界面定位:HZERO菜单-> 开启日志追溯记录【按钮】
功能说明:
- 开启日志追溯后,即可在开启了日志追溯的服务上记录请求链信息。 目前包括http请求、sql执行、feign调用三种类型的trace记录类型,可看到调用链的顺序及嵌套关系。
- 关闭日志追溯,则会将期间发起的请求链信息生成日志分析报告展示在页面上,可导出。
使用方式:
- 在需要记录请求信息的服务上引入org.hzero.starter:hzero-starter-tracer依赖,并开启配置hzero.trace.redis-reporter.enable=true,使得服务能记录trace请求信息。
- 在页面上点击开启日志追溯,点击想测试的页面功能,完成后点击结束日志追溯生成报告。(如果数据量过大,页面展示数据被截断,此时使用导出功能)