当前位置:网站首页>Gateway-88
Gateway-88
2022-07-01 08:19:00 【Butterfly clothes_ crazy】
Dynamic up and down line : To send a request, you need to know the address of the goods and services , If the product server has 1,2,3 Number server ,1 Number
After dropping the line , It has to be changed, So we need toGateway dynamically manages, He can sense whether a service is online or offline in real time from the registry . The gateway can always help us route requests to the specified location correctly 【 Go through the gateway first , The gateway routes to the service provider 】
The second demand :
authentication 、 monitor; If every service does , There will be a lot of repeated development

The client requests the gateway first , And then the gateway transfers it to other services


Performance comparison
Intercept : The request should also be added with query permission , See if the user has access to the request , You also need gateways .
So we use spring cloud Of gateway Components do gateway functions .
The gateway is the gateway to request traffic , Common functions include Routing and forwarding , Permission to check , Current limiting control etc. .springcloud gateway To replace the zuul gateway .
https://spring.io/projects/spring-cloud-gateway
Reference manual :https://cloud.spring.io/spring-cloud-gateway/2.2.x/reference/html/
Three core concepts :
Route: The basic building block of the gateway. It is defined by an ID, a destination URI, a collection of predicates Assertion , and a collection of filters. A route is matched if the aggregate predicate is true. Send a request to the gateway , The gateway routes the request to the specified service . Routing has id, Destination uri, A collection of assertions , Match the assertion to reach the specified location ,( The route has an identifier id, Between routes by id To distinguish between . A collection of assertions :, A collection of filters :, As long as the route matches the assertion , The assertion is true , The route matches , Can reach the designated position , Request for issue API gateway , Whether to route to one place or not , We have to have a conditional judgment , This conditional judgment is assertion )
Predicate Assertion : This is a Java 8 Function Predicate. The input type is a Spring Framework ServerWebExchange. This lets you match on anything from the HTTP request, such as headers or parameters. Namely java8 Assertion function in , Match any information in the current request , Including requesting first class . Which service is routed according to the request header
Filter: These are instances of Spring Framework GatewayFilter that have been constructed with a specific factory. Here, you can modify requests and responses before or after sending the downstream request. Filter requests and responses can be modified .
The client sends the request to the server . There is a gateway in the middle . Give it to the mapper first , If you can handle it, give it to handler Handle , Then give it to a series of filer, Then give it to the specified service , Then return to the client .

