微服务迁移记(三):配置中心SpringCloud Config搭建

springboot推荐使用注解方式,减少了大量的xml配置。系统的基本配置文件我选择用yml格式,相对于properties,代码更简洁(不用重复写属性),结构化更清晰一点,读取速度也应该能略快一点吧。配置文件名bootstrap.yml优先于application.yml。

分布式配置中心,主要是将配置信息保存在配置中心的本地文件或数据库或远程版本控制中心(svn、git)中。研究了一段时间阿波罗,不知道为啥虚拟机能telnet宿主mysql,但阿波罗始终提示数据库连接不上,遂放弃。进一步研究config,并将配置数据成功保存至mysql数据库中。

一、数据库创建

建立一张tb_config_server。为防止字段与关键字重复,前面加了字母a。

akey:配置名称

avalue:配置值

application:对应注册中心注册应用的服务别名

aprofile:dev 开发环境,prd:生产环境

label:标签

DROP TABLE IF EXISTS `tb_config_server`;
CREATE TABLE `tb_config_server` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`akey` varchar(255) DEFAULT NULL,
`avalue` varchar(255) DEFAULT NULL,
`application` varchar(255) DEFAULT NULL,
`aprofile` varchar(255) DEFAULT NULL,
`label` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

增加一条测试数据:

insert into tb_config_server(akey,avalue,application,aprofile,label) values(‘site_url‘,‘http://www.baidu.com‘,‘xxproject-api-service-sys‘,‘dev‘);

其中:xxproject-api-service-sys:代表是api项目中系统维护模块服务,这个名字是这个项目注册到注册中心的别名。

二、config配置中心搭建

1. 新建项目:xxproject-config-server

2. 导包,主要是config和数据库,同时需要将config注册到注册中心,所以consul的包也导入

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
            <version> 2.1.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>
        <!-- 使用数据库配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version> 5.1.48</version>
        </dependency>
    </dependencies>

3. 编写配置文件

spring.application.name:注册到注册中心的别名,客户端通过这个别名连接配置中心。

spring.cloud.config.server.jdbc:主要是一条SQL语句,提取配置列表。

spring:
  application:
    name: config-server
  cloud:
    consul:
      host: 192.168.0.7
      port: 8500
      discovery:
        hostname: 192.168.0.6
    config:
      server:
        jdbc:
          sql: SELECT akey,avalue FROM tb_config_server WHERE application=? AND aprofile=? AND label=?
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/zyconfig??useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: 123456
  profiles:
    active: jdbc
server:
  port: 9000

4. 编写启动入口

@EnableDiscoveryClient:注册中心
@EnableConfigServer:配置中心
@SpringBootApplication
@EnableDiscoveryClient
@EnableConfigServer
public class AppConfigServer {
    public  static  void main(String[] args){
        SpringApplication.run(AppConfigServer.class,args);
    }
}

启动程序后,就可以在注册中心看到配置中心的服务,配置中心搭建完毕

三、客户端读取测试

1. config包导入

<!-- config client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
            <version> 2.1.4.RELEASE</version>
        </dependency>

2. 配置文件(使用bootstrap.yml)

spring:
  application:
    ## 系统管理服务,注册中心别名
    name: xxproject-api-service-sys
  cloud:
    config:
      discovery:
        ## 配置中心在注册中心的别名
        service-id: config-server
        enabled: true
      profile: dev
      label: dev
    consul:
      host: 192.168.0.7
      discovery:
        hostname: 192.168.0.6
      port: 8500
server:
  port: 9001

3. 启动入口

@SpringBootApplication
@EnableDiscoveryClient
public class AppService {
    public static void main(String[] args){
        SpringApplication.run(AppService.class,args);
    }
}

4. 编写简单的测试控制器

@RestController
public class testController{
    @Value("{site_url}")
    private String site_url;

    @RequestMapping("/index")
    public String index(){
        return site_rul;
    }
}

访问:http://localhost:9001/index

可以成功打印出:http://www.baidu.com

原文地址:https://www.cnblogs.com/zhouyu629/p/12311160.html

时间: 2024-09-30 15:05:00

微服务迁移记(三):配置中心SpringCloud Config搭建的相关文章

微服务迁移记(五):WEB层搭建(3)-简单的权限管理

一.redis搭建 二.WEB层主要依赖包 三.FeignClient通用接口 以上三项,参考<微服务迁移记(五):WEB层搭建(1)> 四.SpringSecurity集成 参考:<微服务迁移记(五):WEB层搭建(2)-SpringSecurity集成> 五.FreeMarker集成 参考:<微服务迁移记(五):WEB层搭建(3)-FreeMarker集成> 六.简单权限管理 实现一个简单的到按钮级权限管理,基于数据库扩展.不支持数据级权限,菜单只到二级(可以扩展至

微服务架构之「 配置中心 」

在微服务架构的系列文章中,前面已经通过文章<微服务架构之「服务网关 」>介绍过了在微服务中服务网关的原理和应用,今天这篇文章我们继续来聊一聊微服务中另外一个重要模块:「 配置中心 」.后面还会继续介绍 服务框架.服务监控.服务治理等.还是那句话,只有将这些基础设施弄清楚了,微服务实践的道路才能走的稳.走的远. 「配置中心」,顾名思义,就是用来统一管理项目中所有配置的系统.虽然听起来很简单,但也不要小瞧了这个模块.如果一个中型互联网项目,不采用配置中心的模式,一大堆的各类配置项,各种不定时的修改

微服务架构:动态配置中心搭建

版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 在微服务架构中,服务之间有着错综复杂的依赖关系,每个服务都有自己的依赖配置,在运行期间很多配置会根据访问流量等因素进行调整,传统的配置信息处理方式是将配置信息写入xml..properties等配置文件中,和应用一起打包,每次修改配置信息,都需要重新进行打包,效率极低,动态配置中心就是为了解决这一问题.动态配置中心也是一个微服务,我们把微服务中需要动态配置的配置文件存放在远程git私有仓库上,微服务会去服务器读取配置信息,当我们在本地

微服务迁移记(五):WEB层搭建(1)

WEB层是最终表现层,注册至注册中心,引用接口层(不需要引用实现层).公共服务层.用户登录使用SpringSecurity,Session保存在redis中,权限管理没有用SpringSecurity那套,自己写了一个简单的菜单.按钮权限控制.我在虚拟机192.168.0.7中搭了一个redis服务. 一.redis搭建 下载redis后,在linux下启动比较简单.需要注意的是redis.config配置: 1. 如果想配置用户名密码 requirepass 123456 2. 如果不bind

微服务迁移记(四):公共层、接口层和实现层搭建

公共层Nodule:zyproject-common,通用返回体.状态码枚举.自定义分页类.本来计划Entity放在common里的,后来想了下,还是放到接口层,反正其他层也都会引用接口层. 接口独立成一个Module:zyproject-api-service,定义访问接口,供实现类.表现层调用,其中Feign接口直接继续接口层,可以避免很多冗余代码 实现层Module:zyproject-api-service-impl,与数据库打交道,实现接口. 一.公共层 通用返回体是从网上抄的,Res

微服务架构之旅——《走进SpringCloud》

近十年国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去"能用就行"这种很low的档次了,像618.双十一这样的活动 不断逼迫我们去突破软件系统的性能上限,传统的IT企业"能用就行"的开发思想已经不能满足互联网 高并发.大流量的性能要求 .系统架构 走向分布式 已经是服务器开发领域解决该问题唯一的出路,然而分布式系统由于天生的复杂度,并不像开发单体应用一样把框架一堆就能搞定,因此各大互联网公司都在投入技术力量研发自己的基础设施.这里面比较有名的如 阿里的开源

Spring Cloud学习--配置中心(Config)

Spring Cloud学习--配置中心(Config) 一 Spring Cloud Config简介 二 编写 Config Server 三 编写Config Client 四 使用refresh端点手动刷新配置 五 Spring Config Server与Eurelka配合使用 六 Config Server的高可用 一. Spring Cloud Config简介 微服务要实现集中管理微服务配置.不同环境不同配置.运行期间也可动态调整.配置修改后可以自动更新的需求,Spring Cl

SpringCloud微服务架构第三篇

原文链接:https://www.javazhiyin.com/5130.html 微服务开发专栏:https://www.javazhiyin.com/category/springcloud Ribbon是什么? Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具. 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等.

.Net微服务实践(三):Ocelot配置路由和请求聚合

目录 配置 路由 基本配置 占位符 万能模板 优先级 查询参数 请求聚合 默认聚合 自定义聚合 最后 在上篇.Net微服务实践(二):Ocelot介绍和快速开始中我们介绍了Ocelot,创建了一个Ocelot Hello World程序,接下来,我们会介绍Oclot的主要特性路由和另外一个特性请求聚合.这些特性都是通过配置来实现的. 配置 { "ReRoutes": [], "GlobalConfiguration": {} } Ocelot的配置文件包含两个节点: