Day03-初识Eureka

Eureka-提供者与消费者

  • 服务提供者:一次业务中,被其他微服务调用的服务。(提供接口给其他微服务)
  • 服务消费者:一次业务中,调用其他微服务的服务。(调用其他微服务提供的接口)
  • 提供者与消费者角色是相对的
  • 一个服务可以同时是服务提供者和服务消费者

提供者与消费者
思考一个问题:
服务A调用服务B,服务B调用服务C,那么B服务是什么角色?
答:提供者与消费者都是相对而言的,B服务相对A服务来讲是提供者,相对C服务是消费者

Eureka-原理分析

Eureka的作用
Eureka的作用:

  • 消费者该如何获取提供者具体信息?
    • 服务提供者启动时向Eureka 注册自己的信息
    • Eureka保存这些信息
    • 消费者提供服务名称向Eureka拉取提供者信息
  • 如果有多个服务提供者,消费者该如何选择?
    • 消费服务者利用负载均衡算法,从服务列表中挑选一个
  • 消费者如何感知服务提供者的健康状态?
    • 服务提供者会每个30秒向EurekaService发送心跳请求,报告健康状态
    • Eureka会更新记录列表信息,心跳不正常会被剔除
    • 消费者就可以拉取到最新的信息

Eureka 整合Ribbon实现负载均衡
Eureka 整合Ribbon实现负载均衡
Eureka总结:

  • EurekaServer:服务端,注册中心
    • 记录服务记录
    • 心跳监控
  • EurekaClient:客户端
    • provider:服务提供者,列入案列中的 user-service
      • 注册自己的信息到EurekaServer
      • 每隔30秒向EurekaServer发送心跳
    • consumer:服务消费者,例如案列中的 order-service
      • 根据服务名称EurekaServer 拉取服务列表
      • 基于服务列表做负载均衡,选中一个微服务后发起远程调用

搭建Eureka服务

1、创建eureka-server模块,引入spring-cloud-starter-netflix-eureka-server的依赖

在这里插入图片描述

<!-- eureka 服务端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

2、编写启动类,添加@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);
    }
}

3、添加application.yml文件,编写配置

server:
  port: 10086 #服务端口
spring:
  application:
    name: eurekaserver #eureka服务名
eureka:
  client:
    service-url:  #eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka #如果有多个以逗号隔开

正常启动成功 http://127.0.0.1:10086/ 会看到如下界面
在这里插入图片描述

Eureka-服务注册

注册user-service

  1. 在user-service项目中引入spring-cloud-starter-netflix-eureka-client依赖
        <!--eureka客户端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
  1. 在application.yml文件中假如如下配置
spring:
  application:
    name: userserver #userserver服务名
eureka:
  client:
    service-url:  #eureka的地址信息
      defaultZone: http://localhost:10086/eureka #如果有多个以逗号隔开

同样在order-service中添加配置,注意application.yml中服务名要写成要写成orderserver,跟userserver区分开
多次启动user-service
重新启动user-service 会发现userserver是集群
在这里插入图片描述

Eureka-服务发现

在order-service 完成服务拉取
服务拉取是基于服务名称获取服务列表,然后在对服务列表做负载均衡

  1. 修改OrderService的代码,修改访问url路径,用服务名代替ip、端口
// 2.1请求 url,这里的服务名userserver为application.yml文件中配置的服务名
String url = "http://userserver/user/" + order.getUserId();
  1. 在order-service项目的启动类OrderApplication中的RestTemplate添加负载均衡注解@LoadBalanced

    // Spring 提供 RestTemple 用于发送 http 请求
    @Bean
    @LoadBalanced  
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

总结:

  • 搭建EurekaServer
    • 引入 spring-cloud-starter-netflix-eureka-server 依赖
    • 在启动类上添加 @EnableEurekaServer 注解
    • 在application.yml中配置eureka地址
  • 服务注册
    • 引入eureka-client依赖
    • 在application.yml中配置eureka地址
    • 无论是消费者还是提供者,引入eureka-client依赖并且知道eureka地址后,都可以完成服务注册
  • 服务发现
    • 引入eureka-client依赖
    • 在application.yml中配置eureka地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值