SpringCloud微服务架构使用心得

SpringCloud微服务架构使用心得,第1张

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


前言

最近通过使用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文件里加入pom,这里我的理解是,父模块只是起到了聚合工程和传递依赖的作用,它本身不需要编译。若不作声明,则packaging默认为jar,那么此时也会造成打包失败。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/887305.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存