不积跬步,无以至千里;不积小流,无以成江海
前言
最近通过使用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默认为jar,那么此时也会造成打包失败。pom
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)