线上SpringCloud网关调用微服务跨机房了,咋整?

AlibabaCloud 和 SpringCloud的区别+多机房部署-数据库复制延迟-解决方案 AlibabaCloud和SpringCloud的区别? 1、地址 spring.io/projects/sp… 2、先说下两个的区别和对应的技术栈 背景: 1、2018年之前的开发的项目的Cloud微服务技术栈 【SpringCloud全家桶】 服务注册发现 Eureka (不维护) 远程调用 Open-Feign-SpringCloud 业务网关 Zuul (不维护) 限流降级 Hystrix (不维护) 分布式配置中心 Config 链路追踪 Sleuth+Zipkin 刚开. 阅读详情

1、前言

公司内考虑到服务器资源成本的问题,目前业务上还在进行服务的容器化改造和迁移,计划将容器化后的服务,以及一些中间件(MQ、DB、ES、Redis等)尽量都迁移到其他机房。

那你们为什么不用阿里云啊,腾讯云啊,还用自己的机房?

的确是这样,公司内部目前还是有专门的运维团队。也是因为历史原因,当时业务发展比较迅猛,考虑到数据的安全性也是自建机房的。对于中小型公司这样做,显然成本太高了,所以一般都用阿里云。对于中大型企业或者对数据安全性要求高的公司,自建机房维护的也不再少数。

对于中间件来说,比如 Redis 缓存,有的业务也是因为历史原因,当时上线后都是单独申请,并部署的一套集群,但是量并不是很大,所以类似这种情况的,可以考虑跟其他项目使用的集群合并为一个,这样就可能节省了一部分服务器资源。

现在大多数企业都已经微服务化,容器化了。

所以,将非容器化的业务要求都迁移到容器中,这里的容器基本都是指 Kubernetes 平台了,通过容器发布调度服务,对于运维来说,维护变得更加便捷,高效。

对于研发来说,业务需要部署服务,不再需要重新提 JIRA 工单,走一系列审核流程,最后给到你的可能还是一台虚拟机,依赖的软件单独安装部署。用了容器,只要在 集装箱 中提前安装好所需软件环境,按照发布规范打好镜像,发布服务的过程一路就是 点点点...。

2、线上业务场景介绍

继续来说今天的主题。

有一个项目是 SpringCloud 架构的,其中使用到了 网关 Zuul,并且也使用了到了 Eureka 作为注册中心。

因为该项目提前已经迁移到北京机房节点部署的容器环境,我们最终目标是迁移到其他机房(如:天津机房)。

北京有两个机房:A机房、B机房,因为都在北京,所以两个机房之间的 网络延时 是可以接受的。

微服务也同样在这两个机房之间都有部署。

此时,如果只是将微服务部署到 天津机房,会变成如下图所示的关系:

问题很明显,就是网关服务只有北京的,而微服务新增了天津机房的,此时会导致 跨机房调用,即北京网关调用到了天津微服务。

尽管北京到天津 ping 的网络延时仅有 3 毫秒 之差,但是服务与服务之间的调用,可就不止这 3 毫秒了。

其中包括服务器与服务器之间 TCP连接的建立、数据传输的网络开销,如果数据包过大,跨机房访问耗时就会很明显了。

所以呢,尽量避免跨机房访问,当然要将网关也要迁移到天津机房。

但是,大家看 粉红色粗体 的线条,仍然存在跨机房调用,天津网关调用到北京微服务。

对于线上并发访问量稍微大点,或者有些接口响应体大的,又或者网络抖动等场景下,可能就会导致接口响应时间变长了。

如何解决呢?

因大部分业务都部署到天津,可以将天津机房的服务权重调高

SLB配置 (类Nginx):

upstream {
    server 北京机房网关IP  20;
    server 天津机房网关IP  80;
}

网关与微服务之间,都是通过 Eureka 注册中心媒介来沟通,即 注册服务 拉取服务。

仅仅在网关层配置好权重还不够,此时还会存在天津网关路由到北京微服务上。

Eureka 内部是基于 Ribbon 实现负载均衡的,自行实现按权重的负载均衡策略,Eureka做一点改造,界面上支持权重的修改。

下图截图了部分示例:

IP后面的就是权重值,可以在界面上输入权重值进行调整。

我们可以将北京微服务权重调低,天津微服务权重调高。

