Spring Cloud构建微服务架构(六)高可用服务注册中心

近期因工作原因减缓了更新频率,同时为了把Spring Cloud中文社区搭建起来也费了不少时间,几乎每天都在挤牙膏般的凑时间出来做一些有意义的事。未能按原计划更新博文,在此对持续关注我博客的朋友们深表歉意。

之前在写Spring Cloud系列文章的时候,列过一个较粗的计划,现在由于收到不少反馈和问题,因此准备做一些调整,先将一些大家关注较为集中的点拉出来写一些内容。

今天这篇主要就说说Eureka Server的高可用问题。

前言

在Spring Cloud系列文章的开始,我们就介绍了服务注册与发现,其中,主要演示了如何构建和启动服务注册中心Eureka Server,以及如何将服务注册到Eureka Server中,但是在之前的示例中,这个服务注册中心是单点的,显然这并不适合应用于线上生产环境,那么下面在前文的基础上,我们来看看该如何构建高可用的Eureka Server集群。

单点Eureka Server的样例:

  • GitHub
  • 开源中国

Eureka Server的高可用

Eureka Server除了单点运行之外,还可以通过运行多个实例,并进行互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署。

下面以Chapter1-1-1中的eureka-server为基础,对其改造,构建双节点的服务注册中心。

  • 创建application-peer1.properties,作为peer1服务中心的配置,并将serviceUrl指向peer2
spring.application.name=eureka-server
server.port=1111
eureka.instance.hostname=peer1

eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/
  • 创建application-peer2.properties,作为peer2服务中心的配置,并将serviceUrl指向peer1
spring.application.name=eureka-server
server.port=1112
eureka.instance.hostname=peer2

eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/
  • /etc/hosts文件中添加对peer1和peer2的转换
127.0.0.1 peer1
127.0.0.1 peer2
  • 通过spring.profiles.active属性来分别启动peer1和peer2
java -jar eureka-server-1.0.0.jar --spring.profiles.active=peer1
java -jar eureka-server-1.0.0.jar --spring.profiles.active=peer2
  • 此时访问peer1的注册中心:http://localhost:1111/,如下图所示,我们可以看到registered-replicas中已经有peer2节点的eureka-server了。同样地,访问peer2的注册中心:http://localhost:1112/,能看到registered-replicas中已经有peer1节点,并且这些节点在可用分片(available-replicase)之中。我们也可以尝试关闭peer1,刷新http://localhost:1112/,可以看到peer1的节点变为了不可用分片(unavailable-replicas)。

服务注册与发现

在设置了多节点的服务注册中心之后,我们主需要简单需求服务配置,就能将服务注册到Eureka Server集群中。我们以Chapter1-1-1中的compute-service为基础,修改application.properties配置文件:

spring.application.name=compute-service
server.port=2222

eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/

上面的配置主要对eureka.client.serviceUrl.defaultZone属性做了改动,将注册中心指向了之前我们搭建的peer1与peer2。

下面,我们启动该服务,通过访问http://localhost:1111/http://localhost:1112/,可以观察到compute-service同时被注册到了peer1和peer2上。若此时断开peer1,由于compute-service同时也向peer2注册,因此在peer2上其他服务依然能访问到compute-service,从而实现了高可用的服务注册中心。

深入理解

虽然上面我们以双节点作为例子,但是实际上因负载等原因,我们往往可能需要在生产环境构建多于两个的Eureka Server节点。那么对于如何配置serviceUrl来让集群中的服务进行同步,需要我们更深入的理解节点间的同步机制来做出决策。

Eureka Server的同步遵循着一个非常简单的原则:只要有一条边将节点连接,就可以进行信息传播与同步。什么意思呢?不妨我们通过下面的实验来看看会发生什么。

  • 场景一:假设我们有3个注册中心,我们将peer1、peer2、peer3各自都将serviceUrl指向另外两个节点。换言之,peer1、peer2、peer3是两两互相注册的。启动三个服务注册中心,并将compute-service的serviceUrl指向peer1并启动,可以获得如下图所示的集群效果。

