Day03-初识Eureka

Day03-初识Eureka,第1张

Day03-初识Eureka

初识Eureka
    • Eureka-提供者与消费者
    • Eureka-原理分析
    • 搭建Eureka服务
    • Eureka-服务注册
    • Eureka-服务发现

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


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

Eureka-原理分析


Eureka的作用:

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

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的依赖


        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        

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依赖
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
  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 会发现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地址

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4692445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-07
下一篇 2022-11-07

发表评论

登录后才能评论

评论列表(0条)

保存