前言: 最近,我正在学习微服务相关知识,阅读黑马相关课程Gateway总结了一些知识,希望能帮助所有年轻人加深印象。 如果文章有什么需要改进的地方,请给大佬更多的建议 小威首先感谢大家的支持。
??个人主页:小威想向诸佬学习 ??大家好,我是小威,一个想和大家一起进步的男人 现状:目前大二,在满意的公司实习
??如果老板在准备面试,可以用实习前用的刷神器。 ??欢迎:这是CSDN,欢迎来到我的博客,我亲爱的老板
牛客部分使用反馈,个人感觉很好,帮我找到了最喜欢的公司,我希望你的合作伙伴也能通过它改善很多???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
文章目录
- ??网关介绍
- ??网关实现
- ??Gateway的使用
- ??网关入门总结
- ??断言工厂
??网关介绍
网关(Gateway)又称连接器、协议转换器。默认情况下,网关是网络层以上最复杂的网络互连设备,仅用于两种不同高层协议的网络互连。网关的结构也类似于路由器,区别在于互连层。网关可用于广域网或局域网。
网关是一种计算机系统或设备,作为转换的重要任务。网关是两个系统之间的翻译器,用于不同的通信协议、数据格式或语言,甚至系统结构完全不同。与网桥只是简单地传达信息不同,网关应重新包装收到的信息,以满足目的系统的需要。–应用层。
综上所述:
网关(Gateway)它是连接两个使用不同协议的网络段的设备。 网关的作用是翻译和转换两个网段中使用不同传输协议的数据。
。
??网关实现
在SpringCloud实现中网关主要有两种:gateway和zuul
Zuul是基于Servlet实现属于阻塞编程。SpringCloudGateway则是基于Spring5中提供的WebFlux,实现响应编程,性能更好。
??Gateway的使用
Gateway网关的使用步骤如下:
- 创建SpringBoot工程gateway,引入网关依赖
- 编写启动类
- 编写基本配置和路由规则
- 启动网关服务测试
第一步,引入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!--nacos的服务依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
第二步,写启动类
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplicationpublic class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
第三步,在ymal中编写配置和规则
server: port: 10010 # 网关端口 spring: application: name: gateway # 服务的名称 cloud: nacos: server-addr: localhost:8848 # nacos的地址 gateway: routes: # 网关路由配置 - id: user-service # 路由id,
自定义,只要唯一即可 # uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址 uri: lb://userservice # 路由的目标地址 lb就是负载均衡,后面跟服务名称 predicates: # 路由断言,也就是判断请求是否符合路由规则的条件 - Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求
我们将符合Path
规则的一切请求,都代理到 uri
参数指定的地址。
🍄网关入门小结
总结:
网关搭建步骤:
-
创建项目,引入nacos服务发现和gateway依赖
-
配置application.yml,包括服务基本信息、nacos地址、路由
路由配置包括:
-
路由id:路由的唯一标示
-
路由目标(uri):路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡
-
路由断言(predicates):判断路由的规则,
-
路由过滤器(filters):对请求或响应做处理
🍻断言工厂
Spring Cloud Gateway 内置了许多路由断言工厂,可以通过配置的方式直接使用,也可以组合使用多个路由断言工厂。
例如: Path 路由断言工厂 Path 路由断言工厂接收一个参数,根据 Path 定义好的规则来判断访问的 URI 是否匹配。
```yaml
spring:
cloud:
gateway:
routes:
- id: host_route
uri: http://example.test
predicates:
- Path=/blog/detail/{
segment}
Method 路由断言工厂 Method 路由断言工厂接收一个参数,即要匹配的 HTTP 方法。
spring:
cloud:
gateway:
routes:
- id: method_route
uri: http://baidu.com
predicates:
- Method=GET
Cookie路由断言工厂 通过cookie和一个正则表达式作为断言条件的路由工厂,只要满足该条件就可以访问到该地址。
spring:
cloud:
gateway:
routes:
- id: between_route # 路由 Id,唯一
uri: https://example.org # 目标 URI, 路由到微服务的地址
predicates:
- Cookie=chocolate, ch.p # 使用Cookie路由断言工厂,配置cookie,正则表达式(可以没有)
配置解读:此路由将匹配具有一个名为chocolate的cookie的请求,该cookie的值匹配ch.p正则表达式
当然断言工厂有十几个,我们只需要掌握Path这种路由工程就可以了。 也有一些其他的工厂,我们下篇文章讨论。
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论🍻 最后再次给大家安利一波牛客,点击刷题神器 注册牛客,快来和博主一起刷题吧嘿嘿嘿👏 再次感谢各位小伙伴儿们的支持🤞