基于网关实现 Spring Cloud 服务发现与路由
赵炳堃(秉钧)
发布时间 2023-08-31
基于 Higress 网关实现 Spring Cloud 服务发现与路由
使用 Nacos 做注册中心
应用配置具体参考 Nacos-Spring-Cloud-快速开始 进行应用配置
不指定命名空间
如果 application.properties
中没有指定 Nacos 命名空间,例如:
则 Higress 的 McpBridge 中亦无需指定命名空间:
配置 Ingress 转发到这个服务(假设 /api 前缀的路由都转发给这个服务)需要做如下配置:
注意这里通过注解 higress.io/destination
指定路由最终要转发到的目标服务。
对于 Nacos 来源的服务,这里的目标服务格式为:“服务名称.服务分组.命名空间 ID.nacos”,注意这里需要遵循 DNS 域名格式,因此服务分组中的下划线 ’_’ 被转换成了横杠 ’-‘。命名空间未指定时,这里默认值为 “public”。
指定命名空间、服务分组等信息
如果 application.properties
中指定了 Nacos 命名空间,服务分组等信息,例如:
则 Higress 的 McpBridge 做相应配置即可
配置 Ingress 转发到这个服务(假设 /api 前缀的路由都转发给这个服务)需要做如下配置:
使用 ZooKeeper 做注册中心
使用 Zookeeper 做注册中心时,注意必须配置 spring.cloud.zookeeper.discovery.preferIpAddress=true
,否则注册到注册中心中的地址为主机名称,而不是 IP。
不指定注册根路径
如果 application.properties
中未指定注册根路径信息,例如:
则 Higress 的 McpBridge 中亦无需指定 zkServicePath :
配置 Ingress 转发到这个服务(假设 /api 前缀的路由都转发给这个服务)需要做如下配置:
注意对于 ZooKeeper 来源的服务,这里的目标服务格式为:“服务名称.服务注册根路径.zookeeper”,Spring Cloud 在未指定服务注册根路径的情况下,根路径默认是”services”
指定注册根路径
如果 application.properties
中指定了注册根路径信息,例如:
则 Higress 的 McpBridge 中亦需指定 zkServicePath :
配置 Ingress 转发到这个服务(假设 /api 前缀的路由都转发给这个服务)需要做如下配置:
注意如果 spring.cloud.zookeeper.discovery.root
中包含了下划线,需要被替换为横杠,因为目标服务整体格式需要满足 DNS 域名规范。