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

eruka处理应用服务器集群,Spring Cloud学习笔记——Eureka Server服务搭建及集群部署…SpringCloud学习笔记——EurekaServerSpringCloud版本:Hoxton.SR3Springboot版本:2.2.5.RELEASEdemoGit仓库:开源在gitee中,私信索取地址服务治理在微服务架构中,服务治理是一个核心的内容。SpringCloud中,有许多的组件帮助完成服务治理。服务治理,可能包含以下一内容,如:服务注册与发现:服务的注册与发现,是微…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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的业务集群。

举报/反馈

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 粗糙集理论_简述粗糙集不确定性

    粗糙集理论_简述粗糙集不确定性粗糙集理论1粗糙集的基本概念在粗糙集理论中,我们把知识看做是一种能被用于分类对象的能力。其中对象可以代表现实世界中的任意事物,包括物品、属性、概念等。即:知识需要同现实世界中特定环境的确定对象相

    2022年8月4日
    14
  • c 获取UUID_c获取程序运行路径

    c 获取UUID_c获取程序运行路径计算机获取UUIDUUID是通用唯一识别码(UniversallyUniqueIdentifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名…

    2022年8月9日
    19
  • Java基准测试工具JMH使用

    Java基准测试工具JMH使用JMH,即JavaMicrobenchmarkHarness,这是专门用于进行代码的微基准测试的一套工具API。JMH由OpenJDK/Oracle里面那群开发了Java编译器的大牛们所开发。何谓MicroBenchmark呢?简单地说就是在方法层面上的benchmark,精度可以精确到微秒级。本文主要介绍了性能基准测试工具JMH,它可以通过一些功能来规避由JVM中的JIT或者其他优化对性能测试造成的影响。

    2022年7月27日
    6
  • Perl正则表达式超详细教程

    Perl正则表达式超详细教程前言想必学习perl的人,对基础正则表达式都已经熟悉,所以学习perl正则会很轻松。这里我不打算解释基础正则的内容,而是直接介绍基础正则中不具备的但perl支持的功能。关于基础正则表达式的内容,可参阅基础正则表达式。我第一个要说明的是,perl如何使用正则。还记得当初把《精通正则表达式》的书看了一遍,把perl正则也学了个七七八八,但是学完后却不知道怎么去使用perl正则,虽然里面也介绍了一点…

    2022年5月6日
    36
  • 怎样在SharePoint管理中心检查数据库架构版本号、修补级别和修补程序的常规监控

    怎样在SharePoint管理中心检查数据库架构版本号、修补级别和修补程序的常规监控

    2021年12月5日
    39
  • 如何运行一个vue项目(github安装项目依赖)

    1.cd到package.json目录中,执行npmoutdatedPackageCurrentWantedLatestLocation包名当前版本满足semer版本的最高版本(及在兼容的前提下能更新的最高版本)当前最高的版本红色:可以立即更新黄色:需要进行兼容,慎重更新全部更新在已有项目中,不建议采用全部更新,推荐使用npmupdate按需更新安装ncu,执行npminstall-gnpm-check-updates执行ncu-u

    2022年4月16日
    83

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号