SpringCloud微服务架构使用心得

不积跬步,无以至千里;不积小流,无以成江海


前言

最近通过使用SpringCloud微服务架构,记录一些心得。


  • 由于spring cloud是基于spring boot构建的,所以在引入springcloud依赖时需要考虑与spring boot的版本兼容性问题。例如,spring boot使用的是2.2.x或2.3.x,则springcloud版本号需要选择Hoxton。

  • 创建注册中心Eureka服务,需要注意的是注册中心默认注销微服务实例的时间为90秒,当网络故障时,虽然无法进行正常通信,但是微服务本身其实是健康的,就不应该注销这个微服务,此时就应该使用注册中心的自我保护模式来应对网络的异常:eureka.server.enable-self-preservation=true

  • 若服务器存在多个网卡,但是只有一个网卡可以被访问,那么需要配置
    a) 忽略指定名称的网卡:inetutils:ignored-interfaces
    b) 指定使用的网络地址:inetutils:preferredNetworks
    c) 只使用站点本地地址:inetutils:useOnlySiteLocalInterfaces: true

  • 创建网关gateway服务,在gateway中配置uri配置有三种方式,包括
    a) websocket方式:uri:ws://localhost:1111
    b) http方式:uri: http:// localhost:1111
    c) 注册中心中服务名方式:uri: lb://server-name
    在实际项目中,还用到了filters:StripPrefix=1过滤器截取路径个数的功能,因为在nginx中加入了/api这部分路径,而在微服务实例的真实路径中是不存在/api这个路径的,所以需要去掉这部分路径才是访问后端接口的真实地址。

  • maven打包
    a) 由于在实际项目中会建立无启动类的公共模块,若不注意在pom文件中加入了maven打包插件,而maven打包插件在项目打包时会去寻找main入口,此时找不到main入口就会导致打包失败,所以需要注意:不要在无启动类的公共模块中加入maven打包插件。
    b) 特别的,需要在所有具有子模块的父模块中的pom文件里加入<packaging>pom</packaging>,这里我的理解是,父模块只是起到了聚合工程和传递依赖的作用,它本身不需要编译。若不作声明,则packaging默认为jar,那么此时也会造成打包失败。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

予润

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值