【SpringCloud微服务实战01】Eureka 注册中心

33 篇文章 0 订阅
  • 前言

在 Eureka 架构中,微服务角色有两类:

  •  EurekaServer :服务端,注册中心

                记录服务信息
                心跳监控

  • EurekaClient :客户端

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

架构图:

常见问题:

  • 消费者该如何获取服务提供者具体信息?

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

  • 如果有多个服务提供者,消费者该如何选择?

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

  • 消费者如何感知服务提供者健康状态?

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


 

一、Eureka服务端搭建

1. 创建项目,引入 spring-cloud-starter-netflix-eureka-server 的依赖:

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

2. 编写启动类,添加 @EnableEurekaServer 注解

3. 添加 application.yml 文件,编写下面的配置:

server:
  port: 10086
spring:
  application:
    name: eurekaserver
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka/

启动后访问管理页面http://127.0.0.1:10086

二、Eureka服务注册 

1. 分别 user-service 和 order-service 项目中引入 spring-cloud-starter-netflix-eureka-client 的依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2. 在 application.yml 文件,分别编写下面的配置:

spring:
  application:
    name: userservice #orderservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka/

这里还可以通过复制userService配置 修改VM:-Dserver.port=8082,模拟一个服务启动多个实例:

三、Eureka服务发现(服务拉取)

下面以在 order-service 服务中拉取 user-service中的查询用户信息接口为例:

1、用服务提供者的 服务名称 远程调用服务接口:

String url = "http://userservice/user/" + order.getUserId();

2、给 RestTemplate 添加 @LoadBalanced 注解(实现多示例负载均衡)

@Bean
@LoadBalanced
public RestTemplate restTemplate() {
    return new RestTemplate();
} 

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

李维山

帮到你就行 不差钱

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

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

打赏作者

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

抵扣说明:

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

余额充值