微服务:Eureka原理实践:@EnableEurekaServer、@LoadBalanced

这篇具有很好参考价值的文章主要介绍了微服务:Eureka原理实践:@EnableEurekaServer、@LoadBalanced。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微服务:Eureka原理实践:@EnableEurekaServer、@LoadBalanced,深入SpringBoot框架,Spring Cloud组件,微服务,eureka,架构,springcloud,springboot,java-ee

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~

微服务:Eureka原理实践:@EnableEurekaServer、@LoadBalanced,深入SpringBoot框架,Spring Cloud组件,微服务,eureka,架构,springcloud,springboot,java-ee



一、Eureka架构概述

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

  • EurekaServer —— 服务端,注册中心。
    • 记录服务;
    • 心跳监控;
  • EurekaClient —— 客户端。
    • Provider:服务提供者。
      • 注册自己的信息到EurekaServer;
      • 每隔30秒向EurekaServer发送心跳请求;
    • Consumer:服务消费者。
      • 根据服务名称从EurekaServer拉取服务列表。
      • 基于服务列表做负载均衡,选中一个微服务后发起远程调用。



Eureka的作用

  • 服务消费者该如何获取服务提供者的具体信息?
    • 服务提供者会在启动时向Erueka注册自己的信息。
    • Erueka保存这些注册的信息。
    • 服务消费者根据服务名称,向Erueka拉取服务提供者的信息。

  • 如果有多个服务提供者,服务消费者该如何选择?
    • 服务消费者利用负载均衡算法,从服务列表中挑选一个。

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



三、搭建EurekaServer(服务端)


1.创建项目,引入依赖

创建项目,pom.xml文件中导入spring-cloud-starter-netflix-eureka-server依赖。

    <dependencies>
        <!--eureka服务端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

2.编写启动类

编写SpringBoot工程的启动类,添加上注解@EnableEurekaServer,以此开启Eureka服务。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer//重点,开启Eureka服务。
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}


3.添加配置信息

在SpringBoot工程的application.yml配置文件中,添加以下配置信息。

server:
  port: 10086 # 服务端口
spring:
  application:
    name: eurekaserver # eureka的服务名称
eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka

4.访问Eureka管理界面

浏览器访问我们上一步配置的eureka的地址信息链接:http://127.0.0.1:10086/eureka,就能打开spring Eureka管理界面,查看EurekaServer的一些基本信息。

微服务:Eureka原理实践:@EnableEurekaServer、@LoadBalanced,深入SpringBoot框架,Spring Cloud组件,微服务,eureka,架构,springcloud,springboot,java-ee




四、搭建EurekaClient(客户端)


1.信息注册:Provider(服务提供者)

①引入依赖

在服务提供者微服务的pom.xml文件中引入spring-cloud-starter-netflix-eureka-client依赖

        <!--eureka客户端依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

②添加配置信息

在服务提供者微服务的SpringBoot工程配置文件application.yml配置文件中,添加下述配置信息。

spring:
  application:  #eureka客户端 —— 服务提供者Provider的服务名称
    name: userservice

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

2.信息注册:Consumer(服务消费者)

①引入依赖

在服务消费者微服务的pom.xml文件中引入spring-cloud-starter-netflix-eureka-client依赖

        <!--eureka客户端依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

②添加配置信息

在服务消费者微服务的SpringBoot工程配置文件application.yml配置文件中,添加下述配置信息。

spring:
  application:  #eureka客户端 —— 服务消费者Consumer的服务名称
      name: orderservice

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

服务消费者与服务提供者的信息注册步骤基本一致…

即:无论是消费者还是提供者,只要引入eureka-client依赖,配置了eureka地址信息后,都可以完成注册。




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

  • 服务拉取:基于服务名称,获取服务列表,然后对服务列表做负载均衡,挑选一个服务进行使用。

  1. 修改服务消费者(order-service)的业务层组件,即:远程调用功能的组件代码中,修改访问的url地址,使用服务名来代替ip、端口
@Service
public class OrderService {

    @Autowired
    private OrderMapper orderMapper;

    @Autowired
    private RestTemplate restTemplate;

    public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        // 2.利用RestTemplate发起http请求,查询用户
        // 2.1.url路径
        //String url = "http://localhost:8081/user/" + order.getUserId();
        //使用服务提供者的服务名userservice代替ip、端口:
        String url = "http://userservice/user/" + order.getUserId();
        // 2.2.发送http请求,实现远程调用
        User user = restTemplate.getForObject(url, User.class);
        // 3.封装user到Order
        order.setUser(user);
        // 4.返回
        return order;
    }
}

重点在这里

        // 2.1.url路径
        //String url = "http://localhost:8081/user/" + order.getUserId();
        //使用服务提供者的服务名userservice代替ip、端口:
        String url = "http://userservice/user/" + order.getUserId();

  1. 在服务消费者(order-service)的启动类OrderApplication中,为Spring容器中的RestTemplate实例使用负载均衡算法,即:添加注解@LoadBalanced
@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
@EnableFeignClients(clients = UserClient.class,defaultConfiguration = DefaultFeignConfiguration.class)
public class OrderApplication {

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

    /**
     * 创建RestTemplate并注入Spring容器
     */
    @Bean
    @LoadBalanced//@LoadBalanced注解,实现负载均衡
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

}

  1. 完成上述两部,就能做到根据服务名称从EurekaServer拉取服务列表,并做负载均衡算法,从列表中挑选一个服务使用!



