本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
我们经常拿 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,激活具体的配置。
在浏览器中分别访问三个服务的地址,效果图如下:
我们注意到,DS Replicas 部分有两个服务发现节点。这样就能保证其中部分 Eureka 节点故障后,整个系统的高可用。到现在来看,Eureka 集群是不是超级简单。其实 Eureka 还有很多配置属性没讲,后面我们继续。
本文源码可以在 https://github.com/xmt1139057136/xttblog-cloud 查看和下载!
最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » Spring Cloud 教程第三章 Eureka 的集群部署