SpringCloud Alibaba组件入门全方面汇总(上):注册中心-nacos、负载均衡-ribbon、远程调用-feign

在这里插入图片描述

文章目录

    • Nacos
    • Ribbon
    • Feign
    • Feign拓展

Nacos

在这里插入图片描述

概念:Nacos是阿里巴巴推出的一款新开源项目,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos致力于帮助用户发现、配置和管理微服务,它提供了一组简单易用的特性集,包括动态服务发现、服务配置、服务元数据及流量管理,帮助用户更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。

在定位上,Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它提供了强大的功能和简单易用的特性集,帮助用户快速实现动态服务发现、服务配置、服务元数据及流量管理。

在原理上,Nacos通过注册中心实现服务的注册与发现,通过配置管理模块实现配置的动态获取和更新,通过服务管理模块实现服务的元数据管理和流量管理。

在使用上,Nacos可以与Spring, Spring Boot, Spring Cloud等框架集成,可以代替Spring Cloud Eureka和Spring Cloud Config。
要在 Nacos 中使用注册中心功能,需要按照以下步骤进行:

  1. 在项目的 pom.xml 文件中添加 Nacos 的相关依赖。
  2. 在项目的 application.yml 或 application.properties 文件中配置 Nacos 注册中心的相关参数,例如 Nacos 的地址、端口、用户名、密码等。
  3. 在项目的主程序中添加 @EnableDiscoveryClient 注解来启用服务注册和发现功能。
  4. 在项目的服务类中添加 @Service 和 @Autowired 注解来声明服务和注入依赖。
  5. 在项目的客户端类中添加 @RibbonClient 和 @FeignClient 注解来声明客户端和调用服务。

Ribbon

概念:Ribbon是一个基于Netflix的开源项目,它是一个客户端的负载均衡工具。Ribbon提供了完善的配置,例如超时、重试等,并且支持多种负载均衡算法,例如轮询、随机、最少连接算法等。

在概念上,负载均衡是指将客户端的请求分配到多个服务器上,以实现高可用性和高性能。Ribbon作为负载均衡器,通过客户端向Ribbon发送请求,然后Ribbon根据负载均衡算法选择一个服务器,并将请求转发给该服务器。如果该服务器无法响应请求,Ribbon会自动选择另一个服务器,并将请求转发给它。

在定位上,Ribbon是Spring Cloud生态系统中的一部分,它主要用于客户端的负载均衡。

在原理上,Ribbon的工作原理是基于权重的轮询算法。它将所有服务器分配一个权重值,并根据权重值来决定每个服务器被选择的概率。例如,如果服务器A的权重值为2,服务器B的权重值为1,那么在轮询过程中,服务器A被选择的概率是2/3,服务器B被选择的概率是1/3。此外,Ribbon还支持多种负载均衡算法,例如随机算法、最少连接算法、IP哈希算法等。这些算法可以根据不同的场景选择合适的负载均衡策略,以提高系统的性能和可用性。

在使用上,Ribbon可以与Spring Cloud集成,通过合理地配置权重和选择合适的负载均衡算法,可以帮助我们实现高可用性和高性能的分布式系统。同时,Ribbon也支持自定义的负载均衡策略,用户可以根据自己的需求实现自定义的负载均衡算法。
要在 Spring Cloud 中使用 Ribbon 实现负载均衡,需要按照以下步骤进行:

  1. 在项目的 pom.xml 文件中添加 Spring Cloud 和 Ribbon 的相关依赖。
  2. 在项目的 application.yml 或 application.properties 文件中配置 Ribbon 相关的参数,例如 Ribbon 的服务器列表、轮询间隔等。
  3. 在项目的主程序中添加 @EnableDiscoveryClient 注解来启用 Nacos客户端功能。
  4. 在项目的服务类中添加 @Service 和 @Autowired 注解来声明服务和注入依赖。
  5. 在项目的客户端类中添加 @FeignClient 注解来声明客户端和调用服务。

Feign

概念:Feign是一个声明式的Web Service客户端,它使得写HTTP客户端变得更简单。Feign的口号是“Feign makes Java HTTP clients dead simple”,它的核心注解和方法极简主义以及使用可插拔的编码器和解码器,使得编写HTTP客户端变得更简单。

在概念上,Feign是一种轻量级的RESTful的HTTP服务客户端,它以Java接口注解的方式调用Http请求,类似于Dubbo,服务消费者拿到服务提供者的接口,然后像调用本地接口方法一样去调用,实际发出的是远程的请求。

在定位上,Feign是Spring Cloud生态系统中的一部分,它主要用于服务的远程调用。

