SpringCloud学习成长之路七 高可用配置中心
上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程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学习成长之路七 高可用配置中心相关推荐
- SpringCloud学习成长之路 五 路由器网关
在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统.一个简答的微服务系统如下图: ...
- mysql 配置vip_数据库学习之十三:mysql高可用配置
十三.mysql高可用 1.普通主从复制架构存在的不足 高可用? 业务不间断的工作. 用户的体验不出来业务断点. 普通主从环境,存在的问题: 1.监控的问题:APP应用程序,并不具备监控数据库的功能, ...
- 架构师成长之路(4)--高可用高并发架构(图谱)
- 学习成长之路 (初章 三个月建成微信 小程序商城、ArcEngine C# GIS开发入门)
学习 成长之路(初章 ) 三个月 建成微信小程序商城 .ArcEngine C# GIS开发入门 自我简介 先简单介绍一下,我是Domen,是一个彻彻底底的新手 . 大一 大学大一没好好学习,搞这搞那 ...
- 电子工程师学习成长之路
背景故事 这段时间趁国庆假期,回家接了个婚,所以没时间更新文章了,也没带电脑,就给大家分享一下电子工程师的学习成长之路吧,希望能让大家受益. 学习建议 对于电子工程师学习成长有以下几个建议: 1 兴趣 ...
- SpringCloud(第 051 篇)EurekaServer集群高可用注册中心以及简单的安全认证
SpringCloud(第 051 篇)EurekaServer集群高可用注册中心以及简单的安全认证 - 一.大致介绍 1.前面章节分析了一下 Eureka 的源码,我们是不是在里面注意到了 Peer ...
- 白话SpringCloud | 第三章:服务注册与发现-高可用配置(Eureka)-下
2019独角兽企业重金招聘Python工程师标准>>> 前言 上一章节,讲解了在单机模式下的服务注册与发现的相关知识点及简单示例.而在实际生产或者在这种微服务架构的分布式环境中,需要 ...
- MySQL学习笔记(1)——高可用组复制
MySQL学习笔记(1)--高可用组复制 积土成山,风雨兴焉.积水成渊,蛟龙生焉. 一.概念 组复制(MySQL Group Replication,MGR)是MySQL官方在MySQL 5.7.17 ...
- 立Flag 学习Ng - 高可用配置
立Flag 学习Ng - 高可用配置 keepalived高可用配置 keepalived高可用配置 nginx解决tomcat高可用的思路,是前面加一层负载服务nginx.那当ng挂掉的时候同样需要 ...
最新文章
- 华为云龙api自动化工具_2020年十大最佳自动化测试工具
- 反转!继SDA之后 WiFi联盟、蓝牙技术联盟、JEDEC协会恢复华为会员资格
- 实现根据条件删除_强大的定位空值法,1秒删除所有不想要的数据
- vs C3861	“rand”: 找不到标识符	ConsoleApplication1
- Axure安装、破解、汉化一条龙
- MiniUtilityFramework 九 CText和TEXT
- while语句没有花括号用法
- 抽象代数 04.02 群在集合上的作用
- uniapp h5微信分享
- echarts 乡镇级地图制作办法
- 得物购买截图生成_iPhone12订单生成器网页版-iPhone12订单生成器网页版链接分享预约 v1.0...
- android打包报错Detected multiple Kotlin daemon sessions
- 前台js MD5加密 后台 java MD5解密
- android jetpack ViewModel 报错解决方法
- USB驱动开发(五)之程序设计
- python哥德巴赫猜想证明要求其中一个素数最小_第4-4章“哥德巴赫猜想”的验证(20分),浙大,版,Python,程序设计,题目,集第...
- python:DataFrame的创建以及DataFrame的属性
- 图片HTML标记是,HTML网页图片标记
- 如何用手机预览PS、XD、sketch的设计稿
- 1.2 安装wdcp
热门文章
- daemonset怎么读_DaemonSet 与 StatefulSet的使用
- Vue-cli4 配置别名
- android支付 form表单,支付宝小程序表单组件 表单·Form
- mysql innodb row_format_INNODB物理行结构(ROW_FORMAT=COMPACT) | 学步园
- python mysql树_python操作mysql数据库
- ubuntu linux开机启动自动加载ko驱动程序_一文讲透 CentOS 开机流程
- vue 地图使用navigator_9 个实验 + 3 个项目,带你入门 Vue.js 3 !
- 20200410:路径总和 Ⅰ Ⅱ(leetcode112 /113)
- Tomcat + hexo 搭建博客
- Facebook发布张量理解库,自动编译高性能机器学习核心