当前位置: 首页 > news >正文

微服务拷打第一讲!

1. Spring Cloud 5大组件有哪些?

早期 Spring Cloud 五大组件一般指 Eureka(注册发现)、Ribbon(负载均衡)、Feign(远程调用)、Hystrix(熔断降级)、Zuul(网关)。
现在新项目里更常见的是 Nacos、Spring Cloud LoadBalancer、OpenFeign、Sentinel 和 Gateway。

2. 服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?

服务提供者和消费者->解决的什么->心跳机制

服务注册发现指的是,在微服务架构里,服务提供者启动后把自己的服务名、IP、端口等信息注册到注册中心;服务消费者调用时不写死 IP,而是根据服务名从注册中心获取可用实例列表,再通过负载均衡选择一个实例调用。
它主要解决的是服务实例动态上下线、扩容缩容时,调用方不用手动维护服务地址的问题。
在 Spring Cloud 里,早期可以用 Eureka,现在也常用 Nacos。注册中心一般会通过心跳机制(服务实例主动发消息给注册中心)判断实例是否存活,如果长时间没有心跳,就会把实例从可用列表中剔除。

3. 我看你之前也用过nacos,你能说下nacos与eureka的区别?

注册中心,配置中心,临时实例,非临时实例,服务更改感知

Nacos 和 Eureka 都可以做服务注册发现,但 Nacos 的能力更完整一些。
Eureka 主要就是注册中心,服务实例通过心跳续约,消费者定时拉取服务列表;Nacos 除了注册发现,还可以做配置中心,这是项目里用得比较多的一个区别。
另外 Nacos 区分临时实例和非临时实例。临时实例一般也是服务实例上报心跳,异常后可以被删除;非临时实例更偏注册中心主动健康检查,异常时通常是标记不健康。
服务变更感知上,Nacos 支持推送,实例变化后消费者感知会更及时;Eureka 更偏客户端主动拉取。CAP 上,Eureka 更偏 AP,Nacos 支持 AP 和 CP 两种模式,具体和实例类型有关。

4. 你们项目负载均衡如何实现的?

注册中心拿实例列表->远程调用->结合负载均衡组件发请求->策略

我们项目里的负载均衡主要是客户端负载均衡。比如订单服务调用用户服务时,不会写死某一台机器的 IP,而是通过服务名从注册中心拿到 user-service 的实例列表。
然后 OpenFeign 发起远程调用时,会结合负载均衡组件从多个实例里选择一个发请求。老版本 Spring Cloud 常用 Ribbon,现在新版本一般用 Spring Cloud LoadBalancer。
默认比较常见的是轮询策略,也就是多个实例轮流处理请求。

5. Ribbon负载均衡策略有哪些?

Ribbon 的负载均衡策略本质上就是从注册中心拿到的服务实例列表里选一台来调用。
常见的策略有轮询 RoundRobinRule,按顺序依次选择实例;
RandomRule 是随机选择;
RetryRule 是调用失败后在一定时间内重试其他实例;
WeightedResponseTimeRule 会根据响应时间分配权重,响应越快的实例被选中的概率越高;
还有 ZoneAvoidanceRule,会综合区域和实例可用性来选择,Ribbon 默认的也是这个策略。

6. 如果想自定义负载均衡策略如何实现?

ribbon->IRule(全局) ribbon->@RibbonClient(单独) ribbon->配置文件(单独) Spring Cloud LoadBalancer->ServiceInstanceListSupplier ->ReactorServiceInstanceLoadBalancer

如果是老版本 Ribbon,自定义负载均衡策略主要是围绕IRule来做。
简单一点,可以直接配置一个IRule的 Bean,比如返回RandomRule,这样会改变默认的负载均衡策略。
如果只想对某个服务生效,可以用@RibbonClient指定服务名和单独的配置类,或者在配置文件里通过服务名.ribbon.NFLoadBalancerRuleClassName指定具体的 Rule 类。

如果是新版本 Spring Cloud LoadBalancer,一般是通过自定义ReactorServiceInstanceLoadBalancer,或者调整ServiceInstanceListSupplier来实现自己的选择逻辑。

http://www.cnnetsun.cn/news/2693700.html

相关文章:

  • 5个Dify工作流实战技巧:如何用开源项目加速AI应用开发
  • Sora 2包装设计避坑清单,20年包装工程总监亲授:92%团队踩过的5个合规性雷区
  • 值迭代和策略迭代到底怎么选?从算法复杂度到收敛速度的实战对比分析
  • SmolLM2-1.7B-Instruct-GGUF部署指南:从本地环境到云服务器的完整流程
  • Python投资组合优化终极指南:3种方法构建智能资产配置
  • 15分钟搞定Hackintosh:OpCore-Simplify让OpenCore配置自动化
  • OpCore-Simplify终极教程:10分钟自动化搞定黑苹果OpenCore配置
  • Foresight研究报告【20260016】
  • Google OR-Tools:应对大规模组合优化挑战的企业级运筹引擎架构深度解析
  • TMSpeech:Windows平台完全离线实时语音转文字系统技术解析与实现指南
  • 别再只会调细分了!THB6128驱动板电流设定、光耦限流与衰减模式实战避坑指南
  • 如何免费快速录制40+主流平台直播:StreamCap终极指南
  • 网盘直链下载助手完全指南:一键获取9大网盘真实下载地址,告别限速烦恼
  • 如何零成本解锁WeMod完整功能:WandEnhancer终极配置指南
  • League Akari:重新定义英雄联盟玩家的智能决策辅助系统
  • 基于PAM8403的DIY蓝牙音箱制作:从模块选型到声学优化全攻略
  • 简单三步:免费解锁百度网盘Mac版SVIP高速下载终极指南
  • ARMCC内存分配异常处理与嵌入式开发实践
  • 【零基础学Python】06-Python模块和包、异常处理、文件常用操作
  • D2RML完整指南:告别重复登录,一键启动多个暗黑2重制版游戏实例
  • 技术伦理实践:算法、数据与自动化中的责任构建
  • N_m3u8DL-RE终极指南:轻松下载MPD、M3U8流媒体视频的完整教程
  • 量化因子投资——多因子模型Excel构建
  • 如何构建专业的《缺氧》存档编辑器:Oni-Duplicity技术架构深度解析
  • 别再只盯着下载了!GLC_FCS30数据背后的‘连续变化检测’技术,到底强在哪?
  • 实测对比:YOLOv8n与YOLOv8m在Jetson Orin Nano上的训练速度与显存占用(附解决Killed进程方法)
  • 实战指南:如何高效使用Google OR-Tools优化引擎解决复杂业务问题
  • 告别死记硬背:用Python可视化带你理解lp空间和Lebesgue空间的几何
  • 终极解锁:3分钟让联想笔记本释放隐藏性能
  • Sora 2医学动画提示词工程白皮书:17类高危解剖结构专属Prompt模板(含脑干/冠脉/胎盘三级安全校验机制)