访问http://localhost:1112/,可以看到3个注册中心组成了集群,compute-service服务通过peer1同步给了与之互相注册的peer2和peer3。

通过上面的实验,我们可以得出下面的结论来指导我们搭建服务注册中心的高可用集群:

  • 两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现

更多讨论可前往:Spring Cloud中文社区

本文完整示例可参考

  • GitHub
  • 开源中国

【转载请注明出处】:http://blog.didispace.com/springcloud6/


money.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

技术动态 | 「可解释知识图谱推理」最新方法综述

转载公众号 | 专知近年来,以深度学习模型为基础的人工智能研究不断取得突破性进展,但其大多具有黑盒性,不 利于人类认知推理过程,导致高性能的复杂算法、模型及系统普遍缺乏决策的透明度和可解释性。在国 防、医疗、网络与信息安全…

ACL'22 | 陈丹琦提出CoFi模型剪枝,加速10倍,精度几乎无损

文 | jxyxiangyu我们都知道,为了让以深度神经网络为基础的模型更快地训练,人们提出了单机多卡、多机多卡等分布式训练的方式,那么,在模型预测推理阶段,有什么方法可以加速推理呢?遗憾的是,并行/…

LeetCode 第 19 场双周赛(231 / 1120,前20.6%)

文章目录1. 比赛结果2. 题目LeetCode 5311. 将数字变成 0 的操作次数 easyLeetCode 5312. 大小为 K 且平均值大于等于阈值的子数组数目 mediumLeetCode 5313. 时钟指针的夹角 mediumLeetCode 5314. 跳跃游戏 IV hard1. 比赛结果 做出来了1, 3, 4题,第2题结束后12分…

【Spring Cloud中文社区】正式启动

前段时间,开了个关于Spring Cloud的交流群,短短两周时间就聚集了一批爱好者与实践者,每天在交流群中大家都进行着各种不同深度的探讨,但是这些高质量的聊天记录无法被搜索引擎收纳,导致很多不错的研究内容无法分享给网…

图谱实战 | 无本体约束的开放知识图谱构建:以OpenIE为代表的开放信息抽取项目技术方案解读...

目前,本体一直是知识图谱落地过程中的容易受到抨击的点,很多非专业用户对图谱的需求,其实并不想花费大量的时间去做本体约束,而是想直接拿来就用,开箱即用,以达到搜索与分析等目的。对本体的强专业性门槛&a…

计算机视觉,凉了?

计算机视觉是人工智能的关键领域之一,是一门研究如何使机器“看”的科学。近年来,尽管计算机视觉技术在学术上取得了长足的进步,但由于缺少“现金牛”应用,经常在网络上出现“计算机视觉凉凉了”的言论。其实这种观点是非常片面的…

LeetCode 1346. 检查整数及其两倍数是否存在(哈希)

1. 题目 给你一个整数数组 arr&#xff0c;请你检查是否存在两个整数 N 和 M&#xff0c;满足 N 是 M 的两倍&#xff08;即&#xff0c;N 2 * M&#xff09;。 更正式地&#xff0c;检查是否存在两个下标 i 和 j 满足&#xff1a; i ! j0 < i, j < arr.lengtharr[i]…

微服务架构的基础框架选择:Spring Cloud还是Dubbo?

最近一段时间不论互联网还是传统行业&#xff0c;凡是涉及信息技术范畴的圈子几乎都在讨论微服务架构。近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验&#xff0c;这对于最近正在整理Spring Cloud相关套件内容与实例应用的我而言&#xff0c;…

自监督学习效果差?Meta AI 提出 Q-score 快速过滤错误样本!

文 | jxyxiangyu自监督学习指的是不依靠人工标注数据&#xff0c;直接从数据中学习到有用的特征表示。自监督学习中所采用的监督信息可以是“是否属于同一实例样本”的二分类标签&#xff08;对比学习&#xff09;&#xff0c;也可以是一段连续的自然语言文本的下一个词&#x…

LeetCode 1347. 制造字母异位词的最小步骤数