相当于网关以及微服务两侧都是通过基于 权重 的负载均衡算法来尽量减少跨机房调用的,但是无法避免跨机房调用。

使用 Eureka 的分区改进

上面描述的方案对于 20% 的流量仍然存在跨机房访问,我们能不能做到先访问同一机房的服务,如果同一机房的服务都不可用了,再访问其他机房的呢?

答案是 可以的。

我们可以借助于 Eureka 注册中心里提供了 region 和 zone 的概念来实现。

region 和 zone 两个概念均来自亚马逊的 AWS:

region:简单理解为地理上的分区,比如亚洲地区,或者华北地区等等,没有具体大小的限制。根据项目情况,自行合理划分 region。

zone:简单理解为 region 内的具体机房,比如说 zone 划分为北京、天津,且北京有两个机房,就可以在 region 内划分为三个zone,北京划分为zone1、zone2,天津为zone3。

结合上面的示例,假设仅设置一个 region 为京津地区。

然后我们给这个区域下的网关服务、微服务打上 zone 机房标签,在系统运维上将机房也称作 IDC 数据中心。

网关服务打上zone标签:

微服务打上zone标签:

这个功能都是在 Eureka注册中心 上实现的,在给服务配置 zone 前,调用路径如下所示:

给服务配置 zone 之后,框架内部的路由机制的实现下,调用路径如下所示:

当前使用的 Eureka 是部署在北京,如果想让服务在注册、续约、拉取 动作时也能实现 就近机房访问,部署架构就变成如下这个样子:

北京区域不同机房假设认为网络延时小,所以北京两个机房可以使用同一个 Eureka 集群;天津可以单独再部署一套 Eureka 集群,这样就可以实现优先路由到同机房访问。

服务注册的关键配置

基本原理就是这样,贴上一段 Eureka 使用 region 和 zone 的配置供大家参考:

spring:
  application:
    name: mananger

server:
  port: ${EUREKA_SERVER_PORT:8011}

eureka:
  instance: 
    # 全网服务实例唯一标识
    instance-id: ${EUREKA_SERVER_IP:127.0.0.1}:${server.port}
    # 服务实例的meta数据键值对集合,可由注册中心进行服务实例间传递
    metadata-map:
      # [HA-P配置]-当前服务实例的zone
      zone: ${EUREKA_SERVER_ZONE:tz-1}
      profiles: ${spring.profiles.active}
    # 开启ip,默认为false=》hostname
    prefer-ip-address: true
    ip-address: ${EUREKA_SERVER_IP:127.0.0.1}
    # [HA-P配置]-当前服务实例的region
client:
    region: ${EUREKA_SERVER_REGION:cn-bj}
    # [HA-P配置]-开启当前服务实例优先发现同zone的注册中心,默认为true
    prefer-same-zone-eureka: true
    # [服务注册]-允许当前服务实例注册,默认为true
    register-with-eureka: true
    # [服务续约]-允许当前服务实例获取注册信息,默认为true
    fetch-registry: true
    # [HA-P配置]-可用region下zone集合
        availability-zones:
      cn-bj: ${eureka.instance.metadata-map.zone},zone-bj,zone-tj
   service-url:  
      # [HA-P配置]-各zone下注册中心地址列表
       zone-bj: http://BJIP1:8011/eureka,http://BJIP2:8012/eureka
       zone-tj: http://TJIP1:8013/eureka,http://TJIP2:8014/eureka

prefer-same-zone-eureka :

默认就为true,首先会通过 region 找到 availability-zones 内的第一个 zone,然后通过这个 zone 找到 service-url 对应该机房的注册中心地址列表,并向该列表内的 第一个URL 地址发起注册和心跳,不会再向其它的URL地址发起操作。只有当第一个URL地址注册失败的情况下,才会依次向其它的URL发起操作,重试一定次数仍然失败,会间隔一段心跳时间继续重试。

eureka.instance.metadata-map.zone:

服务提供者和消费者都要配置该参数,表示自己属于哪一个机房的。网关服务也属于消费者,从注册中心拉取到注册表之后会根据这个参数中指定的 zone 进行过滤,过滤后向同 zone 内的服务会有多个实例 ,通过 Ribbon 来实现负载均衡调用。如果同一 zone内的所有服务都不可用时,会其他 zone 的服务发起调用。

