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

微服务调用

一、微服务调用

服务之间通过网络互相请求数据、执行逻辑,完成完整业务。

1. 微服务调用规范

  • 上层调用下层,禁止下层调用上层
  • 同步调用保持简单,异步调用解耦
  • 必须熔断、降级、限流,防止雪崩
  • 禁止循环调用
  • 底层通知上层用 MQ
  • 调用必须带日志、链路追踪

2. 两种调用方式

1)同步调用(实时、直接)
  • 一边发请求,一边等返回
  • 实时性强
  • 会阻塞、会耦合

场景:查询、下单、支付校验。

主流技术:OpenFeign(企业首选)

2)异步调用(不等待、解耦)
  • 发消息到 MQ,不等待结果
  • 解耦、高可用、不阻塞

场景:通知、日志、更新、后续流程。

主流技术:RabbitMQ / RocketMQ / Kafka

3. 微服务的调用方式

1)OpenFeign—— 最主流、企业首选

声明式调用,像调用本地方法一样调用远程服务。

@FeignClient(name = "stock-service") public interface StockClient { @GetMapping("/stock/deduct") Result deduct(); }
2)RestTemplate—— 传统方式
restTemplate.getForObject("http://stock-service/stock/deduct", String.class);

二、微服务调用顺序

1. 正常调用顺序

上层调用下层,基础服务不调用业务服务,同步按流程,异步解耦。

2. 特殊情况

底层调用上层,如:

  • 库存更新了 → 想通知订单服务
  • 商品变价了 → 想通知购物车服务

解决方案:

1) 事件驱动 + MQ 消息(最推荐、最标准)

流程:

  • ① 底层服务(库存 / 商品)只发消息,不调用任何人
  • ② 上层服务(订单 / 购物车)监听消息,自己处理
  • ③ 完全无依赖、无调用、无耦合

优点:无依赖、无循环调用、不阻塞、不雪崩、架构最健康

2) 抽取公共服务(消除双向依赖)

如果 A 和 B 互相需要,抽一个公共服务 C。如订单服务和库存服务中的公共服务部分 公共逻辑、状态、数据可以抽出作为公共服务

3) 上层主动轮询 / 拉取(简单场景)

上层定时调用下层获取状态,下层不回调上层。

三、常见问题

1.服务雪崩

一个服务挂 → 调用方也挂 → 全部崩溃。

解决方案:

  • 熔断 ——Sentinel、Hystrix
  • 降级,兜底方案,保证系统的可用性
  • 限流(Sentinel)
  • 超时控制,快速失败,释放线程
  • 隔离,如给每个服务调用分配独立线程池

2. 服务调用超时

网络波动导致调用失败。

超时原因:

  • 下游服务响应慢、卡顿、死锁
  • 数据库慢查询、IO 阻塞
  • 网络延迟、抖动
  • 线程池满、资源耗尽
  • 调用链太长,一环慢,全链超时

解决方案:

  • 设置合理的超时时间(最基础、必须做)
  • 超时次数过多 →自动熔断,不继续调用,防止拖死调用方
  • 异步化 & 异步调用(解耦,不阻塞),用MQ、事件驱动削峰、解耦、不等待响应
  • 超时重试,注意保证接口幂等性
  • 服务隔离 + 线程池隔离

3. 分布式事务数据不一致

现象:多服务分步操作,某一步失败,前面已经提交数据无法回滚。

解决方案

  • 强一致:Seata AT/TCC
  • 最终一致:本地消息表、可靠消息 MQ、最大努力通知。
http://www.zskr.cn/news/1455066.html

相关文章:

  • 3步实现专业MDX词典制作:揭秘AutoMdxBuilder的自动化效率革命
  • 如何快速实现Joy-Con手柄转换:XJoy开源方案终极指南
  • AMD MI300X部署大模型:虽遇软件困境,仍有8.6%性能提升,AI硬件格局渐趋多元
  • Pearcleaner:macOS应用彻底卸载的终极解决方案,3步告别残留文件困扰
  • Modern Fortran扩展:为科学计算语言构建现代化IDE生态
  • 从面包板到PCB:电路设计全流程实战与避坑指南
  • MDME技术解析:机器人运动模仿的双编码器方案
  • 避坑指南:在Jetson TX2用TensorRT部署YOLOv8时,你的FPS为什么上不去?
  • 你写的代码一半都是重复逻辑,模板方法能帮你省掉
  • 萍乡市地区2026年权威甄选:黄金回收白银铂金回收优质门店 TOP5 含详细电话 - 诚金汇钻回收公司
  • 终极指南:如何使用Ludusavi免费备份你的PC游戏存档,彻底告别进度丢失!
  • 2026年常州翡翠回收哪家好?合扬本地资深门店,无套路机构更推荐 - 合扬奢侈品交易中心
  • 从零到一:用DeepXDE解决传统数值方法头疼的微分方程问题
  • ChanlunX:3分钟让通达信自动画缠论中枢的终极解决方案
  • Rainmeter插件性能优化:如何打造高效桌面监控系统
  • 5分钟掌握浏览器音乐解密:解锁10+主流平台加密格式的终极指南
  • 基于树莓派与OpenCV的运动追踪系统:从视觉感知到物理控制
  • 【Flutter】Flutter 组件 ③ ( 组件位置设置 | 相对定位 | 绝对定位 | 位置偏移定位 | FractionallySizedBox 百分比定位 | alignment 百分比 )
  • 智能激活工具KMS_VL_ALL_AIO:三步告别Windows和Office激活烦恼
  • 终极指南:三步将网页小说永久保存为EPUB电子书
  • 匠心守护:2026万国官方售后全链路服务实录及网点分布 - 速递信息
  • 使用 hionic 将 Web 应用部署到鸿蒙PC平台
  • 效率提升:用快马平台为wsl环境定制自动化开发脚本工具
  • 远恒集团荣登“2026中国品牌500强”,并斩获“品牌强国黑马榜·十大投资价值品牌”
  • 石家庄市地区2026年权威甄选:黄金回收白银铂金回收优质门店 TOP5 含详细电话 - 诚金汇钻回收公司
  • OpenRocket模型火箭设计软件:从零开始掌握火箭仿真与优化
  • 保姆级教程:在Ubuntu 20.04上用Docker容器搞定PX4开发环境(附Java报错解决)
  • 企业级AI工具链部署失败率下降83%的关键配置(2024智能设置白皮书首发)
  • 零基础入门:用快马生成你的第一份vivado图文安装指南
  • 产品寿命预测实战:手把手用Python+Weibull模型评估5000次循环后的可靠性(附双侧/单侧置信区间代码)