Spring-Cloud中服务发现是什么?干什么的?怎么用?

简介: Spring-Cloud中服务发现是什么?干什么的?怎么用?

🐓 是什么

Spring Cloud通过EurekaConsul服务注册与发现组件来实现微服务间的相互感知。服务提供者将自己的服务信息注册到注册中心,服务消费者从注册中心获取服务提供者的信息,从而进行服务调用。

36c43b4b76f045dc835984f033642ca8.png


🐓 干什么

在Spring Cloud中,服务发现是一种机制,用于自动检测和定位分布式系统中的服务实例。它允许服务实例在启动时向服务注册中心注册自己的网络地址,并且服务消费者可以从服务注册中心查询和获取所需服务实例的网络地址。这样,服务消费者就可以通过服务发现机制动态地找到并调用服务提供者,而无需硬编码服务提供者的网络地址。

通过使用服务发现机制,Spring Cloud应用程序可以更加灵活和可靠地处理分布式系统中的服务调用和依赖关系。它可以有效地解决服务实例的动态变化、网络地址的变更以及服务的可用性和健康状态等问题,提高系统的可扩展性、容错性和可维护性。

服务发现的主要功能包括服务的注册、查询、注销以及服务健康检查。当服务提供者启动并注册到服务注册中心时,它的网络地址和服务信息将被存储在注册中心中。服务消费者可以通过查询注册中心来获取所需服务的网络地址列表,并根据负载均衡策略选择一个合适的服务实例进行调用。同时,服务注册中心还会定期检查已注册的服务实例的健康状况,如果某个服务实例出现故障或不可达,注册中心会将其标记为不健康并从服务列表中移除。


🐓 怎么用

Eureka(服务注册和发现)的使用案例

git代码仓库:springCloud-eureka: Eureka(服务注册和发现)的使用案例

93e0aaccbcab494992c40344243d14e0.png

总体架构图

62242ac51774408b9051f4f9ce92de1d.png

从组件功能看:

黄色注册中心集群,分别部署在北京、天津、青岛机房;

红色服务提供者,分别部署北京和青岛机房;

淡绿色服务消费者,分别部署在北京和天津机房;

从机房分布看:

北京机房部署了注册中心、服务提供者和服务消费者;

天津机房部署了注册中心和服务消费者;

青岛机房部署了注册中心和服务提供者;


手动搭建

搭建服务注册中心(如Eureka Server),用于服务的注册和发现。

新建项目,选择Spring Initializr,JDK 1.8,选择默认的https://start.spring.io。

编辑Group和Artifact。

81c138070c284e28becd2e099c5247cd.png

选择依赖,在Spring Cloud Discovery中选择Eureka Server

项目命名,完成创建。

533831d0d9204563a98a1e05644683c0.png

修改pom.xml文件,添加Eureka Server的依赖。

修改启动类,添加@EnableEurekaServer注解。

ccd2e2986e3b449ca648b4b2da9feebc.png


修改配置文件application.yml或application.properties,配置Eureka Server的相关参数,如服务端口、服务名称等。

server:  
  port: 8761 # 指定服务端口  
spring:  
  application:  
    name: eureka-server # 指定服务名称  
eureka:  
  client:  
    service-url:  
      defaultZone: http://localhost:8761/eureka/ # 指定服务注册中心的地址  
  server:  
    enable-self-preservation: false # 禁用自我保护模式(仅建议开发环境使用)


注意,在配置文件中,defaultZone的值需要设置为Eureka Server的地址,如果是单机环境,可以设置为localhost。如果是集群环境,需要设置为其他Eureka Server的地址。


最后启动项目,访问http://localhost:8761/,即可看到Eureka Server的管理界面。

相关文章
|
1月前
|
负载均衡 网络协议 Java
构建高效可扩展的微服务架构:利用Spring Cloud实现服务发现与负载均衡
本文将探讨如何利用Spring Cloud技术实现微服务架构中的服务发现与负载均衡,通过注册中心来管理服务的注册与发现,并通过负载均衡策略实现请求的分发,从而构建高效可扩展的微服务系统。
|
1月前
|
Java Maven Nacos
Spring Cloud Eureka 服务注册和服务发现超详细(附加--源码实现案例--及实现逻辑图)
Spring Cloud Eureka 服务注册和服务发现超详细(附加--源码实现案例--及实现逻辑图)
40 0
|
11月前
|
存储 缓存 API
四.SpringCloud源码剖析-Eureka Client服务发现
什么是服务发现?微服务启动,所有服务提供者会向EurekaServer注册自己,从而在EurekaServer形成一个服务注册表,而消费者服务会定时从EurekaServer拉取服务注册表并缓存到本地,这个流程叫服务注册。当消费者服务向提供者服务发起调用时就会从服务注册表中找到目标服务的通信地址发起访问,那么EurekaClient是怎么从EurekaServer拉取服务注册表的呢?前一章节我们研究了《[Eureak服务注册](https://blog.csdn.net/u014494148/article/details/106907911)》流程,这一章节我们来研究一下Eureak服务发现
四.SpringCloud源码剖析-Eureka Client服务发现
|
11月前
手把手教你搭建SpringCloud项目(六)Eureka实现服务发现
手把手教你搭建SpringCloud项目(六)Eureka实现服务发现
|
11月前
|
存储 缓存 网络架构
SpringCloud源码剖析-Eureka Client服务发现
我们可以看到 eurekaTransport.queryClient 得到一个EurekaHttpClient,使用的是其装饰器EurekaHttpClientDecorator.getApplications方法获取服务注册列表,这样的代码其实就是通过Rest方式去获取服务清单 最后通过 localRegionApps.set把服务存储到本地区域,然后调用AbstractJerseyEurekaHttpClient.getApplications获取所有的服务注册列表,跟踪一下源码
40 0
|
存储 缓存 负载均衡
Spring Cloud【Finchley】-02服务发现与服务注册Eureka + Eureka Server的搭建
Spring Cloud【Finchley】-02服务发现与服务注册Eureka + Eureka Server的搭建
79 0
|
域名解析 Kubernetes 负载均衡
Spring Cloud系列之Commons - 2. 服务发现 - 如何通过配置文件配置服务实例?(上)
Spring Cloud系列之Commons - 2. 服务发现 - 如何通过配置文件配置服务实例?(上)
Spring Cloud系列之Commons - 2. 服务发现 - 如何通过配置文件配置服务实例?(上)
SpringCloud学习(七):服务发现Discovery
如果我们想获得在eureka上注册的服务的信息,比如服务名称、端口号之类的信息,需要用到服务发现Discovery。
112 0
SpringCloud学习(七):服务发现Discovery
|
Java 微服务 Spring
Spring Cloud:第二章:eureka服务发现
Spring Cloud:第二章:eureka服务发现
|
Cloud Native 网络协议 Dubbo
SpringCloud:服务发现之如何搭建Nacos服务
Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
314 0
SpringCloud:服务发现之如何搭建Nacos服务