【Spring Cloud】Nacos及Ribbon组件的使用

这篇具有很好参考价值的文章主要介绍了【Spring Cloud】Nacos及Ribbon组件的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

🎉🎉欢迎来到我的CSDN主页!🎉🎉

🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚

🌟推荐给大家我的专栏《Spring Cloud》。🎯🎯

👉点击这里,就可以查看我的主页啦!👇👇

Java方文山的个人主页

🎁如果感觉还不错的话请给我点赞吧!🎁🎁

💖期待你的加入,一起学习,一起进步!💖💖

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

🌟前言

这篇文章主要讲解SpringCloud中的两个组件Eureka和Ribbon,教会大家在项目的过程中如何使用这两个组件以及更加深入的了解这两个组件的作用是什么?话不多说上代码!!

✨环境配置

首先我们需要一个SpringCloud作为我们的父项目,将子项目写在父项目中并继承即可,父项目的作用就是提供公共的依赖。

🍃创建Maven项目

直接新建一个Maven项目即可

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

🍃项目定义版本

 现在版本更新迭代的非常快,所以使用什么版本也需要有要求,否则就会不兼容,以下是相应Boot与Cloud的版本对照,提供大家参考

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

选择好自己需要的版本就可以为其定义了 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>Cloud</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <!-- 定义版本-->
    <properties>
        <spring-boot.version>2.4.1</spring-boot.version>
        <spring-cloud.version>2020.0.0</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>
packing( 打包类型 , 默认为 jar)
pom : 父级项目 (pom 项目里没有 java 代码 , 也不执行任何代码 , 只是为了聚合工程或传递依赖用的 )
jar : 内部调用或者是作服务使用
war : 需要部署的项目

🍃创建子项目

这里有两个身份项目,一个是生产者另一个是消费者,分别扮演不同的模块或不同服务

🎊生产者项目创建

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

 现在我们的子项目创建出来了,但是它和父项目还没有任何关系,所以我们还需要让它继承【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

  <parent>
        <groupId>org.example</groupId>
        <artifactId>Cloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

 不但子项目要继承父项目,父项目那边也需要定义子项目才能双向奔赴

   <!--定义子项目-->
    <modules>
        <module>produce</module>
    </modules>

🎊消费者项目创建

该项目直接复制生产者项目即可,随后将“produce”改为“consume”

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

✨Nacos案例实操

环境我们已经搭建好了,现在我们来讲解一下我们这两个组件的使用,我们先为生产者创建一个controller编写一个方法生成鸡腿的方法

@RestController
public class ProduceController {
    @RequestMapping("/run")
    public String run() {
        return "🍗";
    }
}

然后我们消费者也创建一个controller编写一个获取鸡腿的方法

@RestController
public class ConsumeController {

    @RequestMapping("/run")
    public String run() {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate.getForObject("http://localhost:8082/run", String.class);
    }
}

运行测试一下 

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

成功获取到了我们的鸡腿,但是这样的方法真的合适吗?如果在开发过程中先不谈我们如何知道对方服务的接口是什么,就算知道了在方法很多的情况下一个个写也是非常的麻烦,这就不得不提到我们的Nacos,它可以用于实现动态服务发现、服务配置和服务管理。

🍃Nacos下载

我们使用Nacos首先需要下载Releases · alibaba/nacos · GitHub

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

我这里下载的windows版本的,不需要安装,下载好直接解压,然后到bin目录下,执行startup.cmd -m standalone启动即可。 【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

命令运行成功后直接访问http://localhost:8848/nacos默认账号密码都是nacos 

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

 

🍃文件配置 

①要想我们的项目注册到nacos就需要做相应的配置,在application.yml编写一下内容,其中name就是我们项目注册到nacos中的名字

spring:
    cloud:
        nacos:
            discovery:
                server-addr: localhost:8848
    application:
        name: consume

 ②文件配置了但spring怎么读取呢?我们现在还需要导入一个nacos依赖(可写在父项目)

         <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

③打开我们的nacos服务,需要在每个启动器上加上下面这个注解

@EnableDiscoveryClient

再次启动我们的项目,就会发现项目注册到Nacos中去了

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

这时候我们也可以使用服务名进行服务发现与调用了

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

 

 ✨Ribbon案例实操

虽然我们的服务可以实现动态发现了,但还有一个问题,万一别人的服务器部署了很多呢?那我们的请求怎么知道该向那个服务发送请求呢?这时Spring Cloud Ribbon就派上用场了。Ribbon就是专门解决这个问题的。它的作用是负载均衡,会帮你在每次请求时选择一台机器,均匀的把请求分发到各个机器上。

🍃依赖引入

       <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
        </dependency>

🍃负载均衡

@LoadBalanced注解表示该RestTemplate对象将使用负载均衡器来分配请求,以便在多个服务实例之间分配请求。在使用Spring Cloud的服务发现和注册功能时,这个注解通常与Ribbon负载均衡器一起使用,以确保请求被均匀地分配到不同的服务实例中。

默认情况下,RestTemplate对象不会使用负载均衡器,而是直接向指定的URL发送请求。通过添加@LoadBalanced注解,Spring将为RestTemplate对象创建一个代理,该代理会自动将请求发送到负载均衡器,并根据特定的负载均衡策略选择一个可用的服务实例来处理请求。

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

