zoukankan      html  css  js  c++  java
  • SpringCloud(三)Eureka注册中心实现高可用

    前言:

    spring-cloud为基础的微服务架构,所有的微服务都需要注册到注册中心,如果这个注册中心阻塞或者崩了,那么整个系统都无法继续正常提供服务,所以,这里就需要对注册中心进行集群,换言之,高可用(HA)

    前提:

    阅读并完成第一个注册中心的项目,环境无需改变。本文是模拟的高可用可以复制两个注册中心的项目单独修改各自的配置文件达到同样的效果

    修改hosts,在文件末添加两行如下:

    127.0.0.1 peer1
    127.0.0.1 peer2

    推荐使用notepad++,如果是win10会提醒提权限,确定,然后保存即可。

    项目搭建:

    打开注册中心的项目,在src/resources下创建一个application-peer1.properties

    #应用名
    spring.application.name=eureka-server
    #提供服务端口1111
    server.port=1111
    #提供服务的域名,这里在hosts文件中修改了
    eureka.instance.hostname=peer1
    #向第二个注册中心注册自己
    eureka.client.service-url.defaultZone=http://peer2:1112/eureka/

    在src/resources下创建一个application-peer2.properties

    #应用名称与第一个注册中心一样
    spring.application.name=eureka-server
    #提供服务端口1112
    server.port=1112
    #提供服务的域名,这里在hosts文件中修改了
    eureka.instance.hostname=peer2
    #向第一个注册中心注册自己
    eureka.client.service-url.defaultZone=http://peer1:1111/eureka/

    本文使用idea进行测试,首先需要对这个项目进行打成jar包,因为在pom.xml中已经引入了maven编译工具和打包工具并指定打包格式为jar包,这里直接操作,屏幕右上方

     

    打包完成,该jar包位于target文件夹下,如图

     如图打开terminal,屏幕下方

    打开terminal之后,因为jar包在target目录下,而当前目录为项目目录,所以先cd到target目录下,然后输入如下命令:

    小技巧:输入命令的时候为了防止输错文件名,可以输入文件名的前几个字母,然后使用tab键进行自动补全

    java -jar EurekaServerDemo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1

    输入完成此命令后,peer1配置文件的项目启动,如图

    接下来我们启动第二个项目,这里需要另开一个terminal,cd到target目录

    注意:我们这里用的是同一个项目,读者可以使用两个项目进行测试,需要特别注意的是端口不要冲突了

     

    java -jar EurekaServerDemo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

     

    等待项目启动完成,查看有无报错。

    测试

    浏览器输入:localhost:1112进行查看,也可以输入localhost:1111进行查看

    结语

    在设置了多节点的注册中心后,实现了高可用,但是此时我们的微服务应用仅仅是注册到这一个服务之中,所以,我们需要将新节点的注册服务路径同样配到微服务应用中。

    多节点间使用","分开,如图

    这样微服务提供者从其中一个地方断开之后,因为在其他节点有注册,所以还可以提供服务,如果不想使用主机名进行访问注册中心,也可以使用ip,但是需要先添加一条配置,该值默认false

    eureka.instance.prefer-ip-address=true

     本文为作者实际操作记录,如需转载请注明出处

  • 相关阅读:
    mysql之全局查询日志
    使用MySQL Workbench进行数据库设计——MySQL Workbench使用方法总结
    HttpClient工具类
    JSON字符串转换为Map
    Java判断一个日期是否在下周日期区间
    Linux 查看日志文件
    判断一个日期是否为当前日期的前后几天的方法
    Spring-Boot 整合Dubbo 解决@Reference 注解为null情况
    spring注解之@Scope
    Swagger Annotation 详解(建议收藏)
  • 原文地址:https://www.cnblogs.com/hellxz/p/8855166.html
Copyright © 2011-2022 走看看