Spring Cloud 系列之Gateway:(9)初识网关

news2025/1/11 22:57:04

传送门

Spring Cloud Alibaba系列之nacos:(1)安装

Spring Cloud Alibaba系列之nacos:(2)单机模式支持mysql

Spring Cloud Alibaba系列之nacos:(3)服务注册发现

Spring Cloud 系列之OpenFeign:(4)集成OpenFeign

Spring Cloud 系列之OpenFeign:(5)OpenFeign的高级用法

Spring Cloud 系列之OpenFeign:(6)OpenFeign的链路追踪

Spring Cloud 系列之OpenFeign:(7)链路追踪sleuth+zipkin

Spring Cloud 系列之OpenFeign:(8)链路追踪续

短暂的回顾

在谈网关之前,回顾了一下SpringCloud系列文章。从写下第一篇博客Spring Cloud Alibaba系列(1)之:nacos安装时,时间是2022-06-12,距离现在已经过去快2年了。而如果要从真正从接触微服务(主要指SpringCloud全家桶)写下的第一博客《Spring cloud系统架构的淘宝客之一》

算起,时间应该是2018-01-10,过去了整整6年。在此期间,微服务蓬勃发展、遍地开花,几乎成了现在JAVA开发的首选和项目框架选型的标配。但是这几年间我并没有一直在使用它,原因是中间去福报厂呆了几年(为此还产生了《如何拿到阿里offer的?面试流程及面试题》,当然也留下了一个大坑没填)。

一般的大公司都有自己封装的一套所谓XX框架,比如sofa这种RPC框架。当时在里面要适应做toC业务及整天精神高度紧张,导致并没有持续关注SpringColud。等从互联网出来转到做toB业务时,又有了什么Spring Cloud Alibaba,那是不是还得学?所以有了这个系列的文章,当时也没有过多想法。现在细想起来,至少有以下3方面原因:

  • 1是做为学习的一个记录,及归纳总结。也希望能帮助到其它需要的java boy
  • 2是心态上的一个转变,从以前追逐各种框架中逐渐解脱出来,开始回归到计算机基础的学习上。比如网络(主要是HTTP协议簇)、计算机组成原理、数据结构(不断开始/放弃的循环中)、JVM等学习上
  • 3是深度上,现在更多是尽量深入到源码级别来学习:阅读各种框架的源码比如nacos,xxl-job的《分布式定时任务系列8:XXL-job源码分析之远程调用》,不过现在博客里面很少具体体现出来怕误导别人 

但是工欲善其事,对于项目的开发及实际框架的使用,了解它的相关用法、特性还是很有必要。所以会继续这个系列下去,这次会切入微服务中另一个重要的基础组件:网关gateway 

什么是网关

对于网关这个概念来说,在传统架构的模式下,可能感知并不是很强烈。特别是单体架构可能都没有网关这个组件或服务:

无网关架构

一个极简的单体架构,可以是如下图(假设在内网,不考虑防火墙安全等非业务功能):

  • 1台物理机,有1个对应的IP
  • 在物理机上面运行1个tomcat实例,并部署对应的服务A,设置对应的端口port
  • 系统架构采用springmvc,前后端打包在一块部署1个实例
  • 用户直接通过浏览器访问系统:https://IP:port/XX,XX为服务A暴露的请求URL

在这样的架构下,会发现其实是没有网关这个组件的。当然一般面向互联网的可能还会在前面挂一个域名,但是也不会对上述网关的定位有涉及。

负载均衡架构

但是一般大型一些的系统,出于高可用的需要会采用集群部署:即对后端服务进行同一个服务多个副本部署,并搭载对应的负载均衡器做统一路由,比如硬件层面的F5,软件层面的Nginx等。

这里给各个单体系统的副本分发流量的负载均衡器(F5或Nginx),其实就承担着内部服务与外部调用之间的网关角色。 

微服务架构

不过在微服务环境中,网关的存在感就极大地增强了,甚至成为微服务集群中必不可少的设施之一,重要性不比服务发现(Eureka/Nacos)、配置中心(Config/Nacos)、负载均衡(Ribbon/LoadBalacer)低!

因为在微服务的理念下,不仅对系统架构有冲击要进行服务拆分,甚至可能对组织架构也有冲击导致研发团队按服务拆分。

如果每个服务节点都由不同的团队负责,它们有自己独立的、各不相同的能力,所以如果服务集群没有一个统一对外交互的代理人角色,那外部的服务消费者就必须知道所有微服务在集群中的精确坐标(各个后端服务的地址)。所以,微服务中网关的首要职责

