上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下:

一、准备工作

继续使用上一篇文章的工程,创建一个eureka-server工程,用作服务注册中心。

在其pom.xml文件引入Eureka的起步依赖spring-cloud-starter-eureka-server,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.forezp</groupId><artifactId>eureka-server</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>eureka-server</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Dalston.RC1</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>

在配置文件application.yml上,指定服务端口为8889,加上作为服务注册中心的基本配置,代码如下:

server:port: 8889eureka:instance:hostname: localhostclient:registerWithEureka: falsefetchRegistry: falseserviceUrl:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

入口类:

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}

二、改造config-server

在其pom.xml文件加上EurekaClient的起步依赖spring-cloud-starter-eureka,代码如下:

<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency></dependencies>

配置文件application.yml,指定服务注册地址为http://localhost:8889/eureka/,其他配置同上一篇文章,完整的配置如下:

spring.application.name=config-server
server.port=8888spring.cloud.config.server.git.uri=https://github.com/forezp/SpringcloudConfig/
spring.cloud.config.server.git.searchPaths=respo
spring.cloud.config.label=master
spring.cloud.config.server.git.username= your username
spring.cloud.config.server.git.password= your password
eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/

最后需要在程序的启动类Application加上@EnableEureka的注解。

三、改造config-client

将其注册微到服务注册中心,作为Eureka客户端,需要pom文件加上起步依赖spring-cloud-starter-eureka,代码如下:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>

配置文件bootstrap.properties,注意是bootstrap。加上服务注册地址为http://localhost:8889/eureka/

spring.application.name=config-client
spring.cloud.config.label=master
spring.cloud.config.profile=dev
#spring.cloud.config.uri= http://localhost:8888/eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server
server.port=8881

  • spring.cloud.config.discovery.enabled 是从配置中心读取文件。
  • spring.cloud.config.discovery.serviceId 配置中心的servieId,即服务名。

这时发现,在读取配置文件不再写ip地址,而是服务名,这时如果配置服务部署多份,通过负载均衡,从而高可用。

依次启动eureka-servr,config-server,config-client 
访问网址:http://localhost:8889/

访问http://localhost:8881/hi,浏览器显示:

foo version 3

转载于:https://www.cnblogs.com/kuoAT/p/9144209.html

SpringCloud学习成长之路七 高可用配置中心相关推荐

  1. SpringCloud学习成长之路 五 路由器网关

    在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统.一个简答的微服务系统如下图: ...

  2. mysql 配置vip_数据库学习之十三:mysql高可用配置

    十三.mysql高可用 1.普通主从复制架构存在的不足 高可用? 业务不间断的工作. 用户的体验不出来业务断点. 普通主从环境,存在的问题: 1.监控的问题:APP应用程序,并不具备监控数据库的功能, ...

  3. 架构师成长之路(4)--高可用高并发架构(图谱)

  4. 学习成长之路 (初章 三个月建成微信 小程序商城、ArcEngine C# GIS开发入门)

    学习 成长之路(初章 ) 三个月 建成微信小程序商城 .ArcEngine C# GIS开发入门 自我简介 先简单介绍一下,我是Domen,是一个彻彻底底的新手 . 大一 大学大一没好好学习,搞这搞那 ...

  5. 电子工程师学习成长之路

    背景故事 这段时间趁国庆假期,回家接了个婚,所以没时间更新文章了,也没带电脑,就给大家分享一下电子工程师的学习成长之路吧,希望能让大家受益. 学习建议 对于电子工程师学习成长有以下几个建议: 1 兴趣 ...

  6. SpringCloud(第 051 篇)EurekaServer集群高可用注册中心以及简单的安全认证

    SpringCloud(第 051 篇)EurekaServer集群高可用注册中心以及简单的安全认证 - 一.大致介绍 1.前面章节分析了一下 Eureka 的源码,我们是不是在里面注意到了 Peer ...

  7. 白话SpringCloud | 第三章:服务注册与发现-高可用配置(Eureka)-下

    2019独角兽企业重金招聘Python工程师标准>>> 前言 上一章节,讲解了在单机模式下的服务注册与发现的相关知识点及简单示例.而在实际生产或者在这种微服务架构的分布式环境中,需要 ...

  8. MySQL学习笔记(1)——高可用组复制

    MySQL学习笔记(1)--高可用组复制 积土成山,风雨兴焉.积水成渊,蛟龙生焉. 一.概念 组复制(MySQL Group Replication,MGR)是MySQL官方在MySQL 5.7.17 ...

  9. 立Flag 学习Ng - 高可用配置

    立Flag 学习Ng - 高可用配置 keepalived高可用配置 keepalived高可用配置 nginx解决tomcat高可用的思路,是前面加一层负载服务nginx.那当ng挂掉的时候同样需要 ...

最新文章

  1. 华为云龙api自动化工具_2020年十大最佳自动化测试工具
  2. 反转!继SDA之后 WiFi联盟、蓝牙技术联盟、JEDEC协会恢复华为会员资格
  3. 实现根据条件删除_强大的定位空值法,1秒删除所有不想要的数据
  4. vs C3861 “rand”: 找不到标识符 ConsoleApplication1
  5. Axure安装、破解、汉化一条龙
  6. MiniUtilityFramework 九 CText和TEXT
  7. while语句没有花括号用法
  8. 抽象代数 04.02 群在集合上的作用
  9. uniapp h5微信分享
  10. echarts 乡镇级地图制作办法
  11. 得物购买截图生成_iPhone12订单生成器网页版-iPhone12订单生成器网页版链接分享预约 v1.0...
  12. android打包报错Detected multiple Kotlin daemon sessions
  13. 前台js MD5加密 后台 java MD5解密
  14. android jetpack ViewModel 报错解决方法
  15. USB驱动开发(五)之程序设计
  16. python哥德巴赫猜想证明要求其中一个素数最小_第4-4章“哥德巴赫猜想”的验证(20分),浙大,版,Python,程序设计,题目,集第...
  17. python:DataFrame的创建以及DataFrame的属性
  18. 图片HTML标记是,HTML网页图片标记
  19. 如何用手机预览PS、XD、sketch的设计稿
  20. 1.2 安装wdcp

热门文章

  1. daemonset怎么读_DaemonSet 与 StatefulSet的使用
  2. Vue-cli4 配置别名
  3. android支付 form表单,支付宝小程序表单组件 表单·Form
  4. mysql innodb row_format_INNODB物理行结构(ROW_FORMAT=COMPACT) | 学步园
  5. python mysql树_python操作mysql数据库
  6. ubuntu linux开机启动自动加载ko驱动程序_一文讲透 CentOS 开机流程
  7. vue 地图使用navigator_9 个实验 + 3 个项目,带你入门 Vue.js 3 !
  8. 20200410:路径总和 Ⅰ Ⅱ(leetcode112 /113)
  9. Tomcat + hexo 搭建博客
  10. Facebook发布张量理解库,自动编译高性能机器学习核心