配置中心概述
对于传统的单体应用而言,常使用配置文件来管理所有配置,比如SpringBoot的application.yml文件,
但是在微服务架构中全部手动修改的话很麻烦而且不易维护。微服务的配置管理一般有以下需求:
集中配置管理,一个微服务架构中可能有成百上千个微服务,所以集中配置管理是很重要的。
不同环境不同配置,比如数据源配置在不同环境(开发,生产,测试)中是不同的。
运行期间可动态调整。例如,可根据各个微服务的负载情况,动态调整数据源连接池大小等
配置修改后可自动更新。如配置内容发生变化,微服务可以自动更新配置
综上所述对于微服务架构而言,一套统一的,通用的管理配置机制是不可缺少的总要组成部分。常见的
做法就是通过配置服务器进行管理。
常见配置中心
Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的
配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置
管理场景。
Disconf 专注于各种「分布式系统配置管理」的「通用组件」和「通用平台」, 提供统一的「配置管理
服务」包括 百度、滴滴出行、银联、网易、拉勾网、苏宁易购、顺丰科技 等知名互联网公司正在使用!
「disconf」在「2015 年度新增开源软件排名 TOP 100(OSC开源中国提供)」中排名第16强。
Spring Cloud Config简介
Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,
server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并
依据此数据初始化自己的应用。

Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可
以为所有环境中的应用程序管理其外部属性。它非常适合spring应用,也可以使用在其他语言的应用
上。随着应用程序通过从开发到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用
程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置
环境,以及可以访问用于管理内容的各种工具。
Spring Cloud Config服务端特性:
HTTP,为外部配置提供基于资源的API(键值对,或者等价的YAML内容)
属性值的加密和解密(对称加密和非对称加密)
通过使用@EnableConfigServer在Spring boot应用中非常简单的嵌入。
Config客户端的特性(特指Spring应用)
绑定Config服务端,并使用远程的属性源初始化Spring环境。
属性值的加密和解密(对称加密和非对称加密)

一 开始配置config服务

  • config-server

    • pom.xml

        <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-config-server</artifactId>
      </dependency>

      <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
      </dependency>
    • application.yml

       #服务名称
      spring:
      application:
      name: config-server
      cloud:
      config:
      server:
      git:
      uri: http://192.168.180.112/root/test.git
      username: root
      password: 19920220ljyp
      default-label: master


      #服务的端口号
      server:
      port: 9100


      #指定注册中心地址
      eureka:
      client:
      serviceUrl:
      defaultZone: http://localhost:8761/eureka/
    • 启动类

       @SpringBootApplication
      @EnableConfigServer
      public class ConfigServerApplication {

      public static void main(String[] args) {
      SpringApplication.run(ConfigServerApplication.class, args);
      }

      }
  • 在gitlab上配置服务的yml文件

 注:其实可以指定分支,也可以指定环境,但是建议用分支去区分,因为环境的话,会可能存在冲突问题。

product-service.yml

 # eureka:
# client:
# serviceUrl:
# defaultZone: http://localhost:8761/eureka/
# instance:
# instance-id: product-service8080
# prefer-ip-address: true

server:
port: 8771
spring:
application:
name: product-service
zipkin:
base-url: http://192.168.180.113:9411/
sleuth:
sampler:
probability: 1

info:
app.name: product-servic
company.name: www.topcheer.com

order-service.yml

 server:
port: 8781


#指定注册中心地址
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/

#服务的名称
spring:
application:
name: order-service
redis:
port: 6379
host: 192.168.180.113
timeout: 2000
zipkin:
base-url: http://192.168.180.113:9411/
sleuth:
sampler:
probability: 1

###配置请求超时时间
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 5000
ribbon:
##指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。
ReadTimeout: 2000
##指的是建立连接后从服务器读取到可用资源所用的时间。
ConnectTimeout: 3000
feign:
hystrix:
enabled: true
management:
endpoints:
web:
exposure:
include: "*"


#自定义负载均衡策略
#product-service:
# ribbon:
# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

api-gateway.yml

 server:
port: 9001

# spring:
# application:
# name: api-gateway




#指定注册中心地址
# eureka:
# client:
# serviceUrl:
# defaultZone: http://localhost:8761/eureka/

