spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心

在上一篇中分享了如何使用Eureka进行服务治理,里面搭建的服务注册中心是单体的,但是在实际的应用中,分布式系统为了防止单体服务宕机带来严重后果,一般都会采用服务器集群的形式,服务注册中心也是一样

大家好,又见面了,我是全栈君。

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

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

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

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

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

一、代码实现

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

  1. 新增/eureka/src/main/resources/application-peer1.properties
    server.port=1111
    
    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=1112
    
    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. )spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心

       

    2. )spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心

       

       

  5. 启动eureka1和eureka2
  6. 页面访问http://localhost:1111/spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心

     

    我们会发现,在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覆盖了,这个时候讲这两个配置注释掉就好了。

spring cloud 入门系列三:使用Eureka 搭建高可用服务注册中心

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

代码读取顺序是这样的:

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120908.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 百度云网页视频加速播放

    百度云网页视频加速播放最近使用百度云看考研视频,但是百度云的播放器太简陋,无法倍速播放视频,太浪费时间了,听说firefox可以加速播放,可我又是chrome的死忠,于是在网上查到一个简单的方法。进入播放页面,按F12进入开发者模式在console中输入:videojs.getPlayers("video-player").html5player.tech_.setPlaybackRate(2…

    2022年5月24日
    36
  • PyCharm的搜索/替换快捷键[通俗易懂]

    PyCharm的搜索/替换快捷键[通俗易懂]查找:Ctrl+F替换:Ctrl+R查找是Find,替换是Replace。

    2022年5月18日
    271
  • linux安装anaconda及配置pytorch环境

    文章目录下载anaconda使用conda创建新环境判断是否安装成功判断pytorch是否安装成功检验是否可以使用GPU下载anaconda这里有多种方法,可以下载到windows然后通过xftp传到linux服务器上,也可以使用wget命令直接在linux上下载我这里使用的是第二种方法,下载源使用的是官网的官网,如果觉得速度太慢可以使用清华镜像源,选择自己需要的版本就行wgethttps://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_

    2022年4月14日
    169
  • MySQL日期时间戳转换

    MySQL日期时间戳转换 1.MySQL获取当前时间戳MySQL> select UNIX_TIMESTAMP();+——————+| UNIX_TIMESTAMP() |+——————+|       1525739078 |+——————+1 row in setMySQL> SELECT UNIX_TIME…

    2022年6月21日
    28
  • oracle里面concat函数用法,oracle wm_concat函数用法-Oracle

    oracle里面concat函数用法,oracle wm_concat函数用法-Oraclewmsys.wm_concat函数,它的作用是以’,’链接字符例子如下:SQL>createtableidtable(idnumber,namevarchar2(30));TablecreatedSQL>insertintoidtablevalues(10,’ab’);1rowinsertedSQL>insertintoidtablevalues…

    2022年5月18日
    54
  • sqlpro studio 2021激活码[最新免费获取]

    (sqlpro studio 2021激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1STL5S9V8F-eyJsaWN…

    2022年3月27日
    249

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号