Spring Cloud 教程第三章 Eureka 的集群部署

JAVA herman 228浏览 0评论

我们经常拿 Eureka 和 zookeeper 做比较,Eureka 是基于 AP 的设计,zookeeper 是基于 CP 的设计(对 CAP 不太熟悉的可以看我的这篇文章《详解 CAP 定理 Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)》)。正式基于此,有些公司在做技术选型的时候采用 Eureka。但是我们上篇文章《Spring Cloud 教程第二章 服务的注册、发现、治理之 Eureka 实战》的单节点的 Eureka 并不能保证服务的高可用,一旦这个节点故障,将带来灾难性的后果,因此我们需要一个 Eureka 集群来保证整个系统的高可用。本文将详细的为大家解释如何做 Eureka 的集群配置。

Eureka 的集群其实很简单。下面我们一步一步来搞定它。

首先,我们再新建两个工程,分别为:xttblog-eureka-server-two,xttblog-eureka-server-three。然后 pom.xml 的配置保持和 xttblog-eureka-server 一样。最主要的是 application.yml 文件中的配置,具体如下:

#server:
##  port: 8761
##
##eureka:
##  instance:
##    hostname: localhost
##  client:
##    registerWithEureka: false
##    fetchRegistry: false
##    serviceUrl:
##      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
##
##spring:
##  application:
##    name: xttblog-eureka-server
spring:
  profiles:
    active: one
---
spring:
  application:
    name: xttblog-eureka-server
  profiles: one
server:
  port: 8761
eureka:
  instance:
    hostname: one
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://two:8762/eureka/,http://three:8763/eureka/
---
spring:
  application:
    name: spring-cloud-eureka
  profiles: two
server:
  port: 8762
eureka:
  instance:
    hostname: two
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://one:8761/eureka/,http://three:8763/eureka/
---
spring:
  application:
    name: spring-cloud-eureka
  profiles: three
server:
  port: 8763
eureka:
  instance:
    hostname: three
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://one:8761/eureka/,http://two:8763/eureka/

从上面我们可以看出,Eureka 的每个节点都不向自己注册,而是向别的服务节点注册。由于我们是在同一台机器上部署,所以端口都是不一样的。实际的生成环境是在不同的机器上部署,端口都可以配置成一致的。

启动类的代码都是一样的,如下:

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

然后我们分别启动 xttblog-eureka-servver,xttblog-eureka-server-two,xttblog-eureka-server-three 三个服务。启动的时候,注意配置:–spring.profiles.active=one,激活具体的配置。

在浏览器中分别访问三个服务的地址,效果图如下:

Eureka 集群配置教程

我们注意到,DS Replicas 部分有两个服务发现节点。这样就能保证其中部分 Eureka 节点故障后,整个系统的高可用。到现在来看,Eureka 集群是不是超级简单。其实 Eureka 还有很多配置属性没讲,后面我们继续。

本文源码可以在 https://github.com/xmt1139057136/xttblog-cloud 查看和下载!

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847,QQ3群:187424846。QQ群进群密码:xttblog,想加微信群的朋友,可以微信搜索:xmtxtt,备注:“xttblog”,添加助理微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » Spring Cloud 教程第三章 Eureka 的集群部署