另外注意一点 availability-zones 下 region 的配置是 ${eureka.instance.metadata-map.zone},... 这样配置的好处是,你只要指定好了 eureka.instance.metadata-map.zone,优先会将这个参数放到可用分区下作为第一个 zone 来访问。

Zuul 网关路由分区源码分析

网关使用的 zuul,其内部也是通过 ribbon 和 eureka 的结合来实现服务之间的调用,因为网关实际也是个服务消费者,同样会注册到 eureka 上,被网关拉取过来的注册表里的服务,作为服务提供者,同样会注册到eureka上。

通过一张图把控整个请求的大致脉络:

上述图示中部分核心源码如下所示:

PollServerListUpdater#start(final UpdateAction action) 启动后会每隔30秒(默认)去Eureka注册中心拉取一次注册表信息,更新本地缓存的数据结构。

调用到了DyamicServerListLoadBalancer匿名实现类中。

通过DyamicServerListLoadBalancer类调用了 updateListOfServer() 方法更新服务列表,serverListImpl的实现是DiscoveryEnabledNIWSServerList类

在DiscoveryEnabledNIWSServerList类内部会调用 obtainServersViaDiscovery() 方法,其内部通过 EurekaClient 来实现从 Eureka 注册中心拉取服务列表。

过滤器内部获取同一机房(zone)的服务列表,先后会调用 ZonePreferenceServerListFilter 和 ZoneAffinityServerListFilter 两个过滤器实现 zone 的过滤。

最开始获取的Servers一共是有4条记录,根据调试的代码看,我们是为了获取 zone 为2的服务,所以得到的结果是一条,即 zone = "2",说明找到了同 zone 服务。

请求接口后会调用到 LoadBalancerContext#getServerFromLoadBalancer(...),内部会调用到ILoadBalancer 具体实现的 chooseServer() 方法,最终会获取到 zone="2" 里的一个Server。

那么这里是如何选择的Server呢?

本地调试时,只配置了已给可用的zone,所以这里条件满足会直接调用 super.chooseServer(key) 父类的方法:

BaseLoadBalancer#chooseServer(…) 父类的选择Server的方法,其内部通过 IRule#choose(key) 会调用到具体的负载均衡器的实现:

上述截图中,能看到 MetadataWeightedRule ,这个类是我们自行基于权重负载均衡实现。

该实现类是继承了 ZoneAviodanceRule ,目的就是利用了 zone 的概念,所重写的 choose(Object key) 方法,调用了 this.getPredicate().getEligibleServers(...) 会走同样的过滤规则获取到同一机房(zone)下的所有服务列表,然后在基于每个服务配置的权重筛选一个Server。

获取到 Server 后,拼接接口的URI请求地址 http://IP:PORT/api/.../xxx.json ,通过底层的 OkHttp 实现完成 Http 接口的调用过程。

好了,到此基本就分析完了,从网关请求,通过 ribbon 组件从 eureka 注册中心拉取服务列表,如何基于 zone 分区来实现多数据中心的访问。

对于 服务注册,要保证服务能注册到同一个 zone 内的注册中心,如果跨 zone 注册,会导致网络延时较大,出现拉取注册表,心跳超时等问题。

对于 服务调用,要保证优先调用同一个 zone 内的服务,当无法找到同 zone 或者 同 zone 内的服务不可用时,才会转向调用其他 zone 里的服务。

本文提到的只是网关到微服务之间的调用,实际项目中,微服务还会调用其他第三方的服务,也要同时考虑到跨机房调用的问题,尽量都让各服务之间在同机房调用,减少网络延时,提高服务的稳定性。

陀螺仪与加速度计的姿态融合——互补滤波 本篇文章我们来讲讲如何将陀螺仪和加速度计的数据结合起来,获取更准确的姿态数据,使用的是互补滤波的方法。 阅读详情

相关推荐

Unity 调用安卓内部安装apk

一、申请权限 应用内安装其他应用的权限属于特殊权限,需要在特殊申请。 Uri packageURI = Uri.parse("package:" + mContext.getPackageName()); Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI); startA...

BDDNH的博客 1244

记Eureka和Gateway跨服务器使用的小坑

