SpringCloud分布式微服务搭建(三)

本例子是一个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 servercd /home/linjiaqin/log_stream_platform/source/scdemo/configservernohup 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时是以这个配置文件启动的,优先级比本地的要高

原文地址:https://www.cnblogs.com/linjiaqin/p/10777215.html

时间: 2024-08-01 13:03:08

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

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

本例子主要使用了eureka集群作为注册中心来保证高可用,客户端来做ribbon服务提供者的负载均衡. 负载均衡有两种,第一种是nginx,F5这种集中式的LB,对所有的访问按照某种策略分发. 第二种是客户端知道所有的服务的地址,在客户端做负载均衡,客户端自己去发送. github地址:https://github.com/linjiaqin/scdemo 一. eureka注册中心的搭建 1.为了实现HA(高可用性),采用集群方式搭建,由mu01(192.168.0.100),cu01(192

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

这个例子主要是将zuul和eureka结合起来使用,zuul作为反向代理,同时起到负载均衡的作用,同时网关后面的消费者也作为服务提供者,同时提供负载均衡. 一.API网关(摘自百度) API网关是一个服务器,是系统的唯一入口.从面向对象设计的角度看,它与外观模式类似.API网关封装了系统内部架构,为每个客户端提供一个定制的API.它可能还具有其它职责,如身份验证.监控.负载均衡.缓存.请求分片与管理.静态响应处理.API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关

SpringCloud分布式微服务云架构 第五篇: 路由网关(zuul)(Finchley版本)

SpringCloud分布式微服务云架构 第五篇: 路由网关(zuul)(Finchley版本)在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,了解springcloud架构可以加求求:三五三六二四七二五九,由这几个基础组件相互协作,共同组建了一个简单的微服务系统.一个简答的微服务系统如下图: 注意:A服务和B服务是可以相互调用的,并且配置服务也是注册到服务注册中心的. 在Spring Cloud微服务系统中,一种常见的负载均衡方

Springcloud分布式微服务多用户商城系统b2b2c-Spring Cloud常见问题

在使用Spring Cloud的过程中,难免会遇到一些问题.所以对Spring Cloud的常用问题做一些总结.需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码:三五三六二四七二五九 一.Eureka常见问题 Eureka 注册服务慢 默认情况下,服务注册到Eureka Server的过程较慢.在开发或测试时,常常希望能够加速这一过程,从而提升工作效率. 该问题的原因及解决方案: 服务的注册涉及周期性心跳,默认30秒一次(通过客户端配置的service

SpringCloud分布式微服务b2b2c电子商务(三)注册中心集群篇

集群环境搭建第一步:我们新建两个注册中心工程一个叫eureka_register_service_master.另外一个叫eureka_register_service_backup eureka_register_service_master的application.properties配置如下 server.port=7998 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false spring.

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

第一篇 <连接配置> 第二篇 <连接池> 第三篇 标准通信 一.TCP的连接是无状态的,怎样知道我的请求被服务端接受并且正确执行了呢? 我的解决方案是使用自己定义的标准输入输出,Push操作和Delete操作都要返回Json的字符串,也就是说,每一个Thrift接口方法的输入参数和返回参数都是Json字符串.标准返回,Code表示状态码,Desc表示对执行结果的描述,如果Code表示服务端出错,Desc为错误信息. 1 public class StandResponse<T

SpringCloud分布式微服务云架构 第一篇: 服务的注册与发现Eureka(Finchley版

一.spring cloud简介鉴于<史上最简单的Spring Cloud教程>很受读者欢迎再次我特意升级了一下版本目前支持的版本为Spring Boot版本2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE. Finchley版本的官方文档如下http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html spring cloud 为开发人员提供了

SpringCloud分布式微服务云架构 第四篇:断路器(Hystrix)(Finchley版本)

在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务通常会集群部署.由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪.服务与服务之间的依赖性,故障会传播,了解springcloud架构可以加求求:三五三六二四七二五

springcloud分布式微服务(四):熔断器Hystrix

熔断器 雪崩效应 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应.服务雪崩效应是一种因"服务提供者"的不可用导致"服务消费者"的不可用,并将不可用逐渐放大的过程. 如果下图所示:A作为服务提供者,B为A的服务消费者,C和D是B的服务消费者.A不可用引起了B的不可用,并将不可用像滚雪球一样放大到C和D时,雪崩效应就形成了. 熔断器(CircuitBreaker) 熔断器的原理很简单,如同