2024.5.7 关于 SpringCloud —— Eureka 的基本认知

目录

引言

提供者与消费者

服务调用出现的问题

Eureka 的作用

搭建 EurekaServer

服务注册

服务发现


引言

提供者与消费者

  • 服务提供者:一次业务中,被其他微服务调用的服务(提供接口给其他微服务)
  • 服务消费者:一次业务中,调用其它微服务的服务(调用其他微服务提供的接口)

问题:

  • 服务A 调用服务B,服务B调用服务C,那么服务B是什么角色?

回答:

  • 一个服务既可以是服务提供者 也可以是服务消费者,需根据其具体业务场景来分析判定

服务调用出现的问题

  • 问题一:服务消费者该如何获取服务提供的地址信息?
  • 问题二:如果有多个服务提供者,消费者该如何选择?
  • 问题三:消费者如何得知服务提供者的健康状态?

Eureka 的作用

  • 在 Eureka 框架中,其微服务角色一般有两种(EurekaServer 和 EurekaClient)

EurekaServer

  • 服务端,注册中心
  • 用于记录服务信息并进行心跳监控

EurekaClient

  • 包含 Provider(服务提供者)与 Consumer(服务消费者)
  • Provider:注册自己的信息到 EurekaServer
  • Consumer:根据服务名称从 EurekaServer 中拉取服务列表,同时基于服务列表进行负载均衡,选中一个微服务后再发起远程调用

问题一回答:

  • 服务提供者启动时向 Eureka 注册自己的信息
  • Eureka 保存这些信息
  • 消费者根据服务名称向 Eureka 拉取提供者信息

问题二回答:

  • 服务消费者利用负载均衡算法,从服务列表中挑选一个

问题三回答:

  • 服务提供者会每隔 30 秒向 EurekaServer 发送心跳请求,报告健康状态
  • Eureka 会更新记录服务列表信息,心跳不正常会被剔除
  • 消费者就可以拉取到最新的信息

搭建 EurekaServer

  •  创建一个 maven 项目,引入对应依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  • 编写启动类,添加 @EnableEurekaServer 注解
package cn.itcast.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer // 自动装配的开关
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class,args);
    }
}
  • 添加 application.yml 文件,编写下方配置
server:
  port: 10086  # 服务端口
spring:
  application:
    name: eurekaservice  # 服务名称
eureka:
  client:
    service-url: # eureka 的地址信息
      defaultZone: http://127.0.0.1:10086/eureka/
  • 启动 EurekaApplication 并点击查看 Eurka 管理平台

服务注册

  • 此处我们将注册 user-service 和 order-service

  • 在 user-service 和 order-service 项目中,引入对应依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  • 在 user-service 的 application.yml 文件,编写下方配置
spring:
  application:
    name: userservice  # 服务名称
eureka:
  client:
    service-url: # eureka 的地址信息
      defaultZone: http://127.0.0.1:10086/eureka/
  • 在 order-service  的 application.yml 文件,编写下方配置
spring:
  application:
    name: orderservice  # 服务名称
eureka:
  client:
    service-url: # eureka 的地址信息
      defaultZone: http://127.0.0.1:10086/eureka/
  • 启动 UserApplication 和 OrderApplication,查看 Eurka 管理平台

  • 此处我们可以将 user-service 多次启动,模拟多实例部署
  • 但是为了避免端口冲突,我们仍需修改一下端口设置

  • 重新启动 UserApplication 并查看 Eurka 管理平台

服务发现

  •  服务拉取是基于服务名称获取服务列表,然后在对服务列表做负载均衡

  • 修改 OrderService 的代码,修改访问的 url 路径,用服务名代替 ip 和端口

  • 在启动类 OrderApplication 的 restTemplate() 方法上添加负载均衡注解

  • 重新启动 OrderApplication 并进行相应验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茂大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值