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自动装配开关
@SpringBootApplication
public class EurekaApplication {
    public static void main(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负载均衡注解
@SpringBootApplication
public class OrderApplication {

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

    /**
     * 将RestTemplate注入Spring容器
     * @return
     */
    @Bean
    @LoadBalanced //负载均衡
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

}
  • 在order-service的service中,获取url时可以使用服务名代替 端口号+ip
// 2.获取url
String url="http://userservice/user/"+order.getUserId();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值