当前位置:首页>编程日记>正文

【SpringCloud】高可用Eureka

Eureka是spring cloud只一个非常重要的组件,注册中心,也叫服务发现。功能定位类似于dubbo中的zookeeper。而Eureka和zookeeper又有所不同,Eureka强调的是CAP理论中的AP,zookeeper强调的是CP。

这里我们将要创建两个Eureka的注册中心,两个注册中心相互注册

Eureka的配置如下

pom依赖如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.6.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.itcast.eureka</groupId><artifactId>itcast-eureka</artifactId><version>0.0.1-SNAPSHOT</version><name>itcast-eureka</name><description>Demo project for Spring Boot</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Hoxton.SR3</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

yml配置

server:port: 10086
spring:application:name: itcast-eurekaeureka:client:service-url:defaultZone: http://localhost:10087/eureka/server:eviction-interval-timer-in-ms: 5000 #剔除无效链接的间隔时间enable-self-preservation: false #关闭自我保护状态

启动类

@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
@EnableEurekaServer  //启动eureka服务端
public class ItcastEurekaApplication {public static void main(String[] args) {SpringApplication.run(ItcastEurekaApplication.class, args);}}

然后启动项目,等到项目启动后,我们在按照上述的配置重新在建立一个项目,修改yml中的配置即可

需要修改的yml配置如下:

server:port: 10087
spring:application:name: itcast-eurekaeureka:client:service-url:defaultZone: http://localhost:10086/eureka/server:eviction-interval-timer-in-ms: 5000 #剔除无效链接的间隔时间enable-self-preservation: false #关闭自我保护状态

在我的上一篇博客中,写了注册中心的客户端可服务端,并将它们注册给了端口为10086的注册中心,链接如下:

https://blog.csdn.net/wangyunzhao007/article/details/105776190

相互注册

等到两个注册中心启动后,并且将服务端和客户端都启动后,我们可以在浏览器输入localhost:10086,还有localhost:10087

效果如下:

10087

【SpringCloud】高可用Eureka 配图01

 10086

【SpringCloud】高可用Eureka 配图02

 

如上可知,我虽然只把服务端和客户端注册给10086,但是10087也获取了。同样的我们也可以将服务同时注册给多个注册中心,yml配置如下:

server:port: 80
spring:application:name: service-consumer
eureka:client:service-url:defaultZone: http://localhost:10086/eureka/,http://localhost:10087/eureka/registry-fetch-interval-seconds: 5fetch-registry: true  #开启拉取服务

注册中心也可以同样如此注册,如果有1,2,3,4,5个注册中心,我们可以把1注册给2,3,4,5,其他也是如此,全部注册给其他注册中心。

其他方式注册

也可以把1注册给2,2注册给3,3注册给4,4注册给5,5再注册给1,形成闭环。

但是由此产生了传递注册,如果中间有个服务宕机,后边的服务就拿不到之前的注册,现在在建立一个eureka,端口为10088,现在就有了三个eureka,我们把86注册给87,把87注册给88,把88再注册给86,然后还有一个上一篇博客中的注册中心客户端和服务端注册给86,当全部启动时,效果如下:

10086:

【SpringCloud】高可用Eureka 配图03

10087【SpringCloud】高可用Eureka 配图04

10088

【SpringCloud】高可用Eureka 配图05由三个图可知,只有注册过得服务才能拿到,如果存在传递的注册关系,是拿不到被注册的服务的,就好像注册在86的服务端和客户端,由于86注册在87,所以87拿得到。值得注意得是87虽然也注册给了88,但是88并没有拿到86的。 


http://www.coolblog.cn/news/109b0f13a0540a59.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • Mac原生Terminal快速登录ssh
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • jquery 使用小技巧
  • 2019-9
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • 科学计算工具NumPy(3):ndarray的元素处理
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • linux批量创建用户和密码
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • js常用阻止冒泡事件
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • 【设计模式】 模式PK:策略模式VS状态模式
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • CSS小技巧——CSS滚动条美化
  • JS实现-页面数据无限加载
  • 阿里巴巴分布式服务框架 Dubbo
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里大鱼.net core 发送短信
  • 程序员入错行怎么办?
  • 两张超级大表join优化
  • 第九天函数
  • Linux软件安装-----apache安装
  • HDU 5988 最小费用流
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 《看透springmvc源码分析与实践》读书笔记一
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • Arm芯片的新革命在缓缓上演
  • nagios自写插件—check_file
  • python3 错误 Max retries exceeded with url 解决方法
  • 行为模式之Template Method模式
  • 通过Spark进行ALS离线和Stream实时推荐