场景:
1、SpringCloud开发,本地启动多个微服务系统开销大
2、同事A启动User服务,同事B也在本地启动User服务。那么两个服务都注册到Nacos上,前端同事调试访问A的User服务,很容易出现访问到同事B启动的User服务(导致开发混乱,无法debug到自己的服务),还要考虑到如果有同事在本地debug服务,也会影响到别的同事。
解决方案:
1、在公共机器上启动Nacos服务,MySQL,Redis等公共服务,共同使用即可减少本地开销
2、同事A,同事B,都在本地启动Gateway服务,使用公共机器的Nacos服务(例如10.21.81.26:8848)本地gateway的配置一定要配置ribbon。因为负载均衡,会导致同事A想要访问自己本地启动的User服务,却访问到了同事B启动的User服务,又或者服务器上的User服务(这样无法开发)所以一定要做一些规则,负载均衡本地优先的规则。
效果:只需要本地启动gateway和User服务。由于给gateway里的ribbon配置了优先本地,会先去调用本地的User服务,而不是公共机器或者其他同事的。(就算Feign调用,也是走网关,只要走了本地的网关,就是优先本地)
原理:
Gateway要获取Nacos下发的ip地址和服务名,做动态路由。
Gateway要集成ribbon,做负载均衡。
ribbon还得配置本地优先策略,以免服务冲突。
ip地址要在同一网段,否则无法通讯。