当前位置:网站首页>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
gateway
Choose .
pom.xml Riga common rely on , modify jdk edition ,
stay
gateway
Start the registration service discovery in the service@EnableDiscoveryClient
, To configurenacos
Address 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)
边栏推荐
- Microsoft stream - how to modify video subtitles
- seaborn clustermap矩阵添加颜色块
- [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
- Book of quantitative trading - reading notes of the man who conquers the market
- [getting started] input n integers and output the smallest K of them
- 使用threejs简单Web3D效果
- SQL number injection and character injection
- Contenttype comparison of all types
- PHP laravel wechat payment
- Deep learning systematic learning
猜你喜欢
随机推荐
How to prevent the other party from saying that he has no money after winning the lawsuit?
Airsim雷达相机融合生成彩色点云
[batch dos-cmd command - summary and summary] - Common operators in the CMD window (<, < <, & <,>, > >, & >, & >, & &, ||, (),;, @)
Embedded-c language-10-enumeration / (function) pointer (function) / multi-level pointer /malloc dynamic allocation / file operation
On June 30, 2022, the record of provincial competition + national competition of Bluebridge
Programmer's regimen
Differential: definition of total differential, partial derivative, gradient
谈谈数字化转型的几个关键问题
图扑软件通过 CMMI5 级认证!| 国际软件领域高权威高等级认证
Luogu p3799 demon dream stick
Aardio - [problem] the problem of memory growth during the callback of bass Library
Lm08 mesh series mesh inversion (fine)
Teach you how to apply for domestic trademark online step by step
SharePoint - how to quickly check whether SharePoint is standard or enterprise edition?
PostgreSQL source code learning (26) -- windows vscode remote debugging PostgreSQL on Linux
XX attack - reflective XSS attack hijacking user browser
Count number of rows per group and add result to original data frame
0 basic introduction to single chip microcomputer: how to use digital multimeter and precautions
Luogu p1088 [noip2004 popularization group] Martians
Set up file server Minio for quick use