六、小结

  • @EnableEurekaServer —— 使用在SpringBoot工程启动类上,可开启Eureka服务。
  • @LoadBalanced —— 使用在@Bean方法注入的RestTemplate实例上,用于实现负载均衡算法。

微服务:Eureka原理实践:@EnableEurekaServer、@LoadBalanced,深入SpringBoot框架,Spring Cloud组件,微服务,eureka,架构,springcloud,springboot,java-ee

微服务:Eureka原理实践:@EnableEurekaServer、@LoadBalanced,深入SpringBoot框架,Spring Cloud组件,微服务,eureka,架构,springcloud,springboot,java-ee文章来源地址https://www.toymoban.com/news/detail-858066.html

到了这里,关于微服务:Eureka原理实践:@EnableEurekaServer、@LoadBalanced的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SpringCloud】深入探究Eureka:构建微服务架构中的高效服务发现系统

    👨‍💻博主主页:小尘要自信 在现代的软件开发中,微服务架构已经成为了一个热门的话题。微服务架构的一个关键组成部分就是服务发现。而在服务发现领域,Eureka无疑是一个备受推崇的解决方案。本篇博客将为您介绍什么是Eureka以及如何在您的微服务架构中应用它。

    2024年02月14日
    浏览(41)
  • 深入了解Spring Cloud的服务注册与发现组件Eureka

    摘要:Spring Cloud是一个基于Spring框架的开发工具包,可以帮助开发人员构建基于微服务架构的分布式系统。其中的核心组件之一是Eureka,它提供了一套强大的服务注册与发现功能。本文将深入介绍Spring Cloud中的Eureka组件,包括其背景、特性、工作原理以及与其他Spring Cloud组件

    2024年02月13日
    浏览(67)
  • Spring Cloud Eureka Service Registry 服务注册中心实践

    作者:禅与计算机程序设计艺术 在分布式微服务架构下,服务发现是保证应用可用的关键组件之一。在Spring Cloud体系中,服务发现中心通过Netflix Eureka实现。 本文将介绍Spring Cloud Eureka服务注册中心的机制、配置及使用方法,并通过实例对Eureka的功能及其局限性进行详细阐述

    2024年02月11日
    浏览(89)
  • 2-Spring cloud之Eureka快速剔除失效服务 以及 Eureka原理

    添加如下配置: 每个服务的yml配置如下: 如下: 更多可以参考下面的文章,说的不错 Eureka服务端挂了,为什么微服务还能调通?(原理分析).

    2024年02月13日
    浏览(92)
  • Eureka(服务注册和发现)——Eureka的简介和原理 & Eureka的使用和分析 & 心跳续约策略,服务的下线和剔除,自我保护 & Eureka集群的搭建

    Eureka:服务注册与发现组件,用于实现服务的自动注册与发现,Spring Cloud Eureka 是对Netflix公司的Eureka的二次封装,它实现了服务治理的功能,Spring Cloud Eureka提供服务端与客户端,服务端即是Eureka服务注册中心,客户端完成微服务向Eureka服务的注册与发现。服务端和客户端均采

    2024年02月05日
    浏览(45)
  • 深入理解中文编码:原理、应用与实践

    编码是将信息转换为特定格式以便存储、传输或处理的过程。在计算机科学中,编码通常指的是将文本、图像、音频等数据转换为数字形式的过程。编码的作用在于统一数据格式、提高数据传输效率、确保数据安全性等方面发挥着重要作用。 中文编码相较于英文等西方语言编

    2024年04月12日
    浏览(48)
  • SpringCloud Alibaba 深入源码 - Nacos 和 Eureka 的区别(健康检测、服务的拉取和订阅)

    目录 一、Nacos 和 Eureka 的区别 1.1、以 Nacos 注册流程来解析区别 a)首先,我们的服务启动时。都会把自己的信息提交给注册中心,然后注册中心就会把信息保存下来. 注册的信息实际上就是一个嵌套 Map,结构为 MapString, MapString, Service,第一层 key 就是 namespace_id,起到环境隔

    2024年01月22日
    浏览(52)
  • 深入浅出:Zookeeper的原理与实践

    在当今的信息时代,分布式系统的应用越来越广泛,而其中一个至关重要的组成部分就是Zookeeper。作为一个分布式协调服务,Zookeeper在保障分布式系统的一致性、可靠性和可用性方面发挥着不可替代的作用。本博客旨在深入浅出地探讨Zookeeper的原理与实践,帮助读者全面理解

    2024年04月11日
    浏览(46)
  • “深入探究SpringMVC的工作原理与入门实践“

    SpringMVC是一个流行的Java Web开发框架,它提供了一种优雅的方式来构建灵活、可扩展的Web应用程序。本文将介绍SpringMVC的基本概念,深入探讨其工作流程和核心组件,并提供一个入门程序来帮助读者快速上手。 SpringMVC是基于Java的MVC(Model-View-Controller)设计模式的Web框架。它通

    2024年02月10日
    浏览(42)
  • 详解SpringCloud微服务技术栈:强推!源码跟踪分析Ribbon负载均衡原理、Eureka服务部署

    👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:详解SpringCloud微服务技术栈:认识微服务、服务拆分与远程调用 📚订阅专栏:微服务技术全家桶 希望文章对你们有所帮助 服务提供者:一次业务中,被其它微服务调用的服务(提供接口给

    2024年01月18日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包