因为RestTemplate已经加到Spring中去了,那我们也不需要new出来了,直接引用即可

@RestController
public class ConsumeController {

    @Autowired
    RestTemplate restTemplate;

    @RequestMapping("/run")
    public String run() {
        return restTemplate.getForObject("http://produce:8082/run", String.class);
    }
}

下面我们做一个测试首先将两个服务分别打成jar包

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

使用我们的终端运行jar(生产服务运行多个模拟负载均衡)

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon 现在我们看一下nacos的服务,可以看到生产服务有三个

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

Ribbon的负载均衡默认使用的最经典的Round Robin轮询算法。这是啥?简单来说,就是如果订单服务对库存服务发起10次请求,那就先让你请求第1台机器、然后是第2台机器、第3台机器、第4台机器、第5台机器,接着再来—个循环,第1台机器、第2台机器。。。以此类推。如果其中一个挂了就不会给它发送请求了

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon

到这里我的分享就结束了,欢迎到评论区探讨交流!!

💖如果觉得有用的话还请点个赞吧 💖

【Spring Cloud】Nacos及Ribbon组件的使用,# Spring Cloud,spring cloud,spring,后端,Nacos,Ribbon文章来源地址https://www.toymoban.com/news/detail-822514.html

到了这里,关于【Spring Cloud】Nacos及Ribbon组件的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring Boot 中的 Spring Cloud Ribbon:什么是它,原理及如何使用

    在分布式系统中,服务之间的通信是非常重要的。在大型的分布式系统中,有许多服务需要相互通信,而这些服务可能会部署在多个服务器上。为了实现服务之间的通信,开发人员需要编写大量的代码来处理负载均衡、故障转移和服务发现等问题。为了简化这个过程,Spring

    2024年02月12日
    浏览(39)
  • spring cloud整合spring boot,整合nacos、gateway、open-feign等组件

    想看具体详情的可以看我的github链接:codeking01/platform-parent: spring cloud整合spring boot、nacos、gateway、open feign等组件 (github.com) 由于我升级了jdk17,所以用上了spring boot 3.0.2了。 踩坑无数,一堆无用文章,写来写去,本文主要是提供给有基础的开发者再次快速搭建使用(确定版本

    2024年02月11日
    浏览(58)
  • 【springcloud 微服务】Spring Cloud Ribbon 负载均衡使用策略详解

    目录 一、前言 二、什么是Ribbon 2.1 ribbon简介 2.1.1  ribbon在负载均衡中的角色

    2024年02月02日
    浏览(64)
  • spring cloud 之 ribbon

    Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡的工具, 主要功能是提供客户端负载均衡算法和服务调用 。简单的说,就是在配置文件中列出 Load Balance( LB: 将用户的请求平摊的分配到多个服务上 )后面的所有机器,Ribbon 会自动的帮助我们基于某种规则(如

    2024年02月12日
    浏览(38)
  • Spring Cloud Ribbon:负载均衡

    1. 介绍 Spring Cloud Ribbon 1.1 什么是 Spring Cloud Ribbon Spring Cloud Ribbon是Netflix开源的负载均衡器,它为分布式服务提供了客户端负载均衡的功能。Ribbon可以根据一系列的负载均衡算法和配置策略,将客户端的请求动态分发到多个服务实例上,以实现高可用性和性能优化。 1.2 负载均

    2024年02月19日
    浏览(43)
  • 【Spring Cloud 四】Ribbon负载均衡

    【Spring Cloud一】微服务基本知识 【Spring Cloud 三】Eureka服务注册与服务发现 目前公司项目使用的注册中心主要是Spring Cloud Alibaba的Nacos做的注册中心和配置中心。并且Nacos使用了Ribbon作为默认的负载均衡器。但是相当于将Ribbon的负载均衡给透明化了,日常开发明面上是看不到

    2024年02月14日
    浏览(50)
  • 【Spring Cloud系列】- Ribbon详解与实战

    在前面的文章 Eureka详解与实战、Eureka Client应用、RestTemplate详解及其负载均衡几篇文章中,已经介绍了Spring Cloud基本应用,本文将从讲解在进程层面的负载均衡,在Spring Cloud中如何使用Ribbon做系统应用层面的负载均衡使用。 Ribbon 是netflix 公司开源的基于客户端的负载均衡组件

    2024年02月15日
    浏览(41)
  • Spring Cloud学习笔记(Ribbon):Ribbon的应用样例

    这是本人学习的总结,主要学习资料如下 - 马士兵教育 我们都知道 Ribbon 是用于负载均衡的。提供同一种服务的 Client 可能有多个,比如有多个 User Client 提供查询用户信息的服务,使用 Ribbon 就能简单地达到负载均衡的效果。 想要使用 Ribbon ,无论是服务提供者还是调用服务

    2024年04月25日
    浏览(37)
  • 【springcloud 微服务】Spring Cloud Alibaba Nacos使用详解

    目录 一、前言 二、nacos介绍 2.1  什么是 Nacos 2.2 nacos 核心能力 2.2.1 服务发现和服务健康监测

    2024年01月22日
    浏览(51)
  • 【Spring Cloud Alibaba】Nacos config的使用和高阶用法

    Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。 Spring Cloud Alibaba Nacos Config 是 Config Server 和 Client 的替代方案,客

    2024年02月06日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包