就是以统一的地址对外提供服务,将外部访问这个地址的流量,根据适当的规则路由到内部集群中正确的服务节点之上。也正是因为这样,微服务中的网关,也常被称为“服务网关”或者“API 网关”。

所以网关Gateway拥有路由基本职责与能力。但是如果仅仅这一点,与其它老牌的负载均衡器F5、Nginx有什么区别呢?直接用负载均衡器不就好了,搞一个什么网关轮子出来干啥?其实原因有如下几点:

  • 微服务架构下的网关除了路由能力外,还需要提供一些比如安全、认证、授权、限流、监控、缓存的额外能力
  • 另外通过Spring提供原生的Gateway组件,能更好的适配SpringCloud生态,做大做强
  • 通过代码解析请求URL的一些特征,能更方便的制定路由策略及方便边缘功能的扩展

基于上述原因,Gateway网关还提供了过滤器实现代码层级的精细控制:

网关 = 路由器(基础职能) + 过滤器(可选职能)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1686525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索 JavaScript 新增声明命令与解构赋值的魅力:从 ES5 迈向 ES6

个人主页:学习前端的小z 个人专栏:JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! ES5、ES6介绍 文章目录 💯声明命令 let、const🍟1 let声明符&a…

【区块链】caliper压力测试

本文上接postman接口测试 参照工程项目使用Caliper测试工具对食品安全溯源系统智能合约生成新食品(newFood)功能进行压力测试 首先启动webase python3 deploy.py startAll vim /opt/bencahmark/caliper-benchmark/networks/fisco-bcos/test-nw/fisco-bcos.json 命令便捷查…

刷代码随想录有感(75):回溯问题——非递减子序列

题干&#xff1a; 代码&#xff1a; class Solution { public:vector<int> tmp;vector<vector<int>> res;void backtracking(vector<int> nums, int start){if(tmp.size() > 2){res.push_back(tmp);}unordered_set<int> uset;for(int i sta…

JMeter 基本使用【Windows Jmeter GUI 图形界面】

1.安装jmeter GUI图形界面 需要安装JDK 官方网址: Apache JMeter - Apache JMeter™ linux tgz windows zip 2. 目录及文件 bin: 核心可执行文件&#xff0c;包含配置 extras&#xff1a;插件扩展包 lib&#xff1a;核心依赖包 ext&#xff1a;核心包 junit&#xff1a;单…

低代码开发:成本革命,还是技术幻象?

在当今快速发展的数字化时代&#xff0c;企业面临着不断增长的技术需求和日益紧缩的预算压力。开源低代码开发平台&#xff08;YDUIbuilder&#xff09;应运而生&#xff0c;承诺以更低的成本和更快的速度交付应用程序。但低代码开发真的能减少成本吗&#xff1f;本文将深入探讨…

uniapp集成websocket不断线的处理-打牌记账

背景 近期在开发打牌记账微信小程序时&#xff0c;我们将房间这个业务场景做成了类似聊天室功能。 对房间内发生的动作&#xff0c;都能实时对其他人可见。 如:转账&#xff0c;离开&#xff0c;加入&#xff0c;结算等动作 其他人员都能实时接收到推送消息&#xff0c; 这个时…

自媒体多平台互助平台_互赞互关,视频快速起流

首先&#xff0c;视频爆流的关键规则是什么&#xff1f; 平台根据视频的点赞/评论数据计算视频热门程度&#xff0c; 视频播放留存与收藏等等也在考核范围内&#xff0c; 不过&#xff0c;互关互赞不一定符合推流&#xff01;这你要清楚&#xff01;&#xff01; 目前我还不能准…

Doris【部署 03】Linux环境Doris数据库部署异常问题收集解决(不断更新)

Linux环境Doris数据库部署异常问题 1.FE1.1 Unknown system variable character_set_database1.2 notify new FE type transfer: UNKNOWN1.3 mysql_load_server_secure_path1.4 Only unique table could be updated1.5 too many filtered rows 2.BE2.1 Have not get FE Master …

vue项目报错:internal/modules/cjs/loader.js:892 throw err;

前言&#xff1a; vue项目中无法正常使用git&#xff0c;并报错情况。 报错信息&#xff1a; internal/modules/cjs/loader.js:892throw err;^ Error: Cannot find module D:\project\sd_wh_yth_front\node_modules\yorkie\src\runner.js 报错处理&#xff1a; npm install y…

