SpringBoot+Nacos+Gateway实现一个端口调用多个不同服务
目录:
1.SpringBoot+Nacos+OpenFeign实现服务的注册、发现、远程调用
2.SpringBoot+Nacos+Gateway实现一个端口调用多个不同服务
3.sentinel环境搭建及集合SpringBoot简单使用
一、概述(需要结合上一篇进行观看)
上一篇博客实现了Nacos+openFeign实现了服务之间远程接口的调用。这一篇用网关整合多个服务,实现用户(客户端、网页、小程序、PC端)调用接口的统一化。举个例子来说:
假如我们有两个服务:生产者服务和消费者服务。每个服务都有自己的ip和端口号。如果用户想要调用这两个服务的接口,势必要单独的去调用对应的服务(即通过ip+端口的形式去调用),此时看起来用户调用也不复杂,只需要维护两个ip地址和端口就行了。
但是如果你有100个服务,此时怎么办,单独维护的成本就太高了。所以网关服务应运而生,它就是来统一维护各个服务的。统一整合后用户只需要调用网关的ip和端口,然后加上对应的接口地址即可自动调用对应的服务。非常方便。下面就去做一个简单的案例去集成它。
二、实现步骤
1.在pom.xml中引入网关服务
<!-- 引入网关 gateway--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <version>2.2.9.RELEASE</version> </dependency>
2.在application.xml和bootstrap.xml中配置服务的发现和注册,并在application.xml中配置网关的id和路由
server: port: 8003 spring: application: name: tony-gateway cloud: nacos: discovery: server-addr: 127.0.0.1:8848 group: tony-group gateway: discovery: locator: enabled: true lower-case-service-id: true routes: #网关的路由 - id: SERVICE-PROVIDER #可以随意写,但是最好和自己的服务名字对上 uri: lb://tony-provider #lb代表负载均衡,后面是对对应服务的服务名称 order: 1 #优先级 predicates: - Path=/user/** #匹配生产者路径,此处可以配置多个 - id: SERVICE-CONSUMER uri: lb://tony-consumer order: 1 predicates: - Path=/consumer/** #匹配消费者路径
spring: application: name: tony-gateway cloud: nacos: config: server-addr: 127.0.0.1:8848
网关其实也是一个服务,如下图:
最后测试一下执行结果:ps:其实本质上就是之前调用多个服务需要多个ip地址+端口,现在加上网关后调用多个服务只需要一个ip地址+端口号即可。
1.消费者服务的调用结果(端口是8002)
2.生产者服务的调用结果(端口是8001)
3.用网关的调用结果(端口是8003)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探