本例子是一个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. 循环神经网络(RNN)--学习笔记

    一.基本概念 RNN针对的数据是时序数据.RNN它解决了前馈神经网络,无法体现数据时序关系的缺点.在RNN网络中,不仅同一个隐含层的节点可以相互连接,同时隐含层的输入不仅来源于输入层的输入还包括了上一 ...

  2. 我们常说的 CAS 自旋锁是什么

    CAS(Compare and swap),即比较并交换,也是实现我们平时所说的自旋锁或乐观锁的核心操作. 它的实现很简单,就是用一个预期的值和内存值进行比较,如果两个值相等,就用预期的值替换内存值, ...

  3. Redis案例——商品秒杀,购物车

    秒杀案例: <?php header("content-type:text/html;charset=utf-8"); $redis = new redis(); $resu ...

  4. python库pandas简介

    pandas是基于numpy的数据分析模块,提供了大量标准模型和高效操作大型数据集所需要的工具. pandas主要提供了3种数据结构:1.Series,带标签的一维数组:2.DataFrame,带标签 ...

  5. js万年历,麻雀虽小五脏俱全,由原生js编写

    对于前端来说,我们可能见到最多的就是各种各样的框架,各种各样的插件了,有各种各样的功能,比如轮播啊,日历啊,给我们提供了很大的方便,但是呢?我们在用别人这些写好的插件,框架的时候,有没有试着问一问自己 ...

  6. python3+requests:使用类封装接口测试脚本

    前言:接口测试用例较多,我们不可能每个用例都写一次requests,get或者requests,post等,所以对共用方法要进行封装处理 第一次修改:将get请求和post请求单独定义出来,使用过程中 ...

  7. ORC文字识别软件破解版

    下载地址:http://pan.baidu.com/s/1bnCiXdl 点击 然后可以免费用了ABBYY了!!

  8. PAT1097:Deduplication on a Linked List

    1097. Deduplication on a Linked List (25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 ...

  9. mybatis自定义代码生成器(Generator)——自动生成model&dao代码

    花了两天的时间研究了下mybatis的generator大体了解了其生成原理以及实现过程.感觉generator做的非常不错,给开发者也留足了空间.看完之后在generator的基础上实现了自定义的生 ...

  10. Java NIO Channel通道

    原文链接:http://tutorials.jenkov.com/java-nio/channels.html Java NIO Channel通道和流非常相似,主要有以下几点区别: 通道可以读也可以 ...