【多模态融合】Cross Modal Transformer: Towards Fast and Robust 3D Object Detection

论文链接&#xff1a;Cross Modal Transformer: Towards Fast and Robust 3D Object Detection 代码链接&#xff1a;https://github.com/junjie18/CMT 作者&#xff1a;Junjie Yan, Yingfei Liu, Jianjian Sun, Fan Jia, Shuailin Li, Tiancai Wang, Xiangyu Zhang 发表单位…

运维笔记.MySQL.基于mysqldump数据备份与恢复

运维专题 MySQL.基于mysqldump数据备份与恢复 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: [email protected]. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_2855…

提升主播直播体验:如何选择和使用第三方美颜SDK?

第三方美颜SDK为开发者提供了实现这些功能的便利途径。那么&#xff0c;如何选择和使用第三方美颜SDK&#xff0c;来提升主播的直播体验呢&#xff1f; 一、了解美颜SDK的重要性 1.1美颜SDK的作用 美颜SDK不仅能提升主播的自信&#xff0c;还能吸引更多观众&#xff0c;增加…

“智绘艺术家之诗画点军”正式报名开赛 |AIGC与点军的梦幻碰撞,等你来战!

点军&#xff0c;这处江南的明珠&#xff0c;宜昌的瑰宝&#xff0c;历史与自然的交响乐章在此奏响。 三国时&#xff0c;关羽曾在此点兵&#xff0c;其雄姿英发&#xff0c;至今犹在眼前。 古之要塞&#xff0c;控巴夔&#xff0c;制荆襄&#xff0c;为三峡门户&#xff0c;…

“Excel+中文编程”衍生新型软件,WPS用户:自家孩子

你知道吗&#xff0c;我们中国人有时候真的挺有创新精神的。 你可能熟悉Excel表格&#xff0c;也可能听说过中文编程&#xff0c;但你有没有脑洞大开&#xff0c;想过如果把这两者结合起来&#xff0c;会碰撞出什么样的火花呢&#xff1f; 别不信&#xff0c;跟着我来看看吧&a…

【mysql】【docker】mysql8-互为主从

&#x1f338;&#x1f338; Linux/docker-compose/mysql8 互为主从 优雅部署 &#x1f338;&#x1f338; 记录下两台Linux的mysql需要热备份&#xff0c;互为主从&#xff0c;后期加上keepalived实现高可用切换 参考博客&#xff1a;答 案 &#x1f338; 一、准备文件 这里…

Ubuntu18.04 OpenSSH升级

升级前版本&#xff1a; rootecs-m2eqyb:/opt# ll total 20912 drwxr-xr-x 2 root root 4096 May 10 16:23 ./ drwxr-xr-x 24 root root 4096 May 10 14:38 ../ -rw-r--r-- 1 root root 1848766 May 10 16:23 openssh-9.7p1.tar.gz -rw-r--r-- 1 root root 18038…

如何快速申请免费单域名SSL证书

申请免费的单域名SSL证书通常涉及以下几个步骤&#xff0c;虽然具体细节可能会根据不同的证书颁发机构(CA)有所差异。以下是通用的申请流程&#xff1a; 1.选择证书颁发机构&#xff1a; 访问提供免费单域名SSL证书的证书颁发机构网站&#xff0c;例如JoySSL等。 2.注册账号…

「51媒体」广西媒体资源,南宁活动媒体邀约

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 广西地区拥有丰富的媒体资源&#xff0c;在广西做活动&#xff0c;参加展览可以邀请他们到场采访报道。 央媒驻站&#xff1a;广西新华 广西人民 广西光明 广西央广 广西国际在线 广西中…

图形学初识--直线插值算法

文章目录 为什么需要插值算法&#xff1f;插值算法是什么&#xff1f;有哪些常见的插值算法呢&#xff1f;1. 线性插值&#xff08;Linear Interpolation&#xff09;2. 多项式插值&#xff08;Polynomial Interpolation&#xff09;3. 样条插值&#xff08;Spline Interpolati…

使用宏实现,在EXCEL 打印后,将某个栏位数据自动+1

需求 在Excel中打印后&#xff0c;将某个栏位数据自动1。比如需要修改栏位数据为xxx-xx-1&#xff0c;打印后变为xxx-xx-2 实现&#xff1a; 打开Excel文件并按下Alt F11打开VBA编辑器。在VBA编辑器中&#xff0c;找到您的工作簿名称&#xff0c;比如VBAProject (YourWorkboo…