1. 题目 给你两个长度相等的字符串 s 和 t。每一个步骤中&#xff0c;你可以选择将 t 中的 任一字符 替换为 另一个字符。 返回使 t 成为 s 的字母异位词的最小步骤数。 字母异位词 指字母相同&#xff0c;但排列不同的字符串。 示例 1&#xff1a; 输出&#xff1a;s &qu…

图谱实战 | 为什么我们需要医学知识图谱?

转载公众号 | OMAHA联盟 人工智能正在变得司空见惯。在医疗领域&#xff0c;医生也越来越重视人工智能所带来的疾病诊断效率和治疗价值的提升。要实现医疗人工智能&#xff0c;需要构建医学知识图谱以满足医疗领域对知识的应用需求。◆ ◆ ◆知识图谱是什么&#xff1f;知识图…

Spring Cloud构建微服务架构(三)断路器

在微服务架构中&#xff0c;我们将系统拆分成了一个个的服务单元&#xff0c;各单元间通过服务注册与订阅的方式互相依赖。由于每个单元都在不同的进程中运行&#xff0c;依赖通过远程调用的方式执行&#xff0c;这样就有可能因为网络原因或是依赖服务自身问题出现调用故障或延…

测试集涨点猛如虎,推上线无收益?算法新手翻车原因盘点!

文 | 杨旭东知乎在推荐算法领域&#xff0c;时常会出现模型离线评测效果好&#xff0c;比如AUC、准召等指标大涨&#xff0c;但上线后业务指标效果不佳&#xff0c;甚至下降的情况&#xff0c;比如线上CTR或CVR下跌。本文尝试列举一些常见的原因&#xff0c;为大家排查问题提供…

LeetCode 1348. 推文计数(哈希map+set)

1. 题目 请你实现一个能够支持以下两种方法的推文计数类 TweetCounts&#xff1a; recordTweet(string tweetName, int time) 记录推文发布情况&#xff1a;用户 tweetName 在 time&#xff08;以 秒 为单位&#xff09;时刻发布了一条推文。 getTweetCountsPerFrequency(s…

Spring Cloud构建微服务架构(二)服务消费者

在上一篇《Spring Cloud构建微服务架构&#xff08;一&#xff09;服务注册与发现》中&#xff0c;我们已经成功创建了“服务注册中心”&#xff0c;实现并注册了一个“服务提供者&#xff1a;COMPUTE-SERVICE”。那么我们要如何去消费服务提供者的接口内容呢&#xff1f; Rib…

2202年了,继续大比拼ViT、MLP、CNN结构有意义吗??

文 | 卖萌菌近日&#xff0c;MSRA发布了一篇题为《Transformer不比CNN强 Local Attention和动态Depth-wise卷积前世今生》的博文&#xff0c;再次谈论了这个老生常谈的话题。文中提到&#xff0c;Depth-wise CNN 和 attention 存在高度相似的结构&#xff0c;调参优化之后&…

Spring Cloud构建微服务架构(一)服务注册与发现

Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具&#xff0c;它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。 Spring Cloud包…

击败GPT3,刷新50个SOTA!谷歌全面统一NLP范式

文 | ZenMoore编 | 小轶写在前面一觉醒来&#xff0c;迷糊之中看到一条推特&#xff1a;瞬间清醒&#xff01;Google 的 Yi Tay (and Mostafa) 团队提出了一个新的策略 Mixture-of-Denoisers, 统一了各大预训练范式。重新思考现在的预训练精调&#xff0c;我们有各种各样的预训…

剑指Offer - 面试题3. 数组中重复的数字(哈希)

1. 题目 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0&#xff5e;n-1 的范围内。数组中某些数字是重复的&#xff0c;但不知道有几个数字重复了&#xff0c;也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1&#xff1a; 输…

击败GPT3,刷新50个SOTA,谷歌全面统一NLP范式?

声明&#xff1a;本文原创首发于公众号夕小瑶的卖萌屋。作者&#xff1a;ZenMoore&#xff0c;编辑&#xff1a;小轶--->【我是传送门】写在前面一觉醒来&#xff0c;迷糊之中看到一条推特&#xff1a;瞬间清醒&#xff01;Google 的 Yi Tay (and Mostafa) 团队提出了一个新…