主页 > 软件开发  > 

springcloud微服务部署(2025年)第三章:Nacos、LoadBalancer、GateWay、Ri

springcloud微服务部署(2025年)第三章:Nacos、LoadBalancer、GateWay、Ri

【spring cloud 3.0微服务部署】第三章:Nacos、LoadBalancer、GateWay、Ribbon集成之网关Gateway 链接第一章:Nacos、LoadBalancer、GateWay、Ribbon集成之Nacos部署第二章:Nacos、LoadBalancer、GateWay、Ribbon集成之负载均衡LoadBalancer部署第三章:Nacos、LoadBalancer、GateWay、Ribbon集成之网关Gateway部署第四章:Nacos、LoadBalancer、GateWay、Ribbon集成之跨服务调用ribbon查看源码 正文新建二级模块,命名为MyGateways,这里存放的是所有的网关接口,比如说app、小程序gateway配置文件运行ApiGatewayApplication.java负载均衡测试

链接 第一章:Nacos、LoadBalancer、GateWay、Ribbon集成之Nacos部署 第二章:Nacos、LoadBalancer、GateWay、Ribbon集成之负载均衡LoadBalancer部署 第三章:Nacos、LoadBalancer、GateWay、Ribbon集成之网关Gateway部署 第四章:Nacos、LoadBalancer、GateWay、Ribbon集成之跨服务调用ribbon 查看源码 正文

接前章

新建二级模块,命名为MyGateways,这里存放的是所有的网关接口,比如说app、小程序

删除src目录,pom.xml默认在MyGateways模块下新建一个子模块,这里命名为mygateway-app。

代码如下,引入gateway、loadbalancer 、nacos、spring boot

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:// .w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.que5</groupId> <artifactId>MyCloud</artifactId> <version>1.0-SNAPSHOT</version> <relativePath>../../pom.xml</relativePath> </parent> <artifactId>mygateway-app</artifactId> <name>Archetype - mygateway-app</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-loadbalancer</artifactId> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> gateway配置文件 新建application.yml,这里预留websocket配置项,以后再讨论websocket集群 application: name: mygateway-app app: site: ip: nacos服务器ip server: port: 8080 servlet: encoding: charset: UTF-8 enabled: true force: true spring: application: name: mygateway-app cloud: loadbalancer: nacos: enabled: true gateway: discovery: locator: enabled: true lower-case-service-id: true httpclient: connect-timeout: 50000 response-timeout: 50000 routes: - id: myapp1 uri: lb://myapp1 predicates: - Path=/myapp1/** filters: - StripPrefix=1 - id: myapp2 uri: lb://myapp2 predicates: - Path=/myapp2/** filters: - StripPrefix=1 - id: websocket uri: grayLb://websocket predicates: - Path=/websocket/** filters: - StripPrefix=1 nacos: config: import-check: enabled: false server-addr: ${app.site.ip}:8848 file-extension: yaml discovery: group: QUE5 server-addr: ${app.site.ip}:8848 username: nacos password: nacos密码 management: endpoints: web: exposure: include: "*" security: ignore: whites: - /websocket/websocket/** 新建启动类MyGatewayAppApplication.java package com.que5; import org.springframework.boot.Banner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.env.Environment; /** * @author zhouminghua * @version 1.0 * @date 2025-2-15 09:28:57 * @description 启动类 * @site .que5 */ @SpringBootApplication @EnableDiscoveryClient public class MyGatewayAppApplication { public static void main(String[] args) { SpringApplication app = new SpringApplication(MyGatewayAppApplication.class); ConfigurableApplicationContext configurableApplicationContext = app.run(args); Environment env = configurableApplicationContext.getEnvironment(); app.setBannerMode(Banner.Mode.CONSOLE); } } 运行ApiGatewayApplication.java

-打开nacos查看服务列表,成功,详情可以查看具体的端口信息等~

-打开浏览器,输入http://localhost:8080/myapp1/cloud/hello 、 http://localhost:8080/myapp2/cloud/hello

负载均衡测试 微服务的核心是什么,比如说同时运行几个微服务myapp1,访问网关gateway会按照策略,访问其中一个myapp1,减少单个服务部署压力,从而达到负载均衡的作用,不再赘述。这里以myapp1为例,先启动MyApp1Application.java,idea编辑器不能运行两个同名,所以可以复制新建MyApp1Application2.java启动:如图 复制新建MyApp1Application2.java,删除里面的RestTemplate配置 右键MyApp1Application2.java -更多运行、调试-修改运行配置

- 填写端口

--server.port=7003

查看nacos服务列表,两个实例 查看详情,两个端口都已注册,意味着同一个微服务项目部署了两个。 接着打开浏览器,访问http://localhost:8080/myapp1/cloud/hello,查看会发现返回端口有变化,成功!

结语: 网关的作用类似nginx路由,只不过是根据服务名来发现、注册、调用。

标签:

springcloud微服务部署(2025年)第三章:Nacos、LoadBalancer、GateWay、Ri由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“springcloud微服务部署(2025年)第三章:Nacos、LoadBalancer、GateWay、Ri