本例子是一个springcloud的configserver,client例子

利用git存储各个服务的配置文件

server获取配置文件的仓库位置,并把server注册到eureka中,同时为了实现HA,多开几个server

client通过server获得git的地址,运行时利用获得的git配置文件来配置服务自身。

这样子服务的配置修改更加方便

git上的配置文件仓库地址:https://github.com/linjiaqin/springcloud-config-repo

本例子代码:https://github.com/linjiaqin/scdemo

一.ConfigServer端的配置

1.引导类

package com.ljq;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer; @SpringBootApplication
@EnableConfigServer
public class ConfigserverApplication { public static void main(String[] args) {
SpringApplication.run(ConfigserverApplication.class, args);
} }

2.配置文件

server.port=9000
spring.application.name=config-server-9000
#表示配置中心所在仓库的位置
spring.cloud.config.server.git.uri=https://github.com/linjiaqin/springcloud-config-repo.git
#仓库路径下的的相对搜索位置,可以配置多个
spring.cloud.config.server.git.search-paths=scdemo
#git的用户名
spring.cloud.config.server.git.username=×××××××
#git的密码
spring.cloud.config.server.git.password=×××××××

3.可以直接看server获取git上配置文件的json效果

4. 为了实现高可用,开启两个configserver

已经写入start-all.sh的一键脚本中

#开启两个config server
cd /home/linjiaqin/log_stream_platform/source/scdemo/configserver
nohup mvn spring-boot:run -Dserver.port=40001 > /dev/null 2>&1 &
nohup mvn spring-boot:run -Dserver.port=40002 > /dev/null 2>&1 &

5. 必须先开启configserver,才能开启configclient,configclient获取到server的地址之后就无所谓了

二.客户端

任何一个服务都可以是configclient

通过eureka获取到configserver的serverID,然后找到一个server地址去获取到git的地址,label指定了master分支,profile指定了dev配置文件

然后运行这个configclient的时候就会按照获取到的git上配置文件来运行

1.下面这个本地配置文件必须名为bootstrap

#配置服务名
spring.application.name=config-client
#服务id
server.port=50000
#配置对应文件规则中的{profile}部分
spring.cloud.config.profile=dev
#配置对应文件规则中的{label}
spring.cloud.config.label=master
#配置中心的地址,有了eureka之后不再手动配置
#spring.cloud.config.uri=http://localhost:9000/
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server eureka.client.serviceUrl.defaultZone=http://mu01:8761/eureka,http://cu01:8762/eureka,http://cu02:8763/eureka

2.Controller

package com.ljq;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
@RefreshScope
public class HelloController {
//value注解的作用是获得配置文件上的对应的key
@Value("${Parameter}")
private String Parameter; @Value("${server.port}")
private String port;
@Autowired
private Environment environment;
@GetMapping("/get_name")
public String name(){
return "Parameter:"+Parameter;
}
@GetMapping("/get_port")
public String port(){
return "Port:"+port;
}
@GetMapping("/get_name_env")
public String name_env(){
return environment.getProperty("Parameter","undefine");
}
}

3. git上的dev配置文件

Parameter:dev
spring.application.name=config-client-by-git-dev-properties
#服务id
server.port=50001

因此启动configclient时是以这个配置文件启动的,优先级比本地的要高

