SpringCloud笔记:配置Eurake注册中心与高可用集群

SpringCloud笔记:配置Eurake注册中心与高可用集群SpringCloud是目前非常流行的一个微服务框架,基于springboot,由多个独立模块集合而成。每个模块既可以是一个服务项目,比如会员服务,订单服务等,也可以是公用的API给其他模块使用。可以理解为把一个大的项目拆分成很多小的模块,这些模块通过httpclient+json的形式完成服务之间的通讯,而且每个模块都有自己独立的业务和部署,使得粒度更加精细。五大组件如下:服务注册与发现——…

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

SpringCloud是目前非常流行的一个微服务框架,基于springboot,由多个独立模块集合而成。每个模块既可以是一个服务项目,比如会员服务,订单服务等,也可以是公用的API给其他模块使用。可以理解为把一个大的项目拆分成很多小的模块,这些模块通过httpclient+json的形式完成服务之间的通讯,而且每个模块都有自己独立的业务和部署,使得粒度更加精细。

五大组件如下:

服务注册与发现——Eureka
服务间通讯与负载——Ribbon
断路器——Hystrix
服务网关——Zuul
配置中心——Config

任何一个rpc远程框架都要有一个服务中心用来存储服务信息,SpringCloud支持eureka,consul,zookeeper三种,在idea中创建项目的时候也会看到它们,eureka从2.0以后不再开源(不开源并不是不让用),也可以使用consul和zookeeper。

服务注册与发现Eureka

服务注册中心作用是存储各个服务信息,通过查询服务列表知道哪些服务在线,隔一段时间(默认30秒)刷新一次,及时移除崩溃的服务。每个服务的信息以key/value的形式存储在服务中心,key是服务名字,即serviceid,value是服务所在的ip+端口号,服务之间进行通讯的时候,通过key服务名称找到要通讯服务的地址信息,进行通讯。

一,单个eurake注册中心

创建一个名为cloud的maven项目,新建三个模块,分别是eurake,order服务,user服务
如图所示:
在这里插入图片描述
eurake为服务注册中心,order和user是两个测试客户端

配置eurake:

引入eurake-server相关jar包

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

启动类开启注解
@EnableEurekaServer
在这里插入图片描述
application.properties中配置端口号,服务名称,以及注册中心相关

#项目端口号
server.port=8080
#服务名称,serverid
spring.application.name=eurake-server
#注册中心ip
eureka.instance.hostname=localhost
#是否需要向注册中心注册自己,单个的eurake-server不需要开启
eureka.client.register-with-eureka=false
#开启检索服务,单个的eurake不需要开启
eureka.client.fetch-registry=false
#注册中心地址,由注册中心ip和项目端口号拼接/eurake
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

完成启动eurake项目,访问localhost:8080

在这里插入图片描述
此界面就是eurake服务中心页面 Instances currently registered with Eureka 下面为服务列表,目前为空

配置客户端order和user
引入jar包

         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

启动类开启注解@EnableEurekaClient,这里也可以写@EnableDiscoveryClient,后者同时也支持consul和zk。
分别打开application.properties配置

#项目端口号
server.port=8082
#服务名称,serverid
spring.application.name=order-client
#注册中心地址,把自己注册到注册中心
eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka
#项目端口号
server.port=8081
#服务名称,serverid
spring.application.name=user-client
#注册中心地址,把自己注册到注册中心
eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka

启动order和user服务
刷新注册中心
在这里插入图片描述
列表中可以看到order和user两个服务已经注册进去。

二,多个eurake集群

各个服务通讯,包括zuul等部分都需要注册中心保持在正常状态,如果注册中心崩溃,就不能从注册列表读取到每个服务的地址信息,从而使得这些服务之间没有了通讯,造成崩溃。所以正常来说至少需要两到三个eurake同时运行来保证整个微服务系统正常。

集群思路很简单,多个eurake中心之间“你中有我,我中有你”,每个都是客户端,每个都是服务器,互相注册,这样就能互相检测;同时,把其他客户端如order和user在这些业务模块都注册到这些eurake中心中,这样一个挂了其他的还能服务它们。

新建并配置eurake2
eurake2作用与eurake一致,也是一个服务中心

引入jar包

  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

添加注解@EnableEurekaClient和@EnableEurekaServer,它即为server也是client
配置文件application.properties

#项目端口号
server.port=8079
#服务名称,serverid
spring.application.name=eurake-server2
#注册中心ip
eureka.instance.hostname=localhost
#是否需要向注册中心注册自己,单个的eurake-server不需要开启,多个需要开启
eureka.client.register-with-eureka=true
#开启检索服务,单个的eurake不需要开启,多个需要开启
eureka.client.fetch-registry=true

