配置中心概述
对于传统的单体应用而言,常使用配置文件来管理所有配置,比如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. 难题解决:Mycat数据库中间件+Mybatis批量插入数据并返回行记录的所有主键ID

     一.mybatis的版本必须为3.3.1及其以上 项目所依赖的mybatis的版本必须为3.3.1及其以上,低版本的不行,保证hap项目的依赖的mybatis的jar的版本必需为需要的版本: 二.在 ...

  2. 经典案例复盘——运维专家讲述如何实现K8S落地(摘抄)

    以下是运满满K8s容器化进程记录,摘抄一下,方便以后查阅. 背景介绍 运满满自开始微服务改造以来,线上线下已有数千个微服务的 Java 实例在运行中.这些 Java 实例部署在数百台云服务器或虚机上, ...

  3. Docker系列(四):容器之间的网络通信

    首先我们需要知道:两个容器要能通信,必须要有属于同一个网络的网卡. 先来看下正常情况下我们的容器默认是否是能通信的,这里运行两个测试容器: docker run -it --name=bbox1 bu ...

  4. ServiceStack.Redis高效封装和简易破解

    1.ServiceStack.Redis封装 封装的Redis操作类名为RedisHandle,如下代码块(只展示部分代码),它的特点: 1)使用连接池管理连接,见代码中的PooledClientMa ...

  5. python爬虫—— 抓取今日头条的街拍的妹子图

    AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 近期在学习获取j ...

  6. windows下python和pycharm安装及其使用

    1.python安装及环境变量配置 1.1 python安装 1.1.1 python下载 官网下载:https://www.python.org/ Downloads-Windows(Mac os ...

  7. Java后台开发方向面试题集合

    内容会不断更新. 初衷是每次看面经肯定都会有一些一时反应不过来的问题,希望集中记录一下便于自己查看. 而答案部分谷歌就很好,当然有些问题可能需要多次谷歌. 对于一些记不住的答案,我也会持续写上一些. ...

  8. [go设计模式]简单工厂模式

    优点 工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可 ...

  9. guava缓存批量获取的一个坑

    摘要 Guava Cache是Google开源的Java工具集库Guava里的一款缓存工具,一直觉得使用起来比较简单,没想到这次居然还踩了一个坑 背景 功能需求抽象出来很简单,就是将数据库的查询sth ...

  10. ant path匹配原则

    ant path匹配原则 又称路径匹配原则,spring中的相关策略类org.springframework.util.AntPathMatcher 路径模式使用了apache ant的路径样式 ap ...