黑马程序员2024最新SpringCloud微服务开发与实战 学习心得、踩坑与Bug记录(Day3)
黑马程序员2024最新SpringCloud微服务开发与实战:学习心得、踩坑与Bug记录(Day3)
今天是跟随“黑马程序员”2024最新SpringCloud微服务课程学习的第三天,主要聚焦于服务的注册与发现(Eureka/Nacos)的深入配置、服务间通信(Feign/RestTemplate)的实战,以及初步接触服务熔断与降级(Hystrix/Sentinel)。以下是我个人的学习心得、踩过的“坑”以及遇到的Bug记录,希望能为同样在“微服务”征途上的你提供一份参考。
一、核心学习内容与心得
- 服务注册中心的对比与选择:课程详细对比了Eureka和Nacos。我的心得是,对于新项目,强烈建议直接上手Nacos。它不仅作为注册中心更强大(支持CP+AP模式,健康检查更灵活),还整合了配置中心功能,一站式解决微服务的两大核心诉求。今天在配置Nacos集群时,深刻体会到了其配置管理的便捷性,动态刷新功能避免了重启服务的麻烦。
- OpenFeign的声明式服务调用:这是今天体验最爽的部分。通过简单的接口定义和注解,就能像调用本地方法一样进行远程HTTP调用,极大地简化了代码。心得是:务必熟练掌握Feign的日志配置、自定义拦截器以及超时控制。默认的日志级别是NONE,不开启的话调试会非常困难;在复杂的微服务链路中,为不同的下游服务设置合理的超时时间至关重要。
- 负载均衡器Ribbon:虽然Spring Cloud已经用LoadBalancer作为默认负载均衡器,但理解Ribbon的原理(如轮询、随机等规则)依然很有必要。今天手动配置了基于响应时间的权重规则,感受到微服务调度的灵活性。
二、踩坑与Bug记录
坑1:Nacos服务注册IP地址错误
现象:服务实例在Nacos控制台上注册的IP是Docker容器内网IP(如172.17.0.x),导致其他服务无法通过该IP访问。
原因:服务部署在Docker容器内,默认注册了容器内部的IP。
* 解决:在服务的application.yml中显式配置Nacos客户端注册的IP和端口。
`yaml
spring:
cloud:
nacos:
discovery:
ip: 你的宿主机IP(或公网IP)
port: 你的服务端口
`
坑2:Feign调用时出现“Load balancer does not have available server”错误
现象:服务A通过Feign调用服务B时,报错提示没有可用的服务实例。
原因排查:
1. 检查服务B是否成功注册到Nacos/Eureka。
- 检查服务A的依赖中是否引入了
spring-cloud-starter-loadbalancer(新版本)或正确配置了Ribbon(旧版本)。
- 关键发现:服务B的
spring.application.name在注册中心和Feign客户端@FeignClient注解中指定的服务名大小写不一致。Nacos默认服务名是保留大小写的。
- 解决:确保服务名完全一致(包括大小写)。最佳实践是统一使用小写加连字符(如
user-service)。
坑3:Hystrix超时配置与Ribbon超时配置的“组合坑”
现象:设置了Hystrix命令超时为3秒,但Feign调用在1秒后就超时熔断了。
原因:Feign整合了Hibrix和Ribbon,其超时时间受多层控制。默认情况下,Ribbon的超时时间(如ReadTimeout)可能小于Hystrix的超时时间。当Ribbon超时后,会触发Hystrix熔断。
* 解决:需要统一配置,确保Hystrix的超时时间大于 (Ribbon的ConnectTimeout + ReadTimeout)。在application.yml中精细配置:
`yaml
feign:
client:
config:
default:
connectTimeout: 5000 # 连接超时
readTimeout: 10000 # 读取超时
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 15000 # Hystrix超时应大于上面两个之和
`
三、与明日计划
Day3的学习让我对微服务间如何“找到彼此”并“可靠对话”有了更扎实的理解。Nacos+OpenFeign的组合极大地提升了开发效率,但与之相伴的配置细节和调优点也更多,一个字母的差错都可能导致服务调用失败。
明日计划(Day4)将深入服务容错的核心:Sentinel的流量控制、熔断降级规则持久化,并开始搭建API网关Gateway,实现统一的入口、路由和过滤。预计又会是一个充满挑战和收获的一天。
(本文为【微锦网络】个人学习记录,内容基于黑马程序员公开课程资料与实践,仅供参考交流。)
如若转载,请注明出处:http://www.lipstickyy.com/product/29.html
更新时间:2026-04-16 00:33:38