微服务门神-网关了解

news/2024/12/4 19:48:07/

引言

书接上篇 微服务守护神-Sentinel-其他 ,讲完微服务守护神-Sentinel之后,接下来就是微服务门神-网关组件:Gateway

问题引入

小伙伴们都知道在微服务架构中,一个系统会被拆分为很多个微服务,每一个微服务都能对外提供接口,用户访问就如下图啦。

仔细观察,你就会发现这种设计,就会存在着诸多的问题:

  • 客户端多次请求不同的微服务,增加客户端代码或配置编写的复杂性

  • 认证复杂,每个服务都需要独立认证。

  • 微服务做集群的情况下,客户端并没有负责均衡的功能

 此时怎么办?怎么优雅解决掉这些问题呢?答案很简单,引入API网关。

API网关

所谓的API网关,就是指微系统的统一入口,它封装了应用程序的内部结构,为客户端提供统一服务,一些与业务本身功能无关的公共逻辑可以在这里实现,诸如认证、鉴权、监控、路由转发等等。

用上API网关后,上面的用户访问图变成这样了:

此时肯定有小伙伴会问:网关是如何知道微服务的地址?网关如何进行负载均衡?网关又怎么关联到具体的微服务?答案其实很简单,网关也可以作为一个微服务,启动时将自己的信息注册到注册中心并且拉取其他微服务的信息,拦截所有请求再通过事先配置好的路由规则找到真实的服务地址,再基于Ribbon负载均衡调用。

最终总结:1>请求分发 2>负载均衡 3>过滤拦截 4>网络隔离

常见网关

  • Nginx+lua

使用nginx的反向代理和负载均衡可实现对api服务器的负载均衡及高可用,lua是一种脚本语言,可以来编写一些简单的逻辑, nginx支持lua脚本

  • Kong

基于Nginx+Lua开发,性能高,稳定,有多个可用的插件(限流、鉴权等等)可以开箱即用。 问题:只支持Http协议;二次开发,自由扩展困难;提供管理API,缺乏更易用的管控、配置方式。

  • Zuul

Netflix开源的网关,功能丰富,使用JAVA开发,易于二次开发 问题:缺乏管控,无法动态配置;依赖组件较多;处理Http请求依赖的是Web容器,性能不如Nginx,Spring Cloud Gateway

  • Gateway

Spring公司为了替换Zuul而开发的网关服务

注意:SpringCloud alibaba技术栈中并没有提供自己的网关,我们可以采用Spring Cloud Gateway来做网关

Gateway

Spring Cloud Gateway是Spring公司基于Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它的目标是替代Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控和限流。

优点:

  • 性能强劲:是第一代网关Zuul的1.6倍

  • 功能强大:内置了很多实用的功能,例如转发、监控、限流等

  • 设计优雅,容易扩展

缺点:

  • 其实现依赖Netty与WebFlux,不是传统的Servlet编程模型,学习成本高

  • 不能将其部署在Tomcat、Jetty等Servlet容器里,只能打成jar包执行

  • 需要Spring Boot 2.0及以上的版本,才支持

好,到这就可以来,大体了解Gateway网关就可以啦,下一篇,我们来看下Gateway怎么玩~一起期待。

 看文字不过瘾可以切换视频版:SpringCloud Alibaba 极简入门


http://www.ppmy.cn/news/3041.html

相关文章

注册微信小程序

文章目录1. 项目结构2. 页面组成3. json配置文件4. 认识页面5. WXML6. WXSS7. js文件8. 宿主环境9. 组件10. API11. 协同工作与发布跟公众号平台不共用一个账号,需要用其它邮箱另行注册,填写身份证信息(姓名、身份证号码)&#xf…

linux常用命令

Ctrlz 暂停命令 ls linux里面 文件和文件夹叫文件 -h 数字以M或G为单位 -a 显示全部文件 包括隐藏文件 -l 显示文件详细信息 -R 大R 递归显示子目录结构 -ld [文件名]显示目录和链接信息 file [文件名] 显示文件的类型和信息 touch 创建空白文件 如果…

Pr:使用作品

利用作品 Production,可将大型复杂工作流拆分为多个可管理的 Pr 项目,并可在作品内跨项目、跨平台(macOS 和 Windows)引用媒体,无论这些资源是在本地存储或是共享的网络存储,作品可让一切保持同步。作品&am…

15. 三数之和-c语言-快速排序+哈希表+二分查找

15. 三数之和-c语言-快速排序哈希表二分查找 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#…

如何解决跨域问题

什么是同源策略? 同源策略,它是由Netscape提出的一个著名的安全策略。 同源策略是浏览器的行为,是为了保护本地数据不被JavaScript代码获取回来的数据污染,因此拦截的是客户端发出的请求回来的数据接收,即请求发送了&…

CIDR格式网络策略值设置方式

CIDR的格式是IP网段/网络ID,斜杠左面的是网络IP段,斜杠右面是网络ID。如果网络用的是IPV4,它最大有效值是32,它的作用本质上是用来表示网络策略所用的子网掩码二进制里的1有多少个,也就是网络ID的位数。 传统的IPV4-t…

Redis框架(五):大众点评项目 商品目录 添加Redis缓存

大众点评项目 商品目录 添加Redis缓存需求:基于Redis查询商品信息业务实现给商品添加缓存给店铺类型添加缓存总结和业务流程SpringCloud章节复习已经过去,新的章节Redis开始了,这个章节中将会回顾Redis实战项目 大众点评 主要依照以下几个原则…

vivado tcl开发流程

本文以简单的led灯为例,阐述基于tcl的Vivado开发流程。 文件内容编写如下: led.v timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2022/12/12 14:57:22 // Design Name: // Module Name: alu // Project Name: // Target De…