辛星Spring Cloud 教程第四篇:高可用的注册中心

单点故障

对于分布式应用来说,它有效的避免了单点故障。那么如何来确保我们的分布式服务不出现单点故障呢?
我们可以从两个角度来思考:
(1).我们注册的服务。我们可以通过在多台机器上注册来避免单点故障,当某一台机器不可用的时候,我们还有其他的机器作为备份。
(2).我们的注册中心。当我们的注册中心应该能够支持多台机器,当某一台机器不可用的时候,我们还可以有其他的机器作为备份。
那么我们今天要做的就是实现注册中心的多机部署,从而实现高可用。

注册中心集群思路

这里假设我们需要两个注册中心,我们是需要设置它们互相注册的,这样一个注册中心挂掉之后,由于另一个注册中心上已经具有了注册信息,所以不会导致整个服务不可用。
需要说明的是,我们在这里设置的时候,需要使用域名的方式,而不能使用ip的方式。
这里我们可以使用spring的多个profile来部署到多台机器上,我们可以这里可以使用两个端口来模拟两台机器。

注册中心集群实战

首先我们可以打一个直接用java -jar运行的jar包,首先我们在eureka-server中的pom.xml中添加如下build配置项:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

然后我们在resource目录下新建一个application-peer1.yml,然后我们写入如下代码:

server:
  port: 8762

eureka:
  instance:
    hostname: peer1-server
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
        defaultZone: http://peer2-server:8763/eureka

spring:
  profiles:
    active: peer1
  application:
    name: register-center

然后我们新建一个application-peer2.yml,我们写入如下代码:

server:
  port: 8763

eureka:
  instance:
    hostname: peer2-server
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
        defaultZone: http://peer1-server:8762/eureka
spring:
  profiles:
    active: peer2
  application:
    name: register-center

然后我们修改一下host,如下所示:

127.0.0.1 peer1-server
127.0.0.1 peer2-server

然后我们可以用 java -jar target/eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer1 java -jar target/eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=peer2 来启动。

然后我们可以让我们的user-service来注册到8762端口上,然后我们来看一下此时的8762端口的内容吧:
在这里插入图片描述

然后我们访问一下8763端口,我们也可以看到类似的效果:
在这里插入图片描述
我们可以看到,我们注册到某一台机器上的服务,可以在另一个注册中心被发现。

假设此时端口8762的这台机器宕机了,我们来看一下此时8763的表现吧:
在这里插入图片描述

假如我们此时再次启动8762的机器,我们发现数据又会自动恢复。
在这里插入图片描述

小结

至此我们的注册中心已经可以避免单点故障了,我们就介绍到这里啦。

转载请标明出处: http://blog.csdn.net/forezp/article/details/70148833 本文出自方志朋的博客 错过了这一篇,你可能再也学不会 Spring Cloud 了!Spring Boot做为下一代 web 框架,Spring Cloud 作为最新最火的微服务的翘楚,你还有什么理由拒绝。赶快上船吧,老船长带你飞。终章不是最后一篇,它是一个汇总,未来还会写很多篇。 案例全部采用Spring Boot 1.5.x ,Spring Cloud版本为Dalston.RELEASE 我为什么这些文章?一是巩固自己的知识,二是希望有更加开放和与人分享的心态,三是接受各位大神的批评指教,有任何问题可以联系我: miles02@163.com . 码农下载:https://git.oschina.net/forezp/SpringCloudLearning github下载:https://github.com/forezp/SpringCloudLearning,记得star哦! 欢迎购买我的书《深入理解Spring Cloud与微服务构建》 1.jpg 京东购买 当当购买 亚马逊购买 CSDN专栏汇总:史上最简单的 SpringCloud 教程 《史上最简单的 SpringCloud 教程》系列: 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka) 史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon) 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign) 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix) 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul) 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config) 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config) 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus) 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth) 史上最简单的SpringCloud教程 | 第十篇: 高可用的服务注册中心 史上最简单的SpringCloud教程 | 第十一篇:docker部署spring cloud项目 史上最简单的SpringCloud教程 | 第十二篇: 断路器监控(Hystrix Dashboard) 史上最简单的SpringCloud教程 | 第十三篇: 断路器聚合监控(Hystrix Turbine) 史上最简单的 SpringCloud 教程 | 第十四篇: 服务注册(consul) 未完。。。 还有很多篇。。。 进阶篇 Spring Cloud Sleuth超详细实战 源码篇: 深入理解Feign之源码解析 深入理解Eureka之源码解析 深入理解Ribbon之源码解析 深入理解Hystrix之文档翻译 深入理解Zuul之源码解析 番外篇: 如何使用MongoDB+Springboot实现分布式ID? 如何在springcloud分布式系统中实现分布式锁? 如何用Redlock实现分布式锁 如何在IDEA启动多个Spring Boot工程实例 JWT如何在Spring Cloud微服务系统中在服务相互调时传递
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值