Ribbon负载均衡+Nacos服务搭建

这篇具有很好参考价值的文章主要介绍了Ribbon负载均衡+Nacos服务搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Ribbon负载均衡

流程

首先通过RibbonLoadBalanceerClient获取服务名,并传给DynamicServerListLoadBalancer——>通过EureKa-server获取服务名对应服务列表(也就是被注册到EureKa中的服务,可能包括不同端口的),然后我们会根据IRule中的服务负载均衡->选择某个服务,然后修改url发送请求;

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

具体实现

Ribbon的负载均衡是一个叫IRule的接口来定义的,每一个子接口对应一个规则
Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

负载均衡策略:

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud
Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud
负载均衡配置的两种方式

1.一种是在配置类中注入bean,返回一个IRule规则——>具体是什么样的规则(RandomRule啥的)自己定义;

2.第二种再yaml中进行配置:定义目标服务,以及对应的负载均衡策略

区别:第一个范围是此服务中的所有服务,范围是全局,第二个指定了具体服务;

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

饥饿加载:

如果用懒加载:就是它不会像饥饿那种,类一加载,就全创建好了(在类加载的准备阶段就整好了),而是调用方法,也就是需要创建的时候,它才会创建;——>耗时较长

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

Nacos服务搭建

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud
Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

里面可以对服务进行注册与发现

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

对于EureKa的改动,我们需要修改依赖,并且注释原本在order-service以及user-service服务中的原有的EureKa-client依赖,并添加nacos依赖

服务注册到Nacos步骤

1.首先在父工程中导入alibaba的cloud依赖

  <!--nacos管理依赖-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
            </dependency>

2.然后在服务项目中配置Nacos注册依赖(注册发现服务的依赖)

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

3.在yaml中进行配置,配置映射,服务名称,以及对应的Nacos服务端口

 application:
    name: orderservice # user的服务名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos服务地址

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

配置搭建总结

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

服务多级存储(给服务的实例配置集群):

引:为了给服务减轻压力,我们可以给服务的实例们(8081、8082…)配置集群->杭州集群,上海集群等等…

给服务实例配置集群

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud
1.修改yaml文件,给Nacos的配置加上cluster节点名称即可

cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos服务地址
        cluster-name: hangzhou # 集群名称

2.然后给对应的实例进行启动即可,(不要启动错了,不然会覆盖之前的集群名称)

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud
Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

集群调用问题:

服务调用尽可能选择本地集群的服务,不然延迟会很高

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

Nacos负载均衡-实现集群优先

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud
步骤:

在yaml文件中对需要调用服务采用Nacos负载均衡策略,然后重启即可

userservice: #指定服务
  ribbon: # 配置负载均衡策略
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule

策略:优先本地集群,如果没有的话,就随机;

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud
Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

如果没有本地集群,说明只能跨集群调用服务——>(耗时较长,毕竟调用的服务在另一个地方),会出现警告

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

服务实例权重的配置

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud
直接在Nacos页面对服务实例修改权重即可

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

场景:服务怎样做到用户不下线,还能升级服务?

在产品更新时,我们可以对一个服务实例的权重降到很低,那么用户请求就很难请求到这个服务上了,那么我们就可以对其进行升级,升级完毕后,再将权重慢慢调大,这样就可以满足用户,也可以满足服务;

nacos环境隔离

没设置命名空间的时候,默认是public;

如果环境设置不一样,那么服务之间就不能进行访问;(实例找不到->也就是userservice服务实例);

每个namespace的id是唯一的;

配置方法:

1.在yaml配置文件加上namespace命名空间即可(先得在Nacos中创建环境)

  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos服务地址
        cluster-name: Hangzhou # 实例集群
        namespace:xxxx

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud
Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud

Nacos和EureKa的总结区别:

共同:它们都是向注册中心拉取服务信息,但是第一次会将服务信息放到服务的列表缓存中,下次拉取就直接从服务列表缓存中拿就行了,速度较快;

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud
Nacos:

