时间:2020-08-20来源:www.pcxitongcheng.com作者:电脑系统城
在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调用。这样的话会产生很多问题,例如:
为解决上面的问题所以引入了网关的概念:所谓的API网关,就是指系统的统一入口,它封装了应用程序的内部结构,为客户端提供统一服务,一些与业务本身功能无关的公共逻辑可以在这里实现,诸如认证、鉴权、监控、路由转发等。
比较流行的网关对比
使用nginx的反向代理和负载均衡可实现对api服务器的负载均衡及高可用lua是一种脚本语言,可以来编写一些简单的逻辑, nginx支持lua脚本
基于Nginx+Lua开发,性能高,稳定,有多个可用的插件(限流、鉴权等等)可以开箱即用。 问题:只支持Http协议;二次开发,自由扩展困难;提供管理API,缺乏更易用的管控、配置方式。
Netflix开源的网关,功能丰富,使用JAVA开发,易于二次开发 问题:缺乏管控,无法动态配置;依赖组件较多;处理Http请求依赖的是Web容器,性能不如Nginx
Spring公司为了替换Zuul而开发的网关服务,将在下面具体介绍。
Spring Cloud Gateway是Spring公司基于Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它的目标是替代Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控和限流。
路由(Route) 是 gateway 中最基本的组件之一,表示一个具体的路由信息载体。主要定义了下面的几个信息:
采用前面学过的Sentinel组件来实现网关的限流
<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-spring-cloud-gateway-adapter</artifactId> </dependency>
基于Sentinel 的Gateway限流是通过其提供的Filter来完成的,使用时只需注入对应的SentinelGatewayFilter实例以及 SentinelGatewayBlockExceptionHandler 实例即可。
GatewayConfig2024-07-07
Windows10系统无法访问192.168.0.1怎么解决教程2023-10-29
revit2022网络许可不可用解决方法2023-10-29
子网掩码怎么填很多小伙伴们都在问我们电脑中子网掩码怎么填呢,其实方法很简单的,需要我们首先判断ip地址到底是哪一个类型的然后再填入相对应的地址即可,接下来一起随小编来看一看吧。...
2023-10-29
我们在电脑联网的时候,可能会遇到大大小小的问题,其中就包括了显示网络电缆被拔出,这可能是由于本地网线没插好,或者是网络设置出现了问题导致。...
2023-05-29