美文网首页
SpringCloud实现高可用

SpringCloud实现高可用

作者: 一直想上树的猪 | 来源:发表于2019-01-28 08:23 被阅读0次

在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中华必须对各个组件进行高可用部署,对于微服务如此,对于注册中心也一样。我们需要构建高可用的注册中心以增强系统的可用性。

回顾

Eureka Server的设计一开始就考虑了高可用的问题,在Eureka的服务设计中, 所有节点即是服务提供方,也是服务消费方,服务注册中心也不例外。是否还记得在单节点的配置中,我们设置过下面的这两个参数,让注册中心不注册自己:

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

Eureka Server的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组相互注册的服务注册中心,以实现服务清单的相互同步,达到高可用的效果。

实现高可用

1.配置

在Eureka Server这个服务的项目中,新建两个配置文件:
application-peer1.properties

spring.application.name=eureka-server
server.port=1111

eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka

application-peer1.properties

spring.application.name=eureka-server
server.port=1112

eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka
  • 在/etc/hosts文件中添加对peer1和peer2的转换,让上面配置的host形式的serviceUrl能在本地正确访问到;windows系统路径为:C:\Windows\System32\drivers\etc\hosts
127.0.0.1       peer1
127.0.0.1       peer2

启动注册中心

在启动注册中心之前,首先需要加入Maven的插件

  <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

然后进行打包:mvn install
之后切换到target目录下,通过spring.profiles.active属性分别启动peer1和peer2:

java -jar eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer2

启动成功,在控制台中可以看到以下输出:


peer2
peer1

此时访问peer1的注册中心:peer1:1111/,如下图所示,我们可以看到registered-replicas中已经有peer2结点的eureka-server了,同样的我们在peer2中也可看到peer1的服务。


peer1
peer2

服务提供方

在设置了多结点的服务注册中心之后,服务提供方还需要做一些简单的配置才能将服务注册到Eureka Server集群中,我们以hello-service为例,修改application.properties配置文件,如下所示:

spring.application.name=hello-service
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/

上面的配置主要对eureka.client.serviceUrl.defaultZone属性做了改动,将注册中心指向了peer1和peer2.
下面我们启动该服务,通过访问http://localhost:1111/http://localhost:1112/,可以观察到hello-service服务同时被注册到了peer1和peer2上,

提供方注册
若此时断开peer1,由于hello-service同时也向peer2注册,因此在peer2上的其他服务依然能访问到hello-service从而实现了服务注册中心的高可用。

相关文章

  • SpringCloud实现高可用

    在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中华必须对各个组件进行高可用部署,对...

  • Alibaba 阿里微服务springcloud flowabl

    服务介绍 (各个服务单独运行,高可用、低耦合) 一:springcloud服务------------------...

  • SpringCloud高可用学习

    雪崩效应 基础服务的故障导致的级联故障,最终导致服务的不可用。 形成原因:1、服务提供者不可用2、服务调用者不可用...

  • SpringCloud服务发现与消费

    通过SpringCloud高可用,我们已经搭建起微服务架构中的核心组件--服务注册中心(包括单节点模式和高可用模式...

  • 十.微服务再进一步

    SpringCloud进阶篇 1.服务注册中心的高可用 高可用通常体现在部署阶段 1.1.服务注册中心之间可以共享...

  • 3. springCloud 实现高可用注册中心

    1.Eureka1 application.yml 2.Eureka2 application.yml 3.同时将...

  • 架构(4),高可用

    高可用包括:存储高可用,计算高可用,业务高可用。 一、存储高可用 存储的高可用,主要是通过数据冗余的方式来实现高可...

  • SpringCloud(第 051 篇)EurekaServer

    SpringCloud(第 051 篇)EurekaServer集群高可用注册中心以及简单的安全认证 一、大致介绍...

  • SpringCloud 高可用注册中心

    高可用注册中心 **搭建步骤 ** 修改配置文件 在创建一样的注册中心,只需修改配置文件,其他一样 启动两个注册中...

  • 综合架构之keepalived(高可用)

    内容涉及 高可用原理高可用配置文件高可用服务常见问题实现高可用服务双主功能 keepalivd----------...

网友评论

      本文标题:SpringCloud实现高可用

      本文链接:https://www.haomeiwen.com/subject/hafvjqtx.html