#注册中心地址,由注册中心ip和项目端口号拼接/eurake
eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka/

修改eurake
多引入jar包

  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

启动类在原来基础添加注解@EnableEurekaClient

修改applicaition.properties配置

#项目端口号
server.port=8080
#服务名称,serverid
spring.application.name=eurake-server
#注册中心ip
eureka.instance.hostname=localhost
#是否需要向注册中心注册自己,单个的eurake-server不需要开启,多个需要
eureka.client.register-with-eureka=true
#开启检索服务,单个的eurake不需要开启,多个需要
eureka.client.fetch-registry=true
#注册中心地址,由注册中心ip和项目端口号拼接/eurake,这里它需要向8079即eurak2中注册
eureka.client.serviceUrl.defaultZone=http://localhost:8079

修改order和user
修改application.properties配置,在注册中心地址上加上8079即eurake2的地址,中间逗号

#注册中心地址,把自己注册到注册中心
eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka,http://localhost:8079/eureka/

分别启动eurake,eurake2,order和user

首先输入localhost:8080
在这里插入图片描述
看到列表中包含eurake(自己),order,user和eurake2四个个服务
然后打开eurake2地址 localhost:8079
在这里插入图片描述
发现只有eurake和eurake2(自己)两个注册上了,这时要注意:注册过程中,客户端只会保证有一台服务中心有对应服务列表,当前服务中心宕机后才会“转移”到其他服务注册中心
做个测试,关闭eurake,等待30秒(默认心跳时间),看order和user是否会转移到eurake2
在这里插入图片描述
发现order和user已经过来了,但是服务列表中还有eurake服务信息,明明已经把它关闭了,这是因为Eureka拥有自我保护机制,宕机的节点不会主动T除,而是等待它重连。
可以在application.properties中设置T除已经挂掉的节点。

服务端:

eureka.server.enable-self-preservation//(设为false,关闭自我保护)
eureka.server.eviction-interval-timer-in-ms//清理间隔(单位毫秒,默认是60秒)

客户端:

 #每间隔1s,向服务端发送一次心跳
 eureka.instance.lease-renewal-interval-in-seconds =1
 #2s之内没有心跳就踢出
 eureka.instance.lease-expiration-duration-in-seconds=2
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • 集合转成数组的方法_数组转化为集合

    集合转成数组的方法_数组转化为集合1.转换方法1.遍历的方式,依次添加到集合中。2.Arrays.asList()方法3.List.of()方法4.Collections.addAll(集合,数组)方法,将集合存储到数组中1.1遍历的方式这种方式转换成的集合,集合长度可变,可以后续向集合添加数据int[]i={1,5,8,7,11,52};//1.遍历的方式Listlist=newArrayList();for(intx:i){

    2026年1月25日
    2
  • ie浏览器无法连接到代理服务器_网页无法连接到代理服务器

    ie浏览器无法连接到代理服务器_网页无法连接到代理服务器由于工作上的需要,相信很多用户会使用IE代理服务器,但是在设置之后遇到IE代理服务器没有响应错误提示(如图所示),并且浏览器无法打开网页的问题,但使用其他浏览器是可以正常上网,出现这种情况很有可能是注册表设置问题,我们可以按照以下方式来解决。     1、打开运行窗口(系统键Win+R),输入”regedit.exe”.如下图所示,根据下边的地址逐步打开:HKE

    2025年8月11日
    4
  • Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)…

    Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)…

    2021年8月24日
    50
  • 学习使用PSTools工具中的psping

    学习使用PSTools工具中的psping目录初识PsToolspsping1.使用ICMPping2.使用TCPping3.延迟测试4.带宽测试5.同功能的tcping工具总结初识PsTools    在工作中我们都会想探测某个IP是否能通,基本上都使用过ping命令,但是某些服务器禁用了ping,而且有些时候也想探测某个IP的某个端口是否能通。之前的我一般都是用“telnetipport”,但是我发现一个不好的体验就是没啥…

    2025年7月26日
    4
  • C++的动态联编与静态联编【转载】

    C++的动态联编与静态联编【转载】

    2021年8月27日
    46
  • 适配器简单介绍

    适配器简单介绍适配器的作用如下图:1、这种通信适配器上面装有处理器和存储器(RAM和ROM),硬件地址固化在适配器的ROM中,软件地址(IP地址)在计算机的存储器中。2、适配器在接收和发送各种帧时,不使用计算机的CPU,此时计算机的CPU可以处理其他任务。3、当适配器收到有差错的帧时,就把帧直接丢弃不通知计算机。4、当计算机手收到正确的帧时,就使用中断通知计算机,并交付协议栈中的网络层。5、当计算机发送IP数据…

    2022年5月11日
    47

发表回复

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

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