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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Python获取时间戳_python爬虫时间戳

    Python获取时间戳_python爬虫时间戳获取时间戳importtimedefget_time_stamp()->str:_t=time.localtime()time_stamp=f”{str(_t.tm_mon).zfill(2)}{str(_t.tm_mday).zfill(2)}”+\f”-{str(_t.tm_hour).zfill(2)}{str(_t.tm_min).zfill(2)}{str(_t.tm_sec).zfill(2)}”returntime

  • decode encode区别_python decode和encode

    decode encode区别_python decode和encode#-*-coding:utf-8importsys”’*首先要搞清楚,字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb231…

  • 级联分类器原理(级联器是什么)

    级联分类器即为Emgucv中的CascadeClassifier。使用CascadeClassifier来加载一个.xml分类器文件,然后使用DetectMultiScale函数来对图片进行检测。这是DetectMultiScale函数。publicRectangle[]DetectMultiScale(IInputArrayimage,doublescaleFactor=1.

  • 【经典算法大全】收集51种经典算法 初学者必备

    【经典算法大全】收集51种经典算法 初学者必备《经典算法大全》是一款IOS平台的应用。里面收录了51种常用算法,都是一些基础问题。博主觊觎了好久,可悲哀的是博主没有苹果,所以从网上下了老奔的整理版并且每个都手敲了一遍。虽然网上也有博客贴了出来,但是自己写写感觉总是好的。现在分享个大家。代码和运行结果难免有出错的地方,请大家多多包涵。 1.河内之塔(汉诺塔)2.费式数列3.巴斯卡三角形4.三色棋5.老鼠走迷宫(1

  • mysql的乐观锁使用_java悲观锁乐观锁定义

    mysql的乐观锁使用_java悲观锁乐观锁定义正确的理解MySQL的乐观锁,悲观锁与MVCC!首先声明,MySQL的测试环境是5.7前提概念数据库并发的三种场景乐观锁和悲观锁的澄清悲观锁乐观锁MVCC多版本并发控制总结乐观锁和悲观锁的抉择OCC,PCC,MVCC参考资料前提概念数据库并发的三种场景数据库并发场景有三种,分别为:读-读:不存在任何问题,也不需要并发控制读-写:有隔离性问题,…

  • Python学习笔记(一)PyCharm社区版安装教程

    Python学习笔记(一)PyCharm社区版安装教程因为工作的原因,这两个月开始学习Python。准备把学习的东西记录一下。因为是自己的电脑,有python3.8,但是没有安装编译器,所以从PyCharm安装开始。(安装python会自带IDLE编辑器,自己学习的时候用着挺合适的,但是要用于工作或者其他大一些的项目,还是安装PyCharm比较合适)接下来开始安装教程。1、首先通过官网下载PyCharm社区版的安装包。下图中可以看到,PyCharm分为专业版(Professional)和社区版(Community),推荐使用社区版,基本能满足.

发表回复

您的电子邮箱地址不会被公开。

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