To sum up : Request arrival
gateway,Gateway assertion, Whether the request conforms to aThe rules, If meet , Just follow this routing rule , Route to the specified place , The journey to the designated place requires a series ofFilter. All the difficulties : How do we define routing rules , How do assertions determine success or failure , How to configure , What to use filter I have to be clear in my heart
The function of assertion : Satisfy the assertion condition 3, Just assign to the route 2
There are many assertions .
spring:
cloud:
gateway:
routes:
- id: after_route
uri: https://example.org
predicates:
- Cookie=mycookie,mycookievalue
- Representative array , You can set Cookie The content such as . Only the assertion succeeds , To the specified address .
spring:
cloud:
gateway:
routes:
- id: after_route
uri: https://example.org
predicates:
- name: Cookie
args:
name: mycookie
regexp: mycookievalue
Create microservices , Use initilizer,Group:com.atguigu.gulimall,Artifact: gulimall-gateway,package:com.atguigu.gulimall.gateway. Search for
gatewayChoose .
pom.xml Riga common rely on , modify jdk edition ,
stay
gatewayStart the registration service discovery in the service@EnableDiscoveryClient, To configurenacosAddress of Registration Centerapplicaion.properties. such gateway Also registered to nacos in , Other services can be found nacos, The gateway can also pass through nacos Find other services
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=gulimall-gateway
server.port=88
bootstrap.properties Fill in nacos Configure center address
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=bfa85f10-1a9a-460c-a7dc-efa961b45cc1
This project is in nacos Service name in
spring:
application:
name: gulimall-gateway
Go again nacos Create a namespace in gateway( Projects are separated from projects by namespaces ), Then create a file in the namespace guilmall-gateway.yml
Create... In the project application.yml, Forward to uri etc.
spring:
cloud:
gateway:
routes:
- id: test_route
uri: https://www.baidu.com
predicates:
- Query=url,baidu
- id: qq_route
uri: https://www.qq.com
predicates:
- Query=url,qq
- id: product_route
uri: lb://gulimall-product
predicates:
- Path=/api/product/**
filters:
- RewritePath=/api/(?<segment>.*),/$\{
segment}
- id: third_party_route
uri: lb://gulimall-third-party
predicates:
- Path=/api/thirdparty/**
filters:
- RewritePath=/api/thirdparty/(?<segment>.*),/$\{
segment}
- id: member_route
uri: lb://gulimall-member
predicates:
- Path=/api/member/**
filters:
- RewritePath=/api/(?<segment>.*),/$\{
segment}
- id: ware_route
uri: lb://gulimall-ware
predicates:
- Path=/api/ware/**
filters:
- RewritePath=/api/(?<segment>.*),/$\{
segment}
- id: admin_route
uri: lb://renren-fast
predicates:
- Path=/api/**
filters: # This filter is related to the verification code ,api Content Cache /renren-fast, And pay attention to /renren-fast Also registered to nacos in
- RewritePath=/api/(?<segment>.*),/renren-fast/$\{
segment}
## The front-end project ,/api Prefix . First come to the gateway and then assert to match , Filter modification url, Like jump to renren Microservices , So pay attention to renren Back end projects are also registered to nacos in
## http://localhost:88/api/captcha.jpg http://localhost:8080/renren-fast/captcha.jpg
## http://localhost:88/api/product/category/list/tree http://localhost:10000/product/category/list/tree
test localhost:8080/hello?url=baidu
The gateway uses Netty,Netty Than Tomcat High performance
2021-12-31 16:20:37.276 INFO 19364 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port(s): 88
predicates:
- Query=url(key),baidu(value)
边栏推荐
- 使用 setoolkit 伪造站点窃取用户信息
- Latex formula code
- Anddroid 文本合成语音TTS实现
- 【力扣10天SQL入门】Day9 控制流
- Analysis of slice capacity expansion mechanism
- Codeforces Round #803 (Div. 2) VP补题
- Soft keyboard height error
- postgresql源码学习(26)—— Windows vscode远程调试Linux上的postgresql
- On several key issues of digital transformation
- Manually dig XSS vulnerabilities
猜你喜欢

【刷题】字符统计【0】
![[untitled]](/img/be/3523d0c14d555b293673af2b6fbcff.jpg)
[untitled]

P4 安装bmv2 详细教程

On several key issues of digital transformation

Latex table

SharePoint - how to quickly check whether SharePoint is standard or enterprise edition?

【入门】取近似值

Utiliser Beef pour détourner le navigateur utilisateur

Adding color blocks to Seaborn clustermap matrix

Gdip - hatchBrush图案表
随机推荐
图扑软件通过 CMMI5 级认证!| 国际软件领域高权威高等级认证
How to get a SharePoint online site created using the office365 group template
[batch dos-cmd command - summary and summary] - Common operators in the CMD window (<, < <, & <,>, > >, & >, & >, & &, ||, (),;, @)
Aardio - 自己构造的getIconHandle的方法
数字转excel的字符串坐标
ContentType所有类型对比
Scala language learning-07-constructor
軟鍵盤高度報錯
CPU设计实战-第四章实践任务一简单CPU参考设计调试
OJ输入输出练习
Significance and measures of source code encryption
[getting started] input n integers and output the smallest K of them
事务方法调用@Transactional
[staff] key number (key number identification position | key number marking list | a major key identification principle | F, C, G position marking ascending | F major key identification principle | B
Access报表实现小计功能
uni 热更新
[staff] high and low octave mark (the notes in the high octave mark | mark range are increased by one octave as a whole | low octave mark | mark range are decreased by one octave as a whole)
[batch DOS CMD summary] extension variables - delay variables CMD /v:on, CMD /v:off, SETLOCAL enabledelayedexpansion, disabledelayedexpansion
7-26 word length (input and output in the loop)
The difference between interceptors and filters

