Spring Cloud全解析:揭秘服务注册中心的魅力,轻松驾驭微服务架构

服务注册中心

在之前服务规模较小时,可以使用硬编码的方式来将服务地址写在代码中,通过编码的方式来实现服务的路由和负载均衡的问题,也可以使用硬件负载均衡设备(如F5)或者软件负载均衡(如nginx和lvs)等方式来进行处理。但微服务中服务很多,如果使用硬编码提供者的地址的话,管理起来不方便,而且可能会出现单点问题

服务注册与查询

为了避免单点故障,出现了注册中心,用来动态注册和获取服务信息,来统一进行管理服务名称和对应的服务器列表信息

服务提供者、服务消费者、注册中心关系

  • 微服务启动时,将自己的网络地址等信息注册到注册中心中,注册中心会存储这些信息
  • 服务消费者可以从注册中心中查询到服务提供者的网络地址,并使用该地址调用服务提供者的接口
  • 各个微服务与注册中心使用一定机制(如心跳)通信,如果注册中心长时间无法与微服务实例通信成功,则注销该实例
  • 微服务网络地址发生变更时,会重新注册到注册中心

服务提供者在启动的时候,将其提供的服务名称,服务器地址注册到服务注册中心,服务消费者通过服务注册中心来获得需要调用的服务的机器列表,通过相应的负载均衡算法,选取其中一台服务器进行调用,当服务器宕机或者下线的时候,相应的机器需要能够动态的从服务配置中心里面移除,并通知相应的服务消费者,否则服务消费者就有可能调用到已经失效的服务而发生错误。

在这个过程中,服务消费者只有在第一次调用服务的时候需要查询服务注册中心,然后将查询到的信息缓存到本地,后面的调用直接使用本地缓存的服务地址列表信息,而不需要重新发起请求到服务注册中心去获取相应的服务地址列表,直到服务的地址列表有变更(机器上线或者下线),这种无中心化的结构,解决了之前负载均衡设备所导致的单点故障的问题,并且大大减轻了服务注册中心的压力。

功能

  • 服务注册表,记录各个微服务的信息,对这些信息进行查询和管理
  • 服务注册与发现,服务注册是指微服务启动时,将自己的信息注册到注册中心;服务发现是指查询可用微服务列表及其网络地址
  • 服务检查,使用一定机制检测已注册的服务,如果长时间无法访问,则将该实例移除

实现

常见的用来作为注册中心的有Eureka、Consul、zookeeper等

zhhll.icu/2021/框架/微服务...

相关推荐
追风筝的人er6 天前
企业管理系统如何实现自定义首页与千人千面?RuoYi Office 给出了完整方案
vue.js·spring boot·spring cloud
三水不滴7 天前
利用SpringCloud Gateway 重试 + 降级解决第三方接口频繁超时问题,提升性能
经验分享·笔记·后端·spring·spring cloud·gateway
知识即是力量ol7 天前
微服务架构:从入门到进阶完全指南
java·spring cloud·微服务·nacos·架构·gateway·feign
Java水解7 天前
【Spring Cloud】优雅实现远程调用-OpenFeign
后端·spring cloud
Remember_9938 天前
SpringCloud:Nacos注册中心
java·开发语言·后端·算法·spring·spring cloud·list
J_liaty8 天前
Spring Cloud 微服务面试高频题
spring cloud·微服务·面试
西门吹雪分身8 天前
SpringCloudGateway过滤器之RequestRateLimiterGatewayFilterFactory
java·redis·spring cloud
vx_Biye_Design8 天前
【关注可免费领取源码】云计算及其应用网络教学系统--毕设附源码35183
java·spring·spring cloud·servlet·eclipse·云计算·课程设计
Coder_Boy_9 天前
Java后端核心技术体系全解析(个人总结)
java·开发语言·spring boot·分布式·spring cloud·中间件
悠闲蜗牛�9 天前
Kubernetes从零到集群:本地Minikube环境搭建与Spring Cloud微服务运维实战
spring cloud·微服务·kubernetes