前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >eruka处理应用服务器集群,Spring Cloud学习笔记——Eureka Server服务搭建及集群部署…

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

作者头像
全栈程序员站长
发布2022-09-24 13:05:23
4010
发布2022-09-24 13:05:23
举报

大家好,又见面了,我是你们的朋友全栈君。

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.png
1f638604dac6a96d972d0f3c231f4839.png

Server依赖

在Application类上添加注解 @EnableEurekaServer。

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

5688b5b1d7b48854fa0e69ad24f4a829.png
5688b5b1d7b48854fa0e69ad24f4a829.png

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

95aaa7414a6ed7ce4efba5ef9f456626.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.png
1534028c57a202e3db3be20867752240.png

eureka1-dev.yml

eureka2-dev.yml内容如下:

31d08eb788b992317288063419a47bdb.png
31d08eb788b992317288063419a47bdb.png

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

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

5496529e7549967fdd5b5d29fd9c3683.png
5496529e7549967fdd5b5d29fd9c3683.png

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

43fde53f06311a10c3c7276b5810ab63.png
43fde53f06311a10c3c7276b5810ab63.png

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

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

91a0ada11deeecbd857b46dcf12aa120.png
91a0ada11deeecbd857b46dcf12aa120.png

idea提供的配置项目

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

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

9a134c6729a19c4a0901cadb6300ff86.png
9a134c6729a19c4a0901cadb6300ff86.png

application.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
b805b921589613923eb8988e8cfd8a44.png

依赖eureka-client

Config和Eureka组合形成的集群

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

90217e13484c53397f6d6d045f1fb906.png
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的业务集群。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171873.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档