Eureka服务注册与发现

GitHub地址https://github.com/yudiandemingzi/spring-cloud-study

一、Eureka概述

1、Eureka特点

(1) Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。

(2) Eureka 主管服务注册与发现,在微服务中,以后了这两者,只需要使用服务的标识符(==就是那个在每个服务的yml文件中取得服务名称==),

就可以访问到服务,不需要修改服务调用的配置文件。

(3) Eureka遵循AP原则(高可用,分区容错性),因为使用了自我保护机制所以保证了高可用。

2、Eureka两大组件

两大组件:Eureka Server(提供注册服务)、 Eureka Client(JAVA客户端,负责发送心跳)

系统中的其他微服务使用Eureka客户端连接到Eureka服务端维持心跳连接(即注册)。SpringCloud的其他模块可以通过Eureka Server 来发现系统中的微服务并加以调用

3、Eureka三大角色

Eureka Server:提供服务注册和发现

Service Provider:服务提供方,将自身服务注册到Eureka,从而使服务消费方能够找到

Service Consumer:服务消费方,从Eureka获取注册服务列表,从而能够消费服务。

二、Eureka Server服务注册中心

1、pom.xml

复制代码
<!--注册服务中心的jar要多个-server-->
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
  </dependency>

2、application.yml

复制代码
server:
  port: 7001
eureka:
  instance:
    hostname: localhost
  client:
  #声明自己是个服务端
    registerWithEureka: false    #false表示不向注册中心注册自己
    fetchRegistry: false         #false表示自己就是注册中心,职责是维护实例,不参加检索
    serviceUrl:                  #设置eureka server的交互地址,即对外暴露的地址
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

3、启动类

复制代码
//注意:要在类前加@EnableEurekaServer标注
@SpringBootApplication
@EnableEurekaServer
public class Eureka7001_APP {
    public static void main(String[] args) {
        SpringApplication.run(Eureka7001_APP.class,args);
    }
}

运行结果:输入:http://localhost:7001/

三、Service Provider服务提供方

假设这个商品微服务。

1、pom.xml

复制代码
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

2、application.yml

复制代码
server:
  port: 8001
#指定注册中心地址
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:7001/eureka/
#服务的名称
spring:
  application:
    name: product-service

3、启动类

复制代码
@SpringBootApplication
public class ProductApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProductApplication.class, args);
    }
}

4、启动后查看服务注册中心

发现在服务注册中心已经注册了一个服务

5、换端口号再启动一个

6、在看服务中心

这就是搭建了商品微服务集群。

四、Service Consumer服务消费方

其实服务方和消费在配置时候没有任何区别,它们都属于Eureka Client组件。只是涉及服务间的调用,所以就把被调方称为提供方,调用方称为消费方。就好比订单微服务,

订单服务肯定需要去调商品微服务,所以这个订单微服务对于商品来讲可以理解服务提供方。一个微服务即可以是服务方也同时是提供方。

1、pom.xml

复制代码
    <!--这个对于每个不是注册中心的微服务都要添加-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

2、application.yml

复制代码
server:
  port: 9001

#指定注册中心地址
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:7001/eureka/

#服务的名称
spring:
  application:
    name: order-service

3、启动类

复制代码
@SpringBootApplication
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
}

4、查看注册中心

发现订单微服务也成功注册到注册中心

相关推荐
春天花会开13133 分钟前
Supabase 自部署 Edge Functions 超时从 60s 延长到 360s 完整复盘
运维·云原生
ysu_03149 小时前
【2026】K8s GPU调度空占怎么解?Kueue与Volcano Gang配置
云原生·kubernetes·gpu算力·volcano·ai基础设施·kueue·gang scheduling
天天喝旺仔1 天前
分布式服务容错实战:用 Sentinel 实现限流、熔断与降级
分布式·微服务·云原生·sentinel
逐流人1 天前
Containerd容器管理实战:从架构原理到nerdctlcrictl工具链
linux·运维·云原生·容器·云计算·containerd
运维开发王义杰2 天前
跨项目直连数据库:是架构反模式,还是现实的工程妥协?
云原生
宋均浩2 天前
告警规则 243 砍到 27:Prometheus 降噪实战,日均打扰 47 次 → 3 次
云原生·监控·devops
运维老郭2 天前
别再让 Liveness Probe 背锅了:initialDelaySeconds 和 failureThreshold 的坑,一次讲透
云原生
容器魔方2 天前
基于 KubeEdge 为云边协同 AI 流数据分析提供基础设施
大数据·云原生·容器·开源·边缘计算
weixin_435247062 天前
微服务开发规范模版
微服务·云原生
rustfs3 天前
MinIO 国产开源平替正式 GA
分布式·docker·云原生·rust