• 配置中心


    服务简码 HCNF

    默认端口 8010

    默认路由 /hcnf/**

    组件编码 hzero-config

    简介

    1.1 概述

    微服务配置管理服务

    2.2 组件坐标

    <dependency>
      <groupId>org.hzero</groupId>
      <artifactId>hzero-config</artifactId>
      <version>${hzero.service.version}</version>
    </dependency>
    

    3.3 主要功能

    服务配置

    1.1 服务配置

    配置服务依赖了数据库来存储配置,且为了便于服务管理,必要的配置是:

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

    application.yml

    spring:
      application:
        name: hzero-config
      datasource:
        url: ${SPRING_DATASOURCE_URL:YOUR_URL}
        username: ${SPRING_DATASOURCE_USERNAME:YOUR_USERNAME}
        password: ${SPRING_DATASOURCE_PASSWORD:YOUR_PASSWORD}
        # hikari连接池配置,便于控制
        hikari:
          # 连接池最小空闲连接数
          minimum-idle: ${SPRING_DATASOURCE_MINIMUM_IDLE:20}
          # 连接池允许的最大连接数
          maximum-pool-size: ${SPRING_DATASOURCE_MAXIMUM_POOL_SIZE:200}
          # 等待连接池分配连接的最大时长(毫秒)
          connection-timeout: ${SPRING_DATASOURCE_CONNECTION_TIMEOUT:30000}
    

    bootstrap.yml

    # 指定服务端口,Spring Cloud体系中配置服务的端口通常为8010
    server:
      port: 8010
    management:
      server:
        port: 8011
      endpoints:
        web:
          exposure:
            include: '*'
    # 当使用eureka作为注册中心时的服务发现配置
    eureka:
      instance:
        # 以IP注册到注册中心
        preferIpAddress: ${EUREKA_INSTANCE_PREFER_IP_ADDRESS:true}
        leaseRenewalIntervalInSeconds: 10
        leaseExpirationDurationInSeconds: 30
        # 服务的一些元数据信息
        metadata-map:
          VERSION: 1.0.0
      client:
        serviceUrl:
          # 注册中心地址
          defaultZone: ${EUREKA_DEFAULT_ZONE:http://dev.hzero.org:8000/eureka}
        registryFetchIntervalSeconds: 10
        disable-delta: true
    
    

    2.2 启动类配置

    @EnableHZeroConfig是必须加上的注解,用于驱动配置服务的自动配置类,从而启用配置服务功能。

    @EnableDiscoveryClient使服务作为服务发现客户端注册到注册中心,推荐使用@EnableDiscoveryClient而不是@EnableEurekaClient,@EnableDiscoveryClient更加灵活。

    另外,由于实现与Spring Cloud的默认配置中心实现冲突,需要排除掉 ConfigServerAutoConfiguration 配置类。

    @EnableHZeroConfig
    @EnableDiscoveryClient
    @SpringBootApplication(exclude = ConfigServerAutoConfiguration.class)
    public class ConfigApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ConfigApplication.class, args);
        }
    }
    

    功能介绍

    配置服务作为配置中心,为微服务体系中的其他服务提供配置存储、配置推送的服务。

    Spring Cloud 提供了默认配置中心的实现,包含svn、git等几种实现,hzero-config则是基于数据库的实现,可以管理大数据量的配置,并且有更快捷的配置推送方式。

    配置中心仅提供配置存储、配置推送服务,在微服务体系中可以中心化的管理各个服务的配置文件,方便管控。

    为了避免配置中心不可用,推荐在每个服务中保存一份配置文件,当拉取配置失败时使用本地配置,并且部署多个配置中心节点。