• springcloud - ribbon 饥饿加载


    一、未饥饿加载前

    我们的服务者端口是8081,消费者端口是8085

    当我们将两个项目都启动的时候,在消费者里日志级别设置未debug,发现找不到8081

    二、开启饥饿加载

    1. # 配置饥饿加载,d1为服务名
    2. ribbon.eager-load.enabled=true
    3. ribbon.eager-load.clients=d1

    如果多个服务开启饥饿模式,使用逗号分隔。 clients: userservice,orderservice 

     

    三、饥饿加载的原理

    ①特点:我们可以理解为一种优化策略,

    1.  应用启动时,Ribbon会根据配置立即向服务注册中心发起请求,获取指定服务的所有实例信息,并将其缓存起来。

    ② 优点:

    • 减少延迟:首次调用服务时不再需要等待从服务注册中心获取实例列表的时间,提高服务调用的响应速度。
    • 避免雪崩效应:特别是在服务集群规模较大或网络延迟较高的情况下,避免因首次请求时集中拉取服务列表引发的网络拥塞或超时问题。
    • 提升用户体验:特别适用于对启动性能要求较高的场景,如系统启动初期就有高并发请求的情况。

    ③ 缺点:

    • 增加资源消耗:启动时即加载所有服务实例可能导致额外的网络资源消耗,特别是当服务实例数量众多时。
    • 数据实时性问题:如果服务实例的注册状态在应用启动后发生变化(比如新增、移除或状态变更),饥饿加载的数据可能不会立刻反映最新的服务列表,需要配合轮询或其他更新机制来保持数据同步。
    • 注意:虽然以上描述了Ribbon的一种潜在优化策略,但在官方文档或最新版本的Spring Cloud体系中,对Ribbon的饥饿加载特性并没有明确支持。不过开发者可以根据需求自行实现类似的逻辑,以实现在应用启动时预先加载服务实例信息的目的。
  • 相关阅读:
    如何像人类一样写HTML之图像标签,超链接标签与多媒体标签
    第9章:项目实战
    MySQL中使用函数会使索引失效?
    重温C语言十一 ----数组
    LRU缓存替换策略及C#实现
    分治类dp:1017T3
    谷歌验证码无法显示问题
    Spark 【Spark SQL(一)DataFrame的创建、保存与基本操作】
    问题解析:Python中的变量复制备份,为什么没有达到效果?
    HTTPS中间人攻击实验
  • 原文地址:https://blog.csdn.net/qq_65142821/article/details/138160790