zuul:
routes:
order-service: /apigateway/**
product-service: /apigateway1/**
sensitive-headers:
#统一入口为上面的配置,其他入口忽略
#ignored-patterns: /*-service/**

hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 5000
ribbon:
##指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。
ReadTimeout: 2000
##指的是建立连接后从服务器读取到可用资源所用的时间。
ConnectTimeout: 5000
feign:
hystrix:
enabled: true

测试:可以直接打开yml(改名:bootstrap.yml)

  • 其他服务

     spring:
    application:
    name: product-service
    cloud:
    config:
    discovery:
    service-id: CONFIG-SERVER
    enabled: true
    label: master
    添加pom.xml <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
    </dependency> 

可以发现通过config-server可以读取配置,正常可以调用。

SpringCloud配置中心集成Gitlab(十五)的更多相关文章

  1. SpringCloud配置中心实战

    SpringCloud配置中心实战 1.统一配置中心(Config) 1.1 Spring项目配置加载顺序 1.2 配置规则详解 1.3 Git仓库配置 1.3.1 使用占位符 1.3.2 模式匹配 ...

  2. springcloud~配置中心的使用

    配置中心作为springcloud里最底层的框架,所发挥的意思是举足轻重的,所以的组件的配置信息都可以通过springcloud config来管理,它会把配置信息分布式的存储到git上,所以信息安全 ...

  3. springcloud~配置中心实例搭建

    server端 build.gradle相关 dependencies { compile('org.springframework.cloud:spring-cloud-config-server' ...

  4. springcloud配置中心

    SpringCloud Config简介 Spring Cloud Config 是 Spring Cloud 团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持 ...

  5. Consul作为SpringCloud配置中心

    一.背景介绍 在分布式系统中动态配置中,可以避免重复重启服务,动态更改服务参数等.一句话非常重要. 另外一篇文章也是这样说的,哈哈. Consul 作为Spring 推荐的分布式调度系统其也具备配置中 ...

  6. SpringCloud配置中心config

    1,配置中心可以用zookeeper来实现,也可以用apllo 来实现,springcloud 也自带了配置中心config Apollo 实现分布式配置中心 zookeeper:实现分布式配置中心, ...

  7. springcloud配置中心客户端配置遇到的坑

    1. 出错信息如下: 在启动配置中心的客户端时,报以下错误信息: Caused by: java.lang.IllegalArgumentException: Could not resolve pl ...

  8. springcloud~配置中心~对敏感信息加密

    简介 RSA非对称加密有着非常强大的安全性,HTTPS的SSL加密就是使用这种方法进行HTTPS请求加密传输的.因为RSA算法会涉及Private Key和Public Key分别用来加密和解密,所以 ...

  9. Kubernetes 使用 ingress 配置 https 集群(十五)

    目录 一.背景 1.1 需求 1.2 Ingress 1.3 环境介绍 二.安装部署 2.1.创建后端 Pod 应用 2.2 创建后端 Pod Service 2.3.创建 ingress 资源 2. ...

随机推荐

  1. Scrapy项目 - 实现腾讯网站社会招聘信息爬取的爬虫设计

    通过使Scrapy框架,进行数据挖掘和对web站点页面提取结构化数据,掌握如何使用Twisted异步网络框架来处理网络通讯的问题,可以加快我们的下载速度,也可深入接触各种中间件接口,灵活的完成各种需求 ...

  2. 2019年十大开源WEB应用防火墙点评

    2019年十大开源WEB应用防火墙点评 随着WEB应用的爆炸式成长和HTTPS加密的普及,针对网络应用层的攻击,像SQL注入.跨站脚本攻击.参数篡改.应用平台漏洞攻击.拒绝服务攻击等越来越多,传统的防 ...

  3. Maven 梳理-安装配置

    项目构建过程包括[清理项目]→[编译项目]→[测试项目]→[生成测试报告]→[打包项目]→[部署项目]这几个步骤,这六个步骤就是一个项目的完整构建过程. 下载后解压   配置环境变量 F:\jtDev ...

  4. Spring 梳理 -异常处理

    Spring 提供了多种方式将异常转换为相应 Spring框架提供的通用异常,将异常转换为HTTP状态码 Spring默认会将自身抛出的异常自动映射到合适的状态码,如下是一些示例: 举个例子,当后端抛 ...

  5. Hadoop点滴-初识MapReduce(1)

    分析气候数据,计算出每年全球最高气温(P25页) Map阶段:输入碎片数据,输出一系列“单键单值”键值对 内部处理,将一系列“单键单值”键值对转化成一系列“单键多值”键值对 Reduce阶段,输入“单 ...

  6. JavaScript总结(一)

    一.JavaScript 简介 1.1 .什么是 JavaScript? JavaScript 的简称:JS. JavaScript 是一个脚本.(不需要经过编译器编译的语言就叫做脚本) JavaSc ...

  7. java面向对象,数据类型深入

    java程序员面试题day02 1.类和对象有什么区别? java中的类通过class关键字进行定义,代表的是一种抽象的集合,在类中可以定义各种的属性和方法,代表的是每一个类的实例的特定的数据和动作, ...

  8. 【SQL server初级】SQL SERVER Transactional Replication中添加新表如何不初始化整个快照

    在SQL SERVER的复制(Replication)中,有可能出现由于业务需求变更,需要新增一张表或一些表到已有的复制(发布订阅)当中,这种需求应该是很正常,也很常见的.但是在已有的复制(发布订阅) ...

  9. C++——指针

    目录 一.地址和指针 1.1内存 1.2针和指针变量 二.指针变量 2.1始化 2.2赋值 2.3指针类型算术运算 2.4指针类型关系运算 2.5指向指针的指针 三.指针与数组 3.1指针运算 3.2 ...

  10. 前端深入之css篇|你真的了解“权重”吗?

    写在前面 权重这个概念,相信对许多进行过前端开发的小伙伴来说肯定并不陌生,有时候一个样式添加不上,我们就会一个 !important 怼上去,一切就好像迎刃而解了.但还有的时候,!important也 ...