搭建Eureka和Gateway服务发现和网关时。 本地服务和本地网关使用的一直很优秀。 但使用这套体系的基本原则是多Eureka和Gateway集群分布。所以我在一次单节点使用时想发微服务发布到另一台服务器上 利用网关进行路由。 这是我的注册到Eureka的配置文件 其中打码处均是Eureka和Gateway的公网IP地址和端口 然后启动微服务,发现服务已经成功注册到Eureka...

a1234012340a的博客 4973

初识Renode

1. 简介 Renode是Antmicro公司发布的一个开发框架,使得开发人员通过模拟物理硬件系统(包括CPU、外围设备、传感器、环境以及节点之间的有线或无线介质),加速物联网和嵌入式系统的开发。它可在PC上通过软件对嵌入式设备进行模拟,可模拟Cortex-M、Cortex-A、RISC-V和其他CPU,并可模拟外设以及各种通信总线和接口。其指令模拟器使用C语言开发,外设模拟器使用C#语言开发,测试及输出层面的内容则用python编写。 Renode官网:Renodehttps://renode.io/

牧羊女 5295

liunx 解压多个zip,并递归提取文件夹及子文件夹内文件移动到目标文件夹下

解压文件 for z in *.zip; do unzip $z; done 提取文件并移动 find ./ -type f -exec mv {} ./ \; find 查找 ./ 当前目录 -type f 文件 mv 移动 {} 所有找到的文件 ./ 待移动到的目标位置 \ 结束 ...

qq_37946291的博客 495

K210开发板学习笔记(三)——STM32+K210+SD卡实现人脸识别(完整K210代码)

更新日记:2022年4月26日 更新了串口通信部分的内容,本文写的略为粗糙,恐有不当之处,希望大家不吝赐教。 人脸识别 一、MaixPy IDE开发 参考博主晨少hc的博文(https://blog.youkuaiyun.com/HuangChen666/article/details/113995079)来实现人脸识别功能,我用的硬件是亚博智能的K210开发板,在配置工程中有几步和这个博主的不一样,需要注意。 所需要的文件有:模型文件),脚本文件,ide需要的bin文件...

Embedded learner的博客 4万+

antv x6 沿边图标循环动画实现

2.使用transition给边设置动画,利用complte方法实现循环动画。实现效果,如下图,边上存在两个图标,要求图标延边一直循环动画。1.注册一个自定义边,边上定义两个图标,并设置其初始位置。

lingliu0824的博客 3366

关于nacos注册中心跨地域机房问题

公司现有内网ip段地址 nacos 当个注册中心,应业务需要,需要在其他的地区(跨地区,比如湖南以及深圳、浙江 建立naocos 实现 相互发现何注册)请问如何在nacos 跨物理机房 地区 、 IP地址情况下进行通讯,应为跨不同物理机房的IP地址网段是不相同的,那么他下面挂载的服务能否进行通讯了。已知在官方有一个dns寻址的这么个东西,但是不知道他到底是如何进行通讯的。...

u013132340的博客 1431

ShardingSphere-jdbc 5.5.0 + spring boot 基础配置 - 实战篇

shardingsphere 5.5.0移除了sm4算法,自己加上即可。增加spi扩展org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm增加以下代码:SM4算法代码/***/static {@Getter@Overrideif (!

qq_21903999的博客 4747

跨机房服务调用

runTimeAgain 1936

【学习系列】SAP RAP 17:RAP应用部署集成至Fiori Launchpad 【S4HC Public Edition】

本文详细介绍了在SAP S/4HANA Cloud环境中部署RAP应用集成到Fiori Launchpad的两种方法:使用BAS(SAP Business Application Studio)和VSCode。主要步骤包括:1)在BTP中配置Destination连接ES环境;2)设置信任关系;3)创建BAS开发空间;4)通过Fiori应用生成器部署RAP应用;5)创建IAM App、Business Catalog和Business Role;6)配置Launchpad Space和Pages。文章还提供

DeveloperMrMeng的博客 968

【基于 CasADi 的欠驱动无人船实时非线性模型预测控制(NMPC)实现与避碰仿真】MATLAB开源复现

