当前位置: 首页 > wzjs >正文

网站做的漂亮的企业一站式推广平台

网站做的漂亮的企业,一站式推广平台,一个ip可以做几个网站,公司网页设计作品一.网关 1.问题提出 我们通过Eureka,Nacos解决了服务注册,服务发现的问题,使用SpringCloud LoadBalance解决了负载均衡的问题,使用OpenFeign解决了远程调用的问题。 但是当前所有微服务的接口都是直接对外暴露的,可…

一.网关

1.问题提出

我们通过Eureka,Nacos解决了服务注册,服务发现的问题,使用SpringCloud LoadBalance解决了负载均衡的问题,使用OpenFeign解决了远程调用的问题。

但是当前所有微服务的接口都是直接对外暴露的,可以直接通过外部访问。为了保证对外服务的安全性, 服务端实现的微服务接口通常都带有⼀定的权限校验机制。

由于使用了微服务,原本⼀个应用的多个模块拆分成了多个应用,我们不得不实现多次校验逻辑。当这套逻辑需要修改时,我们需要修改多个应用,比较麻烦。

这个时候就可以使用网关Gateway了。

2.API网关

API网关也是⼀个服务,通常是后端服务的唯一入口。它的定义类似设计模式中的Facade模式。它就类似整个微服务架构的门面,所有的外部客户端访问,都需要经过它来进行调度和过滤。

网关的核心功能:

1)权限控制:作为入口,可对用户进行权限校验,对校验失败的用户进行拦截;

2)动态路由:⼀切请求先经过网关,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务;

3)负载均衡:当路由的目标服务有多个时,需要做负载均衡;

4)限流:请求流量过高时,按照网关中配置微服务能够接受的流量进行放行。

二.SpringCloudGateway

由于API网关是一个服务,所以我们要先创建一个项目(服务)。

1.引入网关依赖

<!--网关-->
<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>
<!--负载均衡-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

2.编写启动类

@SpringBootApplication
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class,args);}
}

3.添加Gateway的路由配置

创建application.yml文件,添加配置:

server:port: 10030
spring:application:name: gatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8848gateway:metrics:enabled: trueroutes:- id: order-service   uri: lb://order-service/ predicates:   - Path=/order/**,/feign/**- id: product-serviceuri: lb://product-service/predicates:- Path=/product/**

字段说明:

1)id:自定义路由ID,保持唯一,不能重复;

2)uri:目标服务地址,支持普通URI及 lb:// 应用注册服务名称。lb标识负载均衡,使用 lb:// 方式标识从注册中心获取服务地址;

3)predicates:路由条件,根据匹配结果决定是否执行该请求路由,上述代码中,我们把符合Path规则的一切请求,都代理到uri参数指定的地址。

三.Route Predicate Factories

Route Predicate Factories,在Spring Cloud Gateway中,Predicate提供了路由规则的匹配机制。

这里举几个例子给大家看。

After匹配指定日期之后的请求
Before匹配指定日期之前的请求
Between匹配两个指定时间之间的请求 datetime2 的参数必须在 datetime1 之后

具体写一下After的例子:

可以先通过下面的代码获取时间:

System.out.println(ZonedDateTime.now());

在配置网关的配置文件中添加:

predicates:- Path=/product/**- After=2025-04-28T15:40:18.609323500+08:00[Asia/Shanghai]

详细内容大家可以去Spring官网查看:Route Predicate Factories :: Spring Cloud Gateway

四.Gateway Filter Factories

1.简介

Predicate决定了请求由哪⼀个路由处理,如果在请求处理前后需要加⼀些逻辑,这就是Filter(过滤器)的作用范围了。

Filter分为两种类型:

1)Pre类型过滤器:路由处理之前执行(请求转发到后端服务之前执行),在Pre类型过滤器中可以做鉴权,限流等.;

2)Post类型过滤器::求执行完成后,将结果返回给客户端之前执行。

Spring Cloud Gateway中内置了很多Filter,用于拦截和链式处理web请求。

Spring Cloud Gateway从作用范围上,也看把Filter可分为两类:

1)GatewayFilter:应用到单个路由或者⼀个分组的路由上;

2)GlobalFilter:应用到所有的路由上,也就是对所有的请求生效。

2.GatewayFilter

GatewayFilter也是将配置信息放在配置文件中,Spring Cloud Gateway提供了不少Filter,具体大家可以去官网看:AddRequestHeader GatewayFilter Factory :: Spring Cloud Gateway

左面的那些就是Filter,下面我举一个例子:AddRequestParameter

spring:cloud:gateway:routes:- id: add_request_header_routeuri: https://example.orgfilters:- AddRequestParameter=userName,Kobayashi

使用这个Filter可以为所有请求添加一个参数userName。

在Spring Cloud Gateway提供的所有Filter中,有一个特殊的Filter:Default Filters,默认过滤器。

默认过滤器可以对全部路由生效:

spring:cloud:gateway:default-filters:- AddResponseHeader=X-Response-Default-Red, Default-Blue- PrefixPath=/httpbin

其实从代码中也可以看出,default-filters是与routes同级的,这也能说明默认过滤器不仅仅是对某一些路由生效,而是对所有路由生效。

3.GlobalFilter

GlobalFilter是Spring Cloud Gateway中的全局过滤器。

1)添加过滤器

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2)添加配置

spring:cloud:gateway:metrics:enabled: true
management:endpoints:web:exposure:include: "*"endpoint:health:show-details: alwaysshutdown:enabled: true

4.过滤器执行顺序

请求路由后,网关会把当前项目中的GatewayFilter和GlobalFilter合并到⼀个过滤器链(集合)中,并进行排序,依次执行过滤器。

每⼀个过滤器都必须指定⼀个int类型的order值,默认值为0,表示该过滤的优先级。order值越小,优先级越高,执行顺序越靠前。

1)Filter通过实现Order接口或者添加@Order注解来指定order值。

2)SpringCloudGateway提供的Filter由Spring指定。用户也可以自定义Filter,由用户指定。

3)当过滤器的order值⼀样时,会按照defaultFilter>GatewayFilter>GlobalFilter的顺序执行。

http://www.dtcms.com/wzjs/6861.html

相关文章:

  • smartschool 学校网站管理系统新手电商运营从哪开始学
  • 紧固件网站建设湖北网站seo
  • 商洛网站建设3分钟搞定网站seo优化外链建设
  • 怎样做好公司网站重庆seo代理
  • 在哪个网站做注册资本变更线上宣传推广方案
  • 企业建网站开发百度竞价一个月5000够吗
  • 徐州网站建设市场网络推广计划制定步骤
  • 附近培训电脑的地方seo策略
  • 浪子做的阿哲喊麦网站多少百度快照推广效果怎样
  • 网站改版目标百度app最新版本
  • 垦利住房和城乡建设局网站乌鲁木齐seo
  • jsp做网站注册页面免费加精准客源
  • 公安机关将备案网站网站制作多少钱一个
  • 网站做两个版本口碑推广
  • 网站为什么上传不了图片软文广告营销
  • 管理公司网站建设seo关键词排名优化怎样收费
  • 网站更换关键词怎么做好在线排名优化
  • 网站备案会检查空间有做网站的吗
  • 品牌开发公司排名seo人员招聘
  • 建网站选域名武汉seo网站管理
  • 如何在微信开发小程序深圳网站关键词优化公司
  • 网站开发技术与开发环境成都专门做网站的公司
  • 淘宝上的网站建设可信微信广告投放收费标准
  • 郑州营销型网站制作磁力岛引擎
  • 国内银行网站做的很垃圾深圳招聘网络推广
  • 婚庆网站论文seo薪酬
  • 较好网站建设公司站长工具中文
  • ip地址直接访问网站品牌推广方案包括哪些
  • 网站建设教程.品牌seo是什么意思
  • 网站落地页怎么做网络营销策略的定义