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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 物联网架构概述_物联网9大应用领域

    物联网架构概述_物联网9大应用领域——物联网(TheInternetofThings,简称IOT)其核心组成就是物联设备、网关和云端。物联网网络架构从下到上依次为感知层、网络层和应用层。感知层:识别物体,采集信息;网络层:主要实现信息的传递;应用层:提供丰富的基于物联网的应用;举例:在智能电网中的远程电力抄表应用:安置于用户家中的读表器就是感知层中的传感器,这些传感器在收集到用户用电的信息后,通过网络发…

    2022年9月18日
    2
  • 面部表情还是面目表情(怎样调整面部表情)

    目录概要:问题来源:论文对此比赛的说明:选择原因:实现与优化思路:前置:数据处理:原csv数据的读取与分割:csv数据转图片和tfrecord的存取:tfrecord接生产队列供模型训练:神经网络定义:损失函数:滑动平均(EMA):训练与优化过程:基本设置:学习率:batch_size:训练次数:Dropout:BN:…

    2022年4月11日
    112
  • 数据库sql嵌套查询题_sql子查询嵌套优化

    数据库sql嵌套查询题_sql子查询嵌套优化一、嵌套查询概念在sql语言中,一个select-from-where语句成为一个查询块,将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询成为嵌套查询。外层的查询块称为外层查询或父查询,内层的查询称为内层查询或子查询。注意点:子查询的select语句不能使用orderby子句,orderby只能对最终查询结果排序。嵌套查询分类:1、相关子查询/关联子查询:子查询的查询条件依赖于父查询,比如,如果子查询需要执行多次,即采用循环的方式,先从外部查询开始,每

    2022年8月10日
    6
  • jq ajax 跨域_解决跨域请求

    jq ajax 跨域_解决跨域请求jQuery中封装了ajax的方法,以下主要讨论在这种方法下跨域的问题1.在服务端添加响应头header(‘Access-Control-Allow-Origin’,’*’)header(‘Access-Control-Allow-Methods’,’PUT,POST,GET,DELETE,OPTIONS’)

    2022年8月24日
    8
  • MongoDB获得短暂的

    MongoDB获得短暂的

    2021年12月17日
    46
  • python生成exe文件运行闪退解决方法

    python生成exe文件运行闪退解决方法**python生成exe文件运行闪退解决方法:**用python写了一个程序,在python下运行是正常的,但是生成exe文件后运行闪退我当时怀疑是不是脱离的python解释器就运行不了的问题,网上找了一通也没有解决。1.可能是程序运行结束,窗口自然就默默离开了。那么在源程序中加入用户输入字符后结束程序。input(“输入任意字符结束“)这样的。2.你编译成.exe的python程序…

    2022年4月28日
    83

发表回复

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

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