• 平台治理服务


    服务简码 HADM

    默认端口 8060

    默认路由 /hadm/**

    组件编码 hzero-admin

    简介

    1.1 概述

    管理服务,基础服务之一,把路由、限流、熔断等功能易用化,集中在管理服务来管控,提供自动化的路由刷新、权限刷新、swagger信息刷新服务,提供界面化的服务、配置、路由、限流、熔断管理功能以及Spring Boot Admin控制台。

    2.2 组件坐标

    3.3 主要功能

    服务配置

    1.1 服务配置

    1. 数据库配置
    2. 服务发现客户端配置

    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菜单->服务治理->服务管理

    功能说明:

    1. 创建服务
    2. 删除服务
    3. 修改服务
    4. 查询服务

    需要注意的是,服务对应的服务名和服务编码应该保持一致,且与微服务的spring.application.name保持一致。

    一般情况下,一个新服务hzero-demo按hzero规范注册到注册中心后,hzero-admin服务会监听到该hzero-demo服务的注册,并自动为其创建服务、路由,最后将路由信息应用到网关并为其api生成权限信息及swagger信息,此时该服务自动成为hzero体系中的一个可访问服务。

    如果hzero-admin服务未开启自动刷新功能,则需要手动维护路由信息、权限信息及swagger信息,而手动维护路由信息需要先手动创建服务并关联该服务创建路由。

    配置管理

    界面定位:HZERO菜单->服务治理->配置管理

    功能说明:

    1. 创建配置
    2. 删除配置
    3. 更新配置
    4. 查询配置
    5. 刷新配置

    通过服务名和服务版本定位到实例,表示配置与服务的绑定关系,如果不指定服务版本,则表示该配置会应用到该服务的所有实例。

    在创建配置、删除配置、更新配置时均会触发刷新配置,将配置信息应用到绑定服务上。

    ps. 刷新配置过程有可能由于网络原因失败,所以需要再次手动刷新配置。

    路由管理

    界面定位:Hzero菜单->服务治理->路由管理

    功能说明:

    1. 创建路由
    2. 删除路由
    3. 更新路由
    4. 查询路由
    5. 刷新路由

    在创建路由、删除路由、更新路由时均会触发刷新路由,将路由信息应用到网关服务上。

    ps. 刷新路由过程有可能由于网络原因失败,所以需要再次手动刷新路由。

    限流规则管理

    界面定位:HZERO菜单->服务治理->限流规则管理

    功能说明:

    1. 创建、更新、删除限流规则头
    2. 创建、更新、删除限流规则行
    3. 刷新限流规则

    使用方式:

    1. 创建限流规则头,指定限流方式,并选择限流规则所关联的网关服务
    2. 在限流规则头行结构中维护行信息,每个限流规则行对应一个服务路由,表示该限流规则应用到该服务路由上
    3. 点击【刷新配置】按钮将限流规则应用到所关联的网关服务,使限流规则生效

    目前仅支持用户、角色、租户、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)。