在原理上,Feign通过动态代理的方式将接口的方法映射到HTTP请求上,然后通过HTTP客户端发送请求,最终获取到响应结果。在使用Feign进行远程调用时,我们需要定义一个接口,该接口中定义了需要调用的方法。接口中的方法可以使用注解来指定请求的URL、请求方法、请求参数等信息。例如,我们可以使用@FeignClient注解来指定需要调用的服务名称和服务地址等信息。

在使用上,Feign可以通过引入相关的依赖包来使用。在配置上可以通过添加注解和编写Feign的客户端代码来实现远程调用。同时也可以根据实际需要自定义配置和优化Feign的使用。
要在 Spring Cloud 中使用 Feign 实现远程调用,需要按照以下步骤进行:

  1. 在项目的 pom.xml 文件中添加 Spring Cloud 和 Feign 的相关依赖。
  2. 在项目的 application.yml 或 application.properties 文件中配置 Feign 相关的参数,例如 Feign 的客户端名称、超时时间等。
  3. 在项目的主程序中添加 @EnableFeignClients 注解来启用 Feign 客户端功能。
  4. 在项目的服务接口中添加 @FeignClient 注解来声明服务接口和指定远程服务的 URL。
  5. 在项目的客户端类中注入服务接口,并通过服务接口来调用远程服务的方法

Feign拓展

1>@FeignClient 中name为服务提供者在nacos上注册的服务名, 否则报错

Load balancer does not have available server for client:xxxx-service

2>@GetMapping(“/products/{pid}”) 指定接口路径,必须跟服务提供者提供接口url一样,否则报错

feign.FeignException$NotFound: [404] during [GET] to [http://xxx-service/xxx] 

3> 定义接口参数:如果使用了参数路径方式访问,需要使用@PathVariable(“pid”) 明确指定路径参数,否则报错

feign.FeignException$NotFound: [404] during [GET] to [http://xxx-service/xxx] 

4>定义接口参数:如果使用普通方式访问,参数需要使用@RequestParam标记,否则报错

feign.FeignException$MethodNotAllowed: [405] during [GET] to [http://xxxx-service/xxxx?xxx=1]

5>定义接口参数:如果是对象参数,参数需要使用@RequestBody标记(注意fegin接口,controller接口都要),否则报错

参数无法获取

6>定义接口参数:如果是对象,可以使用@SpringQueryMap替换上面的@RequestBody

7>定义接口参数:如果需要进行文件上传,需要使用@RequestPart注解标记

8>Feign接口调用默认连接时间是1s,如果电脑较慢,开发中可以配置长一点时间

注意:后面学sentinel 时候,不要配置,会影响观测效果

feign:
  client:
    config:
      default:
        connectTimeout: 5000  #连接时间,单位毫秒
        readTimeout: 5000     #操作时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/152627.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

五金信息展示预约小程序的作用是什么

五金行业所覆盖的产品很广,如灯具、浴具、门窗、工具等都是人们生活所需或常用到的,而五金行业规模也是连年上涨,市场呈现多品牌多门店多区域扩展的趋势。 虽然市场规模大,但同样问题不少,接下来我们来看看几个痛点。…

PyTorch:框架的自动微分机制

近年来,深度学习技术的迅猛发展已经改变了许多行业,其中框架的自动微分机制在深度学习领域扮演了重要的角色。PyTorch作为一款深度学习框架,在自动微分方面具有独特的优势和特点。本文将深入探讨PyTorch框架的自动微分机制,包括其…

一文搞懂GPU的概念、工作原理,以及与CPU的区别

中午好,我的网工朋友。 最近GPTs热度很高啊,你们都用上了吗? ChatGPT到现在热度仍不减,人工智能还在快速发展,这都离不开高性能、高算力的硬件支持。 如果以英伟达A100GPU的处理能力计算,运行ChatGPT将需…

kubernetes集群编排——etcd

备份 从镜像中拷贝etcdctl二进制命令 [rootk8s1 ~]# docker run -it --rm reg.westos.org/k8s/etcd:3.5.6-0 sh 输入ctrlpq快捷键,把容器打入后台 获取容器id [rootk8s1 ~]# docker ps 从容器拷贝命令到本机 docker container cp c7e28b381f07:/usr/local/bin/etcdc…

【Java 进阶篇】JQuery 案例:下拉列表选中条目左右移动,打破选择的边界

在前端的舞台上,下拉列表是常见的用户交互元素,但有时候我们想要更多的交互体验。通过巧妙运用 JQuery,我们可以实现下拉列表中选中条目的左右移动功能,为用户提供更加灵活的选择方式。本篇博客将深入研究 JQuery 中实现这一功能的…

vue项目如何防范XSS攻击?

场景: 前后端交互的过程中,前端使用v-html或者{{}}渲染时,网页自动执行其恶意代码,如页面弹窗、跳转到钓鱼网站等 解决方案: 先说解决方式,其原理下文解释. 由于我是vue项目所以用的是vue-dompurify-html这…

PDF文件中更改 PDF 文本颜色的最有效解决方案

PDF 是最常用的文档类型之一,也是商业中使用的首选文档。在工作中,我们经常需要修改PDF的文本内容,转换格式(如PDF转Word,PDF转Excel等),合并PDF,以达到更好的工作效果。 然而&…

统信UOS_麒麟KYLINOS上使用SSH远程工具Termius

原文链接:统信UOS/麒麟KYLINOS上使用SSH远程工具Termius hello,大家好啊,今天给大家带来一篇在统信UOS/麒麟KYLINOS上使用SSH远程工具Termius的文章,Termius是一个功能强大的ssh工具,支持Linux x86平台、windows、maco…

安装包管理工具-Yarn

一、介绍与安装 1.1 介绍 Yarn是一款功能包管理工具,与npm(npm:Node.js 的包管理器 npm,是目前最流行的Node.js 的包管理器。)类似。有着FAST(快速的), RELIABLE( RELIABLE 可信赖的), AND SECURE DEPENDENCY MANAGEMENT(安全依赖关系管理)的特点。 Yarn官网 1.2…

QGIS之二十四安装插件

1、从菜单栏中找到插件 2、搜索插件 从搜索框中搜索插件,如“cesium" 3、安装插件 4、查看插件 安装好的插件从这边可以看到,当然,其它插件可能在其它位置 5、已安装插件 可以查看已安装的插件

【实施】Sentry-self-hosted部署

Sentry-self-hosted部署 介绍 Sentry 是一个开源的错误追踪(error tracking)平台。它主要用于监控和追踪应用程序中的错误、异常和崩溃。Sentry允许开发人员实时地收集和分析错误,并提供了强大的工具来排查和修复问题,研发最近是…

HTML特殊字符对照码(避免字符乱码)

最近做了个vue项目,页面上写大于等于符号,小于等于符号的时候,总是出现乱码。特别让人头疼,后来查了资料,使用特殊字符的方式,能解决掉这个问题。所以将这些HTML 特殊字符对照码列出来,方便日后…

电影《惊奇队长2》观后感

上周看完了电影《惊奇队长2》,可能是最近国片看多了,看看国外电影还是感觉非常不错的,其中就有特效部分。目前来说,国内特效和国外还是有一定差距的,在过年时,备受好评的《流浪地球2》据说也是用的国外特效…

2024清理mac苹果电脑内存免费工具CleanMyMac X4.15

当你使用苹果电脑时,内存的优化和清理变得至关重要。随着时间的推移,我们的电脑内存可能会变得拥挤,导致性能下降。清理内存可以提高电脑的速度和反应能力,并确保它始终在良好状态下运行。本文将向您介绍怎么清理苹果电脑内存的方…

2016Outlook显示正在启动无法进入Outlook

2016Outlook显示正在启动无法进入Outlook 故障现象: 因上次非正常关闭,导致Outlook启动时,一直处于启动界面,无法进入主界面正常工作 故障截图: 故障原因: 数据文件异常导致 解决方案: 1、关…

[模版总结] - 树的基本算法3 - 结构转化

二叉树结构转化 通常将二叉树根据某些要求进行结构重构,比如线性结构转化(链表,数组),序列化等。 常见题型 注:这类题目最基本的解题思路是利用递归分治 (也可以使用迭代方法),在构建树结构的时候,我们通…

有什么进销存软件,比较适合零售行业日常开单要求及库存记录?

本文将为大家总结一下对于进销存软件要求: 基础功能:可以日常开单、退换货处理、出入库进阶功能:电脑、手机数据同步,保障数据安全,可进行数据分析 其实无论是小型创业公司,还是一家大型企业,…

Linux下好玩的指令(持续更新)

适用于centOS下,别的Linux换个指令就行,内容是一样的 centOS有的指令安装不了?试试拓展yum源,再安装基本就OK啦! yum install -y epel-release 下面是作者在centOS环境下亲测可以使用的,如果你是root用户直…

软件测试/测试开发丨掌握未来,引领人工智能测试新潮流!

点此领取人工智能课程 在数字化革命的浪潮中,人工智能软件成为企业创新和成功的关键推动力。为了在这个竞争激烈的市场中脱颖而出,精湛的人工智能软件测试技能变得至关重要。 ChatGPT应用实战: 学员将深入了解 ChatGPT 的实际应用&#xf…

微服务和Spring Cloud Alibaba介绍

1、微服务介绍 1.1 系统架构演变 随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。从互联网早起到现在,系统架构大体经历了下面几个过程: 单体应用架构 —> 垂直应用架构 —> 分布 式架构—>…