临时实例:采用心跳检测,服务实例主动向注册中心汇报自己饿的情况(这里Nacos和EureKa都差不多,但是Nacos速度较快);
(个人认为 不管是临时实例还是非临时实例挂了 Nacos都会将健康状态发送给消费者 ,,,个人猜测 也没找到资料 有大佬知道的话可以指出来 谢谢)

非临时实例:*Nacos会主动询问实例是否还存在(如果不存在)——>Nacos注册中心会立即主动推送变更消息:效率非常高;——>坏处:服务器压力会大,因为总是对服务进行访问

Ribbon负载均衡+Nacos服务搭建,微服务,ribbon,负载均衡,spring cloud
区别:
Nacos支持服务端主动检测服务提供者状态:临时实例采用心跳模式,非临时实例采用服务器主动访问模式;
临时实例心跳不正常会被踢出,非临时实例则不会被剔除;
Nacos支持服务列表消息推送模式,即时更新;

**补充(6/1)nacos、EureKa涉及ap、cp模式**

cp和ap 是什么 有什么区别 文章来源地址https://www.toymoban.com/news/detail-695469.html

到了这里,关于Ribbon负载均衡+Nacos服务搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 云原生微服务 第五章 Spring Cloud Netflix Eureka集成负载均衡组件Ribbon

    第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon Spring Cloud Ribbon 是一套基于 Netflix Ribbon 实现的客户端负载均衡和服务调用工具,其主要功能是提供客户端的负载均衡算法和服务

    2024年02月08日
    浏览(53)
  • Spring Cloud Alibaba全家桶(三)——微服务负载均衡器Ribbon与LoadBalancer

    本文为 微服务负载均衡器Ribbon与LoadBalancer 相关知识,下边将对 什么是Ribbon (包括: 客户端的负载均衡 、 服务端的负载均衡 、 常见负载均衡算法 ), Nacos使用Ribbon , Ribbon内核原理 (包括: Ribbon原理 , Ribbon负载均衡策略 , 饥饿加载 ), Spring Cloud LoadBalancer (包括:

    2024年02月02日
    浏览(41)
  • 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 负载均衡原理、负载策略、懒加载

    目录 ​编辑 一、Ribbon 负载均衡原理 1.1、前言 1.2、负载均衡的工作流程 二、负载均衡策略 2.1、策略原理 2.2、负载均衡自定义方式 三、Ribbon 加载方式 ps:案例是上一章所讲的 “根据订单id查询订单的同时,把订单所属的用户信息一起返回”  。 上一章我们讲到 order-servi

    2024年02月09日
    浏览(37)
  • Cloud微服务:Ribbon负载均衡

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 服务消费者(order-service)根据服务名称发起请求,请求地址(url):http://userservice/user/1。 请求被 负载均衡拦

    2024年04月26日
    浏览(37)
  • 【Spring Cloud】Ribbon 中的几种负载均衡策略

    负载均衡通常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡器,而我们今天的主角 Ribbon 就属于后者——客户端负载均衡器。 服务端负载均衡器的问题是,它提供了更强的流量控制权,但无法满足不同的消费者希望使用不同负载均衡策略的需求,而使

    2024年02月15日
    浏览(61)
  • Spring Cloud 实战 | 解密负载均衡Ribbon底层原理,包含实战源码

    专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow专栏:https://blog.csdn.net/superdangbo/category_869

    2024年02月08日
    浏览(53)
  • 【Spring Cloud】Ribbon 实现负载均衡的原理,策略以及饥饿加载

    在前文《深入理解 Eureka 注册中心的原理、服务的注册与发现》中,介绍了如何使用 Eureka 实现服务的注册与拉取,并且通过添加 @LoadBalanced 注解实现了负载均衡。这种自动化的背后隐藏着许多疑问: 服务是在何时进行拉取的? 负载均衡是如何实现的? 负载均衡的原理和策略

    2024年02月07日
    浏览(47)
  • SpringCloud微服务注册中心:Nacos介绍,微服务注册,Ribbon通信,Ribbon负载均衡,Nacos配置管理详细介绍

    注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。 服务注册中心(简称注册中心)是微服务框架的一个重要组件,在微服务架构里主要

    2024年02月22日
    浏览(69)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包