zoukankan      html  css  js  c++  java
  • spring cloud: 使用consul来替换config server

    上一篇提到了,eureka 2.x官方停止更新后,可以用consul来替代,如果采用consul的话,其实config server也没必要继续使用了,consul自带kv存储,完全可以取代config server的活儿。

    步骤如下:

    一、先添加jar依赖

    //    compile 'org.springframework.cloud:spring-cloud-starter-config'
        compile 'org.springframework.cloud:spring-cloud-starter-consul-config'  

     之前config server的依赖去掉,换成consul-config的依赖即可。

    二、修改bootstrap.yml文件

     1 spring:
     2   ...
     3   cloud:
     4     consul:
     5       host: 127.0.0.1
     6       port: 8500
     7       discovery:
     8         tags: version=1.0,author=yjmyzz
     9         healthCheckPath: /info.json
    10         healthCheckInterval: 5s
    11         instanceId: ${spring.application.name}:${spring.cloud.client.ipAddress}
    12         enabled: true
    13       config:
    14         enabled: true
    15         format: YAML
    16         prefix: config
    17         defaultContext: application
    18         profileSeparator: ','
    19         data-key: data
    20 #    config:
    21 #      label: dev
    22 #      discovery:
    23 #        enabled: true
    24 #        service-id: my-config-server
    25 #      fail-fast: true
    26 #      retry:
    27 #        max-interval: 1500
    28 #        max-attempts: 5
    29 #        multiplier: 1.2

    关键是13-19行,解释一下:

    15行 format:YAML 表示consul中的key-value中的value内容,采用YAML格式

    16行 prefix: config 表示consul用于存储配置的文件夹根目录名为config

    17行 defaultContext: application 表示配置文件对应的应用名称(eg: 你的服务如果打算取名为myApp,则这里的application就要换成myApp)

    18行 profileSeparator: ',' 表示如果有多个profile(eg: 开发环境dev,测试环境test...) ,则key名中的profile与defaultContext之间,用什么分隔符来表示(这里有点费解,后面还会详细解释)

    19行 data-key: data 表示最后一层节点的key值名称,一般默认为data

    三、consul中创建kv配置节点

    很多文章,包括官方文档这一步都讲得不明不白,关键是 节点名称的命名规则,要与bootstrap.yml中的配置一样,比如我们要创建一个test环境的配置,key名可以取为:

    config/application,test/data

    这里每一个部分,都要与上一步bootstrap.yml中的一致,上图中5个剪头所指,大家结合上一步中15-19行的解释体会一下。

    然后Value值的部分,把配置内容按yml格式填进去就行:

    tips: 平时开发时,一般使用consul dev模式,开发模式下kv存储不会持久化存储,全在内存中(重启consul就丢了!),所以一般建议yml配置文件内容,在项目中单独存一个文件,启动调试时,直接把配置文件内容贴到Value框里即可。

    好了,现在你可以试着启动下,顺利的话,应该就可以了,是不是很简单,关键还省掉了config server的部署,帮公司省了机器,别忘了让领导给你加绩效哦^_^ 

    如果希望用代码的方式来读/写 KV存储,可以用下面的方式:

    读:

    curl http://localhost:8500/v1/kv/config/application,dev/data?raw=true

    参考文档:

    1、spring cloud consul 中文文档

    2、spring cloud consul 官方文档(英文)

    3、KV Store Endpoints

  • 相关阅读:
    如何快速把 Vue 项目升级到 webpack3
    10分钟学会ES7+ES8
    数组的32场演唱会
    你做的拷贝是真的深拷贝吗
    浅谈CSS模块化
    CORS跨域资源共享你该知道的事儿
    像VUE一样写微信小程序-深入研究wepy框架
    小型Web页打包优化(下)
    PT与PX区别
    px、pt和em的区别
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/replace-config-server-with-consul.html
Copyright © 2011-2022 走看看