安装Nacos这个就不详细介绍了如果有疑问或描述不准确,欢迎留言,我会尽力解答首先,我们来看依赖,这里我使用的是gradleNacos将discovery和config分为boot和cloud,具体用途暂时不清楚,通常我们使用boot,而对于网关,我们使用cloud下面是依赖引入的部分接下来,编写application.yml不配置Group的原因是,一旦配置了,服务和配置引用都将指向同Group下的服务例如,如果网关的discovery.group组是DEV,那么服务也只会指向DEV@Service如果另一个服务默认组是DEFAULT_GROUP,那么网关依然会指向DEV@Service,而不是DEFAULT_GROUP@Service这就导致了不同Group的服务无法互通,无法使用---------注意:不要使用默认的public命名空间,否则将无法获取到配置因此,请创建一个自己的命名空间Nacos新建配置配置的Data ID需要与网关的application.name=Service-Gateway属性保持一致,配置格式也是jsonNacos配置文件内容我发现其他博主将根元素设置为JSONArray,这样会导致Nacos配置同步时出现错误,因为Nacos无法解析JSONArray,这是不正确的。根节点应该是JSONObject,否则会导致错误parse data from Nacos error,dataId:Service-Gateway,data:你的配置文件内容正确的配置文件格式如下其中属性对应如下id:没有特定含义,只要不重复即可uri:路由目标,为以http://开始的完整域名+端口,如果以lb://开头,则指向同服务下的指定服务名,例如我的另一个服务名是Plugin-Service,因此写为"uri":"lb://Plugin-Service"predicates:路径匹配条件,args中写多个key:value代表匹配多个路径,key任意,value写路径filters:过滤器,这里我写了一个令牌桶限流,仅用于测试,可以不写然后发布配置,回来继续编写路由代码ServiceApiApplication编写Nacos的ConfigService的BeanGatewayConfigServiceConfig接着编写用来添加和更新路由规则的类DynamicRouteManager接着编写配置文件监听器NacosDynamicRouteListener@RefreshScop这个注解不能少,否则可能导致路由管理类的publisher.publishEvent(new RefreshRoutesEvent(this));卡住..然后是令牌桶限流IpAddressKeyResolver大致就是这样,启动一下项目,如果没有报错,应该就是成功了查看主动打印的日志,应该是可以了然后查看nacos服务列表,有网关的服务了接下来启动我们的Plugin-Service服务,可以看到也注册到nacos了记住,正式环境中,服务要比网关先上线..然后还记得配置文件中的uri吗?lb表示路由到此服务名,对应的接下来访问Plugin-Service的接口进行测试,通过网关的端口访问可以看到已经正常通过网关访问踩了不少坑,特此记录