SpringCloud分布式微服务搭建(三)的更多相关文章

  1. SpringCloud分布式微服务搭建(一)

    本例子主要使用了eureka集群作为注册中心来保证高可用,客户端来做ribbon服务提供者的负载均衡. 负载均衡有两种,第一种是nginx,F5这种集中式的LB,对所有的访问按照某种策略分发. 第二种 ...

  2. SpringCloud分布式微服务搭建(二)

    这个例子主要是将zuul和eureka结合起来使用,zuul作为反向代理,同时起到负载均衡的作用,同时网关后面的消费者也作为服务提供者,同时提供负载均衡. 一.API网关(摘自百度) API网关是一个 ...

  3. eclipse上springCloud分布式微服务搭建-干货

    一.创建maven父工程(pom) pom.xml如下: eureka: client: registerWithEureka:false fetchRegistry:false serviceUrl ...

  4. Thrift搭建分布式微服务(三)

    第一篇 <连接配置> 第二篇 <连接池> 第三篇 标准通信 一.TCP的连接是无状态的,怎样知道我的请求被服务端接受并且正确执行了呢? 我的解决方案是使用自己定义的标准输入输出 ...

  5. Thrift搭建分布式微服务1

    Thrift搭建分布式微服务 一.Thrift是什么? 关于Thrift的基本介绍,参看张善友的文章Thrift简介. 二.为什么使用微服务? 在公司的高速发展过程中,随着业务的增长,子系统越来越多. ...

  6. Thrift搭建分布式微服务(二)

    第二篇 连接池  连接池配置,请前往Thrift搭建分布式微服务(一)  下面要介绍的其实不是单一的连接池,应该说是连接池集合.因为它要管理多个Tcp Socket连接节点,每个服务节点都有设置了自己 ...

  7. 实战SpringCloud响应式微服务系列教程(第三章)

    接着之前的: 实战SpringCloud响应式微服务系列教程(第一章) 实战SpringCloud响应式微服务系列教程(第二章) 1.1.3Reactor框架 响应式编程是一种编程模型,本节将介绍这种 ...

  8. Train-Alypay-Cloud:分布式微服务中间件sofa 开发培训(第二次)

    ylbtech-Train-Alypay-Cloud:分布式微服务中间件sofa 开发培训(第二次) 1.返回顶部 1. 这是本次培训的内容,望各位提前配好环境.工具.2.6-2.7 我们在环球金融8 ...

  9. Surging 分布式微服务框架使用入门

    原文:Surging 分布式微服务框架使用入门 前言 本文非 Surging 官方教程,只是自己学习的总结.如有哪里不对,还望指正. 我对 surging 的看法 我目前所在的公司采用架构就是类似与S ...

随机推荐

  1. C# Dispose模式详细分析

    C#Dispose模式 目的: 为了及时释放宝贵的非托管资源和托管资源,并且保证资源在被gc回收的时候可以正确释放资源,同时兼顾执行效率 必须遵循的事实: 1 托管资源释放: 由另一线程的gc进行释放 ...

  2. arcgis api for flex 除去 esri map控件中的logo标志

    在程序的applicationComplete方法中添加下列代码 private function reallyHideESRILogo(map : Map) : void { for(var i : ...

  3. SpringMVC解决跨域的两种方案

    1. 什么是跨域 2. 跨域的应用情景 3. 通过注解的方式允许跨域 4. 通过配置文件的方式允许跨域 1. 什么是跨域 跨域,即跨站HTTP请求(Cross-site HTTP request),指 ...

  4. larave5.4自定义公共函数的创建

    原文地址:http://blog.csdn.net/qq_38125058/article/details/76862151 公共函数,简单来说就是在任何地方都可以直接使用这个函数.简单介绍两种实现方 ...

  5. spring cloud 入门系列七:基于Git存储的分布式配置中心

    我们前面接触到的spring cloud组件都是基于Netflix的组件进行实现的,这次我们来看下spring cloud 团队自己创建的一个全新项目:Spring Cloud Config.它用来为 ...

  6. 如何使用 toml 配置 SpaceVim

    配置 SpaceVim 主要包括以下几个内容: 设置 SpaceVim 选项 启动/禁用模块 添加自定义插件 添加自定义按键映射以及插件配置 设置SpaceVim选项 原先,在 init.vim 文件 ...

  7. C++ Singleton (单例) 模式最优实现

    参考:http://blog.yangyubo.com/2009/06/04/best-cpp-singleton-pattern/ 索引 静态化并不是单例 (Singleton) 模式 饿汉模式 懒 ...

  8. SQL关于IN和EXISTS的用法和区别的比较

    1.exist,not exist一般都是与子查询一起使用. In可以与子查询一起使用,也可以直接in (a,b.....).2.exist会针对子查询的表使用索引. not exist会对主子查询都 ...

  9. NS3系列——eclipse + NS3环境搭建

    1. 安装NS3 (1)在 ubuntu12.04 中安装 ns3.20,首先要安装一下各种依赖软件: sudo apt-get install gcc g++ pythonsudo apt-get ...

  10. shell 中的for、while循环及if语句

    shell与其他语言一样也支持for.while循环 for循环的一般格式如下: #!/bin/sh for 变量 in 列表 do command command command ......... ...