当前位置:网站首页>GateWay实现负载均衡
GateWay实现负载均衡
2022-07-30 20:14:00 【iijik55】
GateWay实现负载均衡
通过GateWay实现负载均衡的两种方式
自动负载均衡
首先看一下网关服务9999的yml配置:
gateway.discovery.locator.enabled: true #开启自动路由功能
routes中的uri其实最后是不需要服务名称的,这个位置其实只需要指定的localhost:9001即可
server:
port: 9999
spring:
application:
name: cloud-gateway-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true #开启自动路由功能,根据服务名称自动创建routes
routes: # 路由
- id: nacos-provider #路由ID,没有固定要求,但是要保证唯一,建议配合服务名
uri: http://localhost:9001/nacos-provider # 匹配提供服务的路由地址
predicates: # 断言
- Path=/th/** # 断言,路径相匹配进行路由
所以这个位置可以把当前的配置优化为以下情况,它是一样可以启动的,可以进行测试启动9001和网关9999,通过网关来访问"localhost:9999/th/**"
server:
port: 9999
spring:
application:
name: cloud-gateway-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
routes: # 路由
- id: nacos-provider #路由ID,没有固定要求,但是要保证唯一,建议配合服务名
uri: http://localhost:9001 # 匹配提供服务的路由地址
predicates: # 断言
- Path=/th/** # 断言,路径相匹配进行路由
GateWay还提供了和Zuul类似的自动路由规则,具体配置如下:
discovery.locator.enabled: true #这个配置默认为false,但是如果为true,就是开启了通过serviceId转发到具体的服务实例。“localhost:9999/ServiceID/th/**”
在配置好这些以后,我们可以直接通过服务名称来进行访问Nacos中注册的服务和对应的接口
这个位置我们为了测试可以启动2个微服务9001、9002
GateWay在开启了自动路由以后,还自带负载均衡
server:
port: 9999
spring:
application:
name: cloud-gateway-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true #是否与服务发现组件进行结合,通过serviceId转发到具体的服务实例。默认为false,设为true便开启通过服务中心的自动根据 serviceId 创建路由的功能。
9002和9001保持一致,Controller保持一致,负载均衡测试
package com.tianhao.cloudalibabanacos9002.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/th")
public class DemoController {
@Value("${server.port}")
private String serverPort;
@GetMapping(value = "/get")
public String getServerPort(){
return "库存-1:"+serverPort;
}
@GetMapping(value = "custom")
public String customTest(){
return "测试网关配置类~~custom";
}
}
测试结果:
手动负载均衡
在以上的配置中,其实是有问题的,问题在于当前的服务名称暴露,并且太过于灵活,那么如果想解决的话,其实可以进行手动配置。
具体配置如下:
server:
port: 9999
spring:
application:
name: cloud-gateway-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true #开启自动路由功能(此时可以关闭)
routes: # 路由
- id: nacos-provider #路由ID,没有固定要求,但是要保证唯一,建议配合服务名
uri: lb://nacos-provider # 匹配提供服务的路由地址
predicates: # 断言
- Path=/th/**
测试
我们现在开启9001/9002两个服务和9999网关服务,然后此时我们可以通过网关去访问:http://localhost:9999/th/get
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- el-input 只能输入整数(包括正数、负数、0)或者只能输入整数(包括正数、负数、0)和小数
- Linux下安装Mysql5.7,超详细完整教程,以及云mysql连接
- 明解C语言第六章习题
- MySQL数据库之JDBC编程
- 365天挑战LeetCode1000题——Day 044 按公因数计算最大组件大小 并查集
- PHP低代码开发平台 V5.0.7新版发布
- Multi-threaded mutex application RAII mechanism
- Install MySQL tutorial under Linux
- 基于人脸的常见表情识别(2)——数据获取与整理
- MySQL database --- Addition, deletion, modification and query of MySQL tables (advanced)
猜你喜欢
18.客户端会话技术Cookie
6.3有定型性 第七章
Cesium loads offline maps and offline terrain
vookloop函数怎么用?vlookup函数的使用方法介绍
To the operation of the int variable assignment is atom?
Install Mysql5.7 under Linux, super detailed and complete tutorial, and cloud mysql connection
银行数据资产转换能力弱?思迈特软件助力解决银行困境
历史上的今天:Win10 七周年;微软和雅虎的搜索协议;微软发行 NT 4.0
【考研词汇训练营】Day18 —— amount,max,consider,account,actual,eliminate,letter,significant,embarrass,collapse
一文2500字手把手教你配置Jenkins自动化邮件通知
随机推荐
ERROR 1045 (28000) Access denied for user 'root'@'localhost'Solution
Swift简介
HarmonyOS Notes ------------- (3)
OSS simply upload pictures
都在说软件测试没前途,饱和了?为何每年还会增加40万测试员?
第03章 用户和权限管理【1.MySQL架构篇】【MySQL高级】
[Ask] SQL statement to calculate the sum of column 2 by deduplicating column 1?
[c语言]二维数组动态分配内存
想要写出好的测试用例,先要学会测试设计
基于人脸的常见表情识别——模型搭建、训练与测试
MySQL——几种常见的嵌套查询
如何解决gedit 深色模式下高亮文本不可见?
MySQL database master-slave configuration
WPS怎么独立窗口显示?wps单独窗口显示怎么操作?
el-input 只能输入整数(包括正数、负数、0)或者只能输入整数(包括正数、负数、0)和小数
如何优化OpenSumi终端性能?
Office365无法打开word文档怎么办?Office365无法打开word文档的解决方法
ceph的部署练习
To the operation of the int variable assignment is atom?
Ordinary int main(){} does not write return 0; what will happen?