0


Eureka注册中心

一、Eureka结构与作用

在这里插入图片描述

1、Eureka注册中心功能:

服务注册与服务发现

2、提供者与消费者

在服务调用关系中,会有两个不同的角色:

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

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

服务既可以是服务提供者,也可以是服务消费者。

3、注册中心实例

  • user-service服务实例启动后,将自己的信息注册到eureka-server
  • eureka-server保存服务名称到服务实例地址列表的映射关系
  • order-service根据服务名称,拉取实例地址列表。
  • order-service从实例列表中利用负载均衡算法选中一个实例地址,向该实例地址发起远程调用
  • user-service会每隔一段时间(默认30秒)向eureka-server发起请求,报告自己状态,称为心跳
  • 当超过一定时间没有发送心跳时,eureka-server会认为微服务实例故障,将该实例从服务列表中剔除,order-service拉取服务时,就能将故障实例排除了

二、Eureka使用

1、搭建eureka-server

eureka-server: eureka注册中心的服务端,自身也是个独立的微服务

  • 创建项目

在cloud-demo父目录下创建eureka-server子目录

  • 引入依赖

在eureka-server的pom文件中

<dependencies><!--eureka--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency></dependencies>
  • 在启动类添加eureka自动装配开关注解
@EnableEurekaServer//eureka自动装配开关@SpringBootApplicationpublicclassEurekaApplication{publicstaticvoidmain(String[] args){SpringApplication.run(EurekaApplication.class,args);}}
  • 在yml中填写配置信息
#服务端口号server:port:10086#服务器名称spring:application:name: eurekaserver

#服务地址eureka:client:service-url:defaultZone: http://localhost:10086/eureka

启动测试:

访问:http://localhost:10086/

在这里插入图片描述

2、服务注册

将各个服务模块注册到eureka注册中心

  • 引入依赖
<!--eureka-client--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>
  • 配置文件
#服务器名称spring:application:name: orderservice
    
#服务地址eureka:client:service-url:defaultZone: http://localhost:10086/eureka   #eureka-server端口号/eureka 

启动多实例(启动两个user-service实例)

  • 右键原服务实例在这里插入图片描述
  • 填写名称及实例端口号在这里插入图片描述
  • eureka注册中心效果

在这里插入图片描述

3、服务发现

在order-service服务中从eureka-server注册中心取出注册好的user-service服务,并且实现负载均衡

  • 在order-service的启动类中,restTemplate上添加@LoadBalanced负载均衡注解
@SpringBootApplicationpublicclassOrderApplication{publicstaticvoidmain(String[] args){SpringApplication.run(OrderApplication.class, args);}/**
     * 将RestTemplate注入Spring容器
     * @return
     */@Bean@LoadBalanced//负载均衡publicRestTemplaterestTemplate(){returnnewRestTemplate();}}
  • 在order-service的service中,获取url时可以使用服务名代替 端口号+ip
// 2.获取urlString url="http://userservice/user/"+order.getUserId();

本文转载自: https://blog.csdn.net/Odinpeng/article/details/125716132
版权归原作者 Odinpeng 所有, 如有侵权,请联系我们删除。

“Eureka注册中心”的评论:

还没有评论