本文提出了一种基于CasADi的欠驱动无人船实时非线性模型预测控制(NMPC)方法,实现了轨迹跟踪与避碰功能。研究采用三自由度USV动力学模型,集成静态与动态障碍物避碰约束,并满足国际海上避碰规则(COLREGS)。通过CasADi+IPOPT数值优化求解,实现了毫秒级实时控制。文章详细介绍了USV建模、NMPC控制器设计、避碰约束建模以及CasADi实现流程,包括核心求解流程和轨迹生成方法。实验结果表明,该方法能有效实现复杂环境下的轨迹跟踪与避碰功能。

vor234的博客 1398

SpringCloud微服务架构实战:高并发微服务架构设计

高并发微服务架构设计 作为一个 IT 从业人员,我们经常会碰到类似于下面的一些问题: 单个项目巨大而沉重,难以维护。 系统稳定性得不到更有效的保证。 怎样才能持续地提升系统的性能。 怎样才能快速地响应需求的变更,并且系统更新不会引起任何抖动。 怎样才能更好地适应系统规模化的扩张。 针对上面这些问题,我们无时无刻不在努力地进行各种各样的尝试和探索,寻求更好的解决方案,或者使用更先进的技术。 目前来看,在互联网环境之中产生的微服务架构设计是一个比较理想的解决方案。 微服务总体架构设计 一个使用

m0_63437643的博客 1703

展锐平台wifi连接性问题解决方案

对于断开连接的问题,需要从kernel log中确认下,是上 层主动发起的断开(会下发disconnect的命令),还是CP侧上报的断开事件。同学,别退出呀,我可是全网最牛逼的 WIFI/BT/GPS/NFC分析博主,我写了上百篇文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。1、出现wifi连接正常,但无法上网问题,首先确认其他手机是否可以正常上网,排除网络自身问题;3 路由器配置问题,出现过一个案例,恢复出场设置问题就解决了,具体根因。

手机-手表蓝牙开发工程师的博客 2023

基于SpringCloud了解微服务

接下来细说微服务架构设计中不得不知的十大要点。 设计要点一:负载均衡 + API 网关 在实施微服务的过程中,不免要面临服务的聚合与拆分。 当后端服务的拆分相对比较频繁的时候,作为手机 App 来讲,往往需要一个统一的入口,将不同的请求路由到不同的服务,无论后面如何拆分与聚合,对于手机端来讲都是透明的。 有了 API 网关以后,简单的数据聚合可以在网关层完成,这样就不用在手机 Ap...

xinyuan的专栏 254

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SpringCloud 常用组件梳理

本文梳理了SpringCloud微服务架构中的核心组件及其功能:1)注册中心(Eureka/Nacos)用于服务发现;2)配置中心(Apollo/Nacos)实现动态配置管理;3)远程调用(OpenFeign)集成负载均衡(Ribbon/LoadBalancer);4)API网关(Gateway)提供路由、断言和过滤功能;5)熔断机制保障服务容错性;6)限流降级(Sentinel)防止系统过载;7)分布式追踪实现全链路监控。文章还针对不同场景推荐了负载均衡算法,并强调了组件随版本迭代的重要变化。

杨杨杨~~的博客 901

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

微服务架构演进与SpringCloud生态实践指南

微服务架构作为分布式系统开发的主流范式,通过将应用拆分为小型独立服务提升系统弹性与可维护性。其核心原理包括服务注册发现、负载均衡和配置中心等机制,SpringCloud生态为此提供标准化实现。在技术价值层面,微服务架构支持独立部署、技术异构和弹性扩展,特别适合复杂业务系统的快速迭代。典型应用场景包括电商平台、金融系统和物联网平台等分布式环境。本文重点解析SpringCloud中的Eureka服务发现、Ribbon负载均衡以及Nacos配置中心等核心组件,结合注册中心高可用配置、客户端负载均衡策略选择等工程实

weixin_34130389的博客 339

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VIPKID面试官:说说SpringCloud微服务架构在互联网的优势!

高并发微服务架构设计 作为一个 IT 从业人员,我们经常会碰到类似于下面的一些问题: 单个项目巨大而沉重,难以维护。 系统稳定性得不到更有效的保证。 怎样才能持续地提升系统的性能。 怎样才能快速地响应需求的变更,并且系统更新不会引起任何抖动。 怎样才能更好地适应系统规模化的扩张。 针对上面这些问题,我们无时无刻不在努力地进行各种各样的尝试和探索,寻求更好的解决方案,或者使用更先进的技术。 目前来看,在互联网环境之中产生的微服务架构设计是一个比较理想的解决方案。 Java学习笔记共享地址:spring c

