SpringCloud微服务入门(三),Eureka高可用集群

目录



正文


在Eureka中高可用的最简单体现就是集群。简单说,就是一个相同的应用部署N次在不同的服务器中,然后在把这些相同的应用按一定规则去轮流调用,保证其中一个挂掉后,另外一个能够快速的顶替上。

(图一)

图一就是一个最简单的集群架构,将一个应用部署多份,通过代理软件将访问地址暴露给外部,这就是集群。我们常用的代理软件是Nginx。可能有些人容易把集群跟分布式搞混淆,下面我们在看看图二中的分布式架构是怎样的。

(图二)

从图二可以看到,所谓的分布式就是把应用模块拆分,部署在不同的服务器中,再通过分布式代理软件提供给外部调用。

总结:

一个应用部署多次,是集群。一个应用按模块拆分部署是分布式。

有了上面的一系列铺垫,现在跟着笔者进入正题。EurekaServer集群是怎么实现的。其实非常简单,改一改application.properties配置就可以了。

笔者在第一节、第二节的分享中都有提到,EurekaServer自身也是一个EurekaClient,有了这个特性后,EurekaServer可以向另外一个EurekaServer把自己注册成Client。当他们之间相互注册后,就是一个集群了。

按图一的思路,同一个应用部署多次,就是集群。说明我们要把EurekaServer部署多次。为了演示方便,况且笔者也没那么多服务器部署,就在单机上启动两次EurekaServer,然后让它们达到集群的目的。

现在笔者约定,部署两次的Server端口,分别为8761和8762。那么可以得到两个Server的注册地址分别是:http://localhost:8761/eureka/http://localhost:8762/eureka/

1、编译8761

修改application.properties文件,添加以下内容:

eureka.client.service-url.defaultZone=http://localhost:8762/eureka/

这个配置表示8761端口的EurekaServer将向8762端口的EurekaServer注册。

(图三)

其它什么也不要做,跟着笔者从命令行进入到eureka-server的根目录。执行以下命令,编译并打包eureka-server

mvn compile package
mv target/eureka-server-0.0.1-SNAPSHOT.jar target/eureka-server-8761.jar

2、编译8762

修改application.properties文件,添加以下内容:

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

这个配置表示8762端口的EurekaServer将向8761端口的EurekaServer注册。这样就达到了相互注册的目的。

(图四)

其它什么也不要做,再一次跟着笔者从命令行进入到eureka-server的根目录。执行以下命令,编译并打包eureka-server

mvn compile package
mv target/eureka-server-0.0.1-SNAPSHOT.jar target/eureka-server-8762.jar

3、运行EurekaServer集群

跟着步骤1、步骤2的一番操作,8761、8762端口的EurekaServer应用都打包好了。现在再次回到命令行的项目根目录下分别启动两个打包好的应用。

打开两个命令行窗口,都cd到项目的根目录,在第一个启动8761,命令如下:

java -Dserver.port=8761 -jar ./target/eureka-server-8761.jar

在第二个启动8762,命令如下:

java -Dserver.port=8762 -jar ./target/eureka-server-8762.jar

打开浏览器,分别访问http://localhost:8761http://localhost:8762,都可以打开,并且在应用列表会看到了个EUREKA-SERVER,就表示集群成功了。

(图五)

4、将EurekaClient注册到集群中

这个同样非常简单,修改eureka-client项目的application.properties文件,在eureka.client.service-url.defaultZone后面在追加一个地址就可以了。

(图六)

5、运行EurekaClient,验证成果

在eureka-client项目的启动类中,直接右键运行。再去浏览器中看EurekaServer的界面,发现应用列表中已经出现EUREKA-CLIENT,不管是8761还是8762两个的应用列表都是一样的,才表示注册到集群中成功了。

(图七)

为了验证集群带来的好处,可以停止8761的应用,会发现8762依然注册着EUREKA-CLIENT。这时再重启eureka-client,会发现只有8762一个端口的应用,eureka-client依然可以注册成功。 当再次启动8761的时候,8761会自动与8762同步,EUREKA-CLIENT又出现在8761的应用列表中了。这就是集群带来的好处,一个节点死掉后,另外一个会顶上,保证客户端应用正常的注册使用。

本博客采用 知识共享署名-禁止演绎 4.0 国际许可协议 进行许可

本文标题:SpringCloud微服务入门(三),Eureka高可用集群

本文地址:https://jizhong.plus/post/2020/03/study-springcloud-03.html