第二节:使用Eureka注册发现

1、服务消费者和提供者

提供者:提供服务的一方

消费者:调用服务的一方

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

2、Eureka注册中心

2.1、Eureka的作用

在这里插入图片描述

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

    服务提供者启动时向eureka注册自己的信息

    eureka保存这些信息

    消费者根据服务名称向eureka拉取提供者信息

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

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

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

    服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态

    eureka会更新记录服务列表信息,心跳不正常会被剔除

    消费者就可以拉取到最新的信息

3、EurekaServer搭建

3.1创建模块eureka-server

在这里插入图片描述

3.2 添加依赖
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
3.3 添加启动类和配置文件
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}
server:
    port: 10086 #服务端口
spring:
    application:
        name: eureka-server #eureka的服务名称
eureka:
    client:
        service-url: #eureaka的地址信息
          defaultZone: http://127.0.0.1:10086/eureka

spring.application.name是eureka作为一个spring项目有自己的名字eureka-server。

eureka.client是当前服务作为一个客户端,把自己也注册到eureka-server上面。如果有多个eureka-server可以互相发现。

3.3 访问

http://localhost:10086/
在这里插入图片描述

可以看到eureka-server自己也注册到了eureka中。

4、服务注册到Eureka

4.1 添加依赖和配置
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

注意这里添加的是client

配置添加的和之前一样,作为客户端指定服务端的地址。

eureka:
  client:
    service-url: #eureaka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka
4.2 运行

运行后可以看到新加了2个服务。如果没有看到,检查是不是pom添加依赖后没点加载。
在这里插入图片描述

我们可以右键启动项,复制一个配置,设置不同的端口和名称,用来启动2次。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、服务发现

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

我们尝试在order-service服务中获取服务列表。

5.1新增http请求配置

这里的@LoadBalanced是为了在一个服务有多个节点的时候,做负载均衡。

@Configuration
public class RestTmplateConfiguration {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}
5.2 请求代码
    @Resource
    private RestTemplate restTemplate;

    public Order queryOrderById(Long orderId) {
        Order order = orderMapper.findById(orderId);
        String url = "http://user-service/user/" + order.getUserId();
        User user = restTemplate.getForObject(url, User.class);
        order.setUser(user);
        return order;
    }
5.3 启动服务

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

七号公园的忧伤

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值