SQY0809的博客 722

springcloud微服务架构进阶pdf_SpringCloud微服务架构实战:高并发微服务架构设计...

高并发微服务架构设计作为一个 IT 从业人员,我们经常会碰到类似于下面的一些问题:单个项目巨大而沉重,难以维护。系统稳定性得不到更有效的保证。怎样才能持续地提升系统的性能。怎样才能快速地响应需求的变更,并且系统更新不会引起任何抖动。怎样才能更好地适应系统规模化的扩张。针对上面这些问题,我们无时无刻不在努力地进行各种各样的尝试和探索,寻求更好的解决方案,或者使用更先进的技术。目前来看,在互联网环境之...

weixin_39524439的博客 374

《微服务SpringCloud架构实践指南:从Nacos到Gateway的全面解析》

Nacos是阿里巴巴开源的动态服务发现、配置管理和服务管理平台,支持微服务架构中的服务注册、配置中心和服务治理。核心功能包括服务发现与注册、配置管理、动态DNS服务、健康监测等。安装方式包括本地部署和Docker部署,服务注册与发现通过引入依赖和配置Nacos地址实现。配置中心支持共享配置和热更新,通过bootstrap.yaml文件加载配置。OpenFeign实现服务间调用,支持连接池和拦截器。Gateway网关提供路由、过滤和断言功能,支持自定义过滤器和全局过滤器。整体实现了微服务架构中的服务管理、动态

yh云想的博客 1419

Spring Cloud 微服务调用超时?这 3 个配置(Ribbon + Feign)必须掌握

Ribbon 的重试机制主要通过ribbon.MaxAutoRetries(同一服务重试次数)和ribbon.MaxAutoRetriesNextServer(切换服务实例重试次数)控制,而 Feign 默认关闭重试,需通过feign.client.config.default.retryer=feign.Retryer.Default开启。假设单请求超时 3 秒,最多重试 2 次(含本身),则总耗时可能达到 9 秒,需确保上游服务(如网关)的超时设置大于此值,避免级联超时。

2509_93051135的博客 1174

微服务_SpringCloud微服务架构实战:高并发微服务架构设计

高并发微服务架构设计作为一个 IT 从业人员,我们经常会碰到类似于下面的一些问题:单个项目巨大而沉重,难以维护。系统稳定性得不到更有效的保证。怎样才能持续地提升系统的性能。怎样才能快速地响应需求的变更,并且系统更新不会引起任何抖动。怎样才能更好地适应系统规模化的扩张。针对上面这些问题,我们无时无刻不在努力地进行各种各样的尝试和探索,寻求更好的解决方案,或者使用更先进的技术。目前来看,在互联网环境之...

weixin_30920907的博客 705

微服务入门技术栈 知识总结笔记(SpringCloud + RabbitMQ + Docker + Redis + 搜索Elasticsearch + 分布式)

本文系统介绍了微服务架构的核心概念与SpringCloud技术栈,主要内容包括: 微服务架构演进、服务拆分与远程调用、注册中心、负载均衡Ribbon、配置管理、Feign声明式调用、网关Gateway等。全文涵盖微服务核心组件与技术要点,提供配置示例与优化建议,适用于SpringCloud微服务开发与架构设计参考。

2401_88612756的博客 491

SpringBoot 整合SpringCloud组件Eureka服务注册、服务发现 、网关

服务发现组件是微服务架构中非常关键的一个组件。SpringCloud 提供的服务发现有多种,如Eureka,Consul和Zookeeper等。本篇介绍的是Eureka的使用。 服务发现简介 服务提供者,服务消费者,服务发现组件这三者之间的关系大致如下: 服务提供者与服务消费者都需要向服务发现组件进行注册,服务消费者从服务发现组件中获取服务提供者的信息(如名称、地址、端口等)。在服务发现组件注册的微服务需要通过心跳机制来保持连接状态并更新注册信息,当服务发现组件长时间无法与某个微服务实例进行通信.

u014365523的博客 864
上一篇: Linux命令学习神器!命令看不懂直接给你解释!真香!
下一篇: 一文看懂 MySQL 高性能优化技巧实践
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值