在上一篇中分享了如何使用Eureka 进行服务治理,里面搭建的服务注册中心是单体的,

但是在实际的应用中,分布式系统为了防止单体服务宕机带来严重后果,一般都会采用服务器集群的形式,服务注册中心也是一样,需要多台服务一起工作,组成高可用的服务注册中心。这样,如果有其中一台宕机,系统也能正常运行。

那么如何来构建高可用的服务注册中心呢?

由于eureka注册中心既可以作为服务端(服务注册中心),也可以作为客户端(到别的注册中心注册自己),

我们可以通过在机器上部署peer1和peer2两个服务,两个服务相互注册。

一、代码实现

  还是使用上篇文章中的eureka服务例子,在此基础上我们进行修改:

  1. 新增/eureka/src/main/resources/application-peer1.properties

    server.port=
    
    spring.application.name=eureka-service
    #设定主机名为peer1
    eureka.instance.hostname=peer1 #eureka.client.register-with-eureka=false
    #eureka.client.fetch-registry=false
    #设定eureka的serviceUrl为peer2
    eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka
  2. 新增/eureka/src/main/resources/application-peer2.properties
    server.port=
    
    spring.application.name=eureka-service
    eureka.instance.hostname=peer2
    #eureka.client.register-with-eureka=false
    #eureka.client.fetch-registry=false
    #设定eureka的serviceUrl为peer1
    eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka

    由于需要peer1和peer2相互注册,因此第1和第2步中,eureka.client.register-with-eureka=false和eureka.client.fetch-registry=false这两个配置就不能要了,需要注释掉或删掉。

  3. 设定host,在C:\Windows\System32\drivers\etc目录下的hosts文件中添加
    127.0.0.1 peer1
    127.0.0.1 peer2

    以将peer1和peer2进行解析。

  4. 配置两个启动服务
    1. )
    2. )
  5. 启动eureka1和eureka2
  6. 页面访问http://localhost:1111/

    我们会发现,在DS Replicas(分片)中会有peer2;   在服务instance中会有2个,一个是1111,一个是1112;   在registered-replicas(注册分片)和available-replicas(可用分片)中出现了peer2:1112。  同样道理,我们访问http://localhost:1112/也能看到相似效果。 如果将peer2停掉,那么在访问http://localhost:1111/的时候就会发现peer2已经跑到unavailable-replicas(不可用分片)中,具体截图略。

二、调试中遇到的问题

我在调试以上内容的时候遇到一个问题,就是在peer1和peer2一直不能彼此注册成功,页面表现就是服务instance为空并且available-replicas为空,对应的服务在unavailable-replicas中。后来经过多次实现和分析,终于发现,原来是在我的application.properties文件中还保留着下面两个配置,服务在启动的时候是会读取到这个配置的,

虽然这两个配置默认是true,但是却被application.properties覆盖了,这个时候讲这两个配置注释掉就好了。

如果在application-{profiles}.properties中再配置一遍就又可以覆盖application.properties里面的配置。

代码读取顺序是这样的:

先读取默认配置-->然后读取application.properties-->读取application-{profiles}.properties。

spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心的更多相关文章

  1. 搭建高可用服务注册中心-Spring Cloud学习第一天(非原创)

    文章大纲 一.Spring Cloud基础知识介绍二.创建单一的服务注册中心三.创建一个服务提供者四.搭建高可用服务注册中心五.项目源码与参考资料下载六.参考文章   一.Spring Cloud基础 ...

  2. 使用Spring Cloud搭建高可用服务注册中心

    我们需要的,不仅仅是一个服务注册中心而已,而是一个高可用服务注册中心. 上篇博客[使用Spring Cloud搭建服务注册中心]中我们介绍了如何使用Spring Cloud搭建一个服务注册中心,但是搭 ...

  3. 使用SpringCloud搭建高可用服务注册中心

    我们需要的,不仅仅是一个服务注册中心而已,而是一个高可用服务注册中心. 上篇博客中我们介绍了如何使用Spring Cloud搭建一个服务注册中心,但是搭建好的服务注册中心是一个单节点的服务注册中心,这 ...

  4. Spring Cloud Eureka 4 (高可用服务注册中心)

    在微服务这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须考虑对各个组件进行高可用部署,对于服务注册中心也是一样. Eureka Server 的高可用实际上就是讲自己作为服务向 ...

  5. springboot+cloud 学习(一)高可用服务注册中心(Eureka)

    先说说Eureka Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的.SpringClo ...

  6. 服务注册发现Eureka之二:高可用服务注册中心

    前言 在Spring Cloud系列文章的开始,我们就介绍了服务注册与发现,其中,主要演示了如何构建和启动服务注册中心Eureka Server,以及如何将服务注册到Eureka Server中,但是 ...

  7. SpringCloud的服务注册中心(四)- 高可用服务注册中心的搭建

    一.双 服务注册注册中心 1.服务注册中心的服务端 - EurekaServer 1.1.EurekaServer1 String.application.name=eureka-server ser ...

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

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

  9. spring cloud 入门系列七:基于Git存储的分布式配置中心--Spring Cloud Config

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

随机推荐

  1. 新概念英语(1-65)Not a Baby

    新概念英语(1-65)Not a Baby Does Jill take the key to the front door? A:What are you going to do this even ...

  2. django的models模型类的常用数据类型和选项

    django框架的models模块ORM框架,能够让我们通过编写类的方式,帮助我们自动生成数据库表. 生成的数据库表名为 应用模块名称_类名 数据库表中字段名 如果我们没有在参数中指定,就是我们写的类 ...

  3. python中 functools模块 闭包的两个好朋友partial偏函数和wraps包裹

    前一段时间学习了python当中的装饰器,主要利用了闭包的原理.后来呢,又见到了python当中的functools模块,里面有很多实用的功能.今天我想分享一下跟装饰器息息相关的两个函数partial ...

  4. 丢掉DDL,我用这招3分钟清空 MySQL 9亿记录数据表

    摘要:最近由于福建开机广告生产环境的广告日志备份表主键(int类型)达到上限(21亿多),不能再写入数据,需要重新清空下该表并将主键重置,但由于表里有8亿多记录的数据量,使用重置命令及DDL命令执行地 ...

  5. Windows10 64位系统安装 .NET Framework 3.5

    1)下载NET Framework 3.5 [地址:https://pan.baidu.com/s/1c1FhXLY] 2)编辑NET Framework 3.5.bat ,修改sxs文件存放路径: ...

  6. POJ-1287 Networking---裸的不能再裸的MST

    题目链接: https://vjudge.net/problem/POJ-1287 题目大意: 模板 #include<iostream> #include<cstdio> # ...

  7. requests-证书验证

    import requests #response = requests.get('https://www.12306.cn') #print(response.status_code) #以上会显示 ...

  8. ABP框架 - 我的第一个Web API

    本文示例源代码地址https://github.com/lcyhjx/abp-training 上一篇我们已经对ABP是什么,能做什么.有了一个印象.那么接下来我们将动手使用ABP框架快速开发一个AP ...

  9. 半径无关快速高斯模糊实现(附完整C代码)

    之前,俺也发过不少快速高斯模糊算法. 俺一般认为,只要处理一千六百万像素彩色图片,在2.2GHz的CPU上单核单线程超过1秒的算法,都是不快的. 之前发的几个算法,在俺2.2GHz的CPU上耗时都会超 ...

  10. [HNOI 2009]有趣的数列

    Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<…&l ...