eruka处理应用服务器集群,Spring Cloud学习笔记——Eureka Server服务搭建及集群部署...

Spring Cloud学习笔记——Eureka Server

Spring Cloud版本:Hoxton.SR3

Spring boot版本:2.2.5.RELEASE

demo Git仓库:开源在gitee中,私信索取地址

服务治理

在微服务架构中,服务治理是一个核心的内容。Spring Cloud中,有许多的组件帮助完成服务治理。服务治理,可能包含以下一内容,如:

服务注册与发现:服务的注册与发现,是微服务架构中的一个基本能力。消费者需要基于某种机制去获取到生产者提供的服务列表,并根据需要去调用。在Dubbo和Zookeeper的微服务架构中,Zookeeper就承担了服务注册中心的角色。健康监测:在服务运行的过程中,我们需要对服务的健康状态进行观测,一旦发现问题,需要及时处理。在单体应用中,相对方便处理,但是在微服务架构中,由于服务数量的增多,所以需要一个工具来帮助我们完成这项工作。安全控制:微服务架构下,全部或部分服务,可能基于业务的敏感性,需要对调用方的权限进行校验。负载控制:微服务架构下,我们需要关注每个服务的负载,并根据实际情况对负载进行调整,这种调整,可能是基于服务器的健康状态,或者是基于业务的重要程序,又或者是基于版本升级的需要。Eureka

Spring Cloud中,有很多内容,事实上是对Netflix OSS项目进行了整合。Netflix OSS是一组框架和库,它专注于解决一些分布式下的问题,如服务发现,负载平衡,容错等。Spring Cloud也发布了一些自己的组件,它们与Netflix OSS项目的某些框架或库具备相似的能力,这种现象的原因之一可能是Netflix OSS项目的开源计划推行缓慢。Eureka就是Spring Cloud整合于Netflix OSS项目的框架之一,它提个了服务注册与发现的能力。

Eureka也像我们之前聊过的Config一样,分成Server和Client两部分,Server提供服务注册与发现的能力,类似于Dubbo + Zookeeper框架下的Zookeeper,Server可以部署成集群。Client则跟随业务系统一起,可能向Server暴露自己的服务,也可以通过Server调用服务。

Server Demo

Demo开源在Gitee,需要请私信。

以spring-cloud-base-demo项目为基础,先添加Server依赖,如下:

1f638604dac6a96d972d0f3c231f4839.pngServer依赖

在Application类上添加注解 @EnableEurekaServer。

在resources中添加配置文件application.yml,内容如下:

5688b5b1d7b48854fa0e69ad24f4a829.png

启动项目,通过浏览器访问,得到如下结果:

95aaa7414a6ed7ce4efba5ef9f456626.png访问结果

可以看到,SpringEureka为我们提供了一个简单的控制台,通过这个控制台,可以了解到当前服务的一些相关信息。

Eureka的高可用性

Eureka支持集群,并且推荐集群。你可能已经发现,在控制台中,有一行红色的字,在控制台上,也不断地出现一些报错信息。这事实上是Eureka发现你的Server服务并不是以一个集群的形式运行而给出的提醒。要想让Eureka不再提醒,一种方式就是形成集群。我们尝试启动两个Server服务,并让它们彼此形成集群。

我们可以利用之前的spring-cloud-config-server项目来为Eureka提供外部配置服务。

先将spring-cloud-config-server运行起来。

在git的配置仓库中,新建两个文件,eureka1-dev.yml和eureka2-dev.yml。

eureka1-dev.yml内容如下:

1534028c57a202e3db3be20867752240.pngeureka1-dev.yml

eureka2-dev.yml内容如下:

31d08eb788b992317288063419a47bdb.png

配置文件里,指明了当前应用运行的端口号,并通过eureka.client.serviceUrl.defaultZone的配置,把对方作为一个Server端,这样,两个Eureka Server就组合成了一个集群。

在Eureka Server项目中添加config-client的依赖,如下:

5496529e7549967fdd5b5d29fd9c3683.png

在resources中增加bootstrap.yml配置,内容如下:

43fde53f06311a10c3c7276b5810ab63.png

在bootstrap.yml中,添加了config-client相关的配置,指明config-server的地址。

接下来,就可以运行项目了,运行时,我们通过添加运行时参数的方式,将一个应用名指定为eureka1,将另一个应用指定为eureka2。可以通过打包后,java-jar命令来执行,也可以通过idea提供的配置项目来执行。示例采用配置项目方式,如下:

91a0ada11deeecbd857b46dcf12aa120.pngidea提供的配置项目

分别运行eureka1和eureka2,会发现,控制台可能会先出现一些错误提示,但最终,错误提示会消息,分别打开eureka1或eureka2的浏览器控制台,发现红色的提示也已经消失了,并且,在控制台中,找到了对方的相关信息。这说明,eurekaserver集群已经成功部署并运行。

事实上,在本地开发中,我们可以通过一种更简单的方式来消除单点的错误提醒,就是向自身注册自己。application.yml中配置如下:

9a134c6729a19c4a0901cadb6300ff86.pngapplication.yml

注释掉bootstrap中关于config-server的配置,再次运行即可。这也是我们在本地开发时常用的一种方式。

Client Demo

事实上,在Server Demo中,已经包含了Client Demo。当两个Eureka服务形成集群时,事实上它们把彼此当作一个Client,向对方提交了注册。所以,Client Demo不再单独提供。在后续,会结合Spring Cloud的其它相关内容提供。需要注意的是,当只需要自身只是一个Eureka Client时,不需要依赖eureka-server,仅依赖eureka-client即可,否则,你可能还需要处理server单点的问题。

b805b921589613923eb8988e8cfd8a44.png依赖eureka-client

Config和Eureka组合形成的集群

至此,我们聊到了SpringCloud中的Config和Eureka两个核心的组件,在生产中,以Config和Eureka为核心,可能的框架如下图:

90217e13484c53397f6d6d045f1fb906.png

Config和Eureka组合形成的集群

其中,eureka-server集群1专门为config-server服务,帮助config-server形成集群。eureka-server集群2基于config-server集群提供的配置形成服务,config-server集群和eureka-server集群2共同支持一系列既是eureka-client,又是config-client的业务集群。

举报/反馈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值