个人GitHub地址:
在使用Spring Cloud的过程中,难免会遇到一些问题。所以对Spring Cloud的常用问题做一些总结。
五、Spring Cloud 定位问题思路总结
根据市场使用的反馈情况来看,Spring Cloud 进入 Camden 时代后,已经比较稳定。一般来说,问题都不是 Spring Cloud 本身的 Bug 导致。
5.1 排查配置问题
排查配置有无问题:
· YAML 缩进是否正确
一般新手会发现 Spring Cloud 应用程序到自己本地就无法正常启动了,或配置无法正常加载。有时候协助解决的时候,发现仅仅是 YAML 配置文件缩进不正确。类似这样的问题,应在编码的过程中严格规避。
· 配置属性是否正确
配置属性写错,也是很常见的问题。别看该问题低级,但不少初学者都会遇到这类问题(尤其是当 IDE 不自动提示或给出警告时,应格外注意)。
· 配置属性的位置是否正确
配置属性位置不正确可能会导致应用的不正常,比如:
-- 应当配置在 Eureka Client 项目中的属性,配置在了 Eureka Server 项目上
-- 应当写在bootstrap.yml 中的属性,写在了 application.yml 中
-- 应当写在 application.yml 的属性,写在了 bootstrap.yml 中
5.2 排查环境问题
如果确认配置无误,即可考虑运行环境是否存在问题。
· 环境变量
例如Java环境变量、Maven 环境变量以及 Docker 容器环境变量等。当应用无法正常工作时,应该确保环境变量配置。
· 依赖下载是否完整
我在带新入职的一些新手时,他们遇到应用无法正常启动的问题,最终发现仅仅是依赖没有下载完整所致。因此,建议在启动应用之前,使用如下命令打包,从而确认依赖的完整性。
mvn clean package
· 网络问题
微服务之间通过网络保持通信,因此,网络常常是排查问题的关键。当问题发生时,可优先排查网络问题。
5.3 排查代码问题
如经过以上步骤,依然没有定位到 Spring Cloud 的问题,那么可能时编写的代码出了问题。很多时候,常常因为少了某个注解,或是依赖缺失,而导致了各种异常。
所以合理的日志级别,会对问题的定位有奇效。
5.4 排查 Spring Cloud 自身的问题
如果确定不是自身代码问题,就可 Debug 一下 Spring Cloud 的代码了。同时,可在 GitHub 等平台给 Spring Cloud 项目组提交 Issue , 然后参考官方文档回复,尝试规避相应问题。如问题无法规避,就需要 Spring Cloud 进行扩展,或者修复 Spring Cloud 的 Bug , 从而满足需求。此时,请不要忘记在 Spring Cloud 的 GitHub 上 Pull Request , 协助官方改进 Spring Cloud, 让 Spring Cloud 更加完善稳定。
Tips: 可参考的资源(在这些地方,均有官方人员参与,可帮助我们迅速解决问题)
1)各个项目自身的GitHub,例如 Eureka 的GitHub :
2)Spring Cloud 对应项目的 GitHub ,例如 Eureka 项目在 Spring Cloud Netflix 中:
3)Spring Cloud 的 StackOverflow :
4)Spring Cloud 的 Gitter :
5)Spring Cloud 中国社区:
· 关于“Eureka常见问题”可以参考,我之前的文章《微服务开发架构——Spring Cloud常见问题与总结<一>Eureka常见问题》: ;
· 关于“Hystrix/Feign 整合Hystrix后首次请求失败”可以参考,我之前的文章《微服务开发架构——Spring Cloud常见问题与总结<二>Hystrix/Feign 整合Hystrix后首次请求失败》:;
· 关于 “Turbine 聚合数据不完整” 可以参考,我之前的文章《微服务开发架构——Spring Cloud常见问题与总结<三>Turbine 聚合数据不完整》:;
· 关于“Spring Cloud 各组件配置属性”可以参考,我之前的文章《微服务开发架构——Spring Cloud常见问题与总结<四>Spring Cloud 各组件配置属性》: 。
本文为博主原创文章,转载请注明出处!