SpringCloud:搭建基于Gateway的微服务网关(一)
1.需求
最近在尝试着写一个开放平台,于是先搭建网关。
作用:统一的请求入口,完成对请求的跟踪,限流(未做),鉴权,分发,封装响应
2.工作原理
2.1.请求
在开放平台中申请对接口的使用,申请通过后会获得:AccessId/SecretKey
API网关(服务访问的地址):127.0.0.1:7000
请求path(业务接口的路径):/v1/article/.......
将请求内容拼装为String(格式为统一格式)
String stringToSign=
HTTP-Verb + "\n" + //请求的方法
Content-MD5 + "\n" //参数的MD5
Content-Type + "\n" + //请求的参数类型
Timestamp + "\n" + //请求的时间戳
Headers + Url_String //请求头以及请求路径
然后通过SecretKey对stringToSign进行加密,得到签名串:sign
将AccessId:sign放入请求头,作为鉴权的依据 : Authorization: gateway:{AccessId}:{Signature}
发送请求
2.2.网关拦截
网关拦截该次请求,获取鉴权信息,得到AccessId依据加密后的签名串sign
从request中获取请求信息(请求的方法,参数类型,时间戳,请求路径等。。),重新组装 stringToSign
将AccessId,sign,stringToSign,url(请求的path),method(请求的方法)作为参数,调用鉴权接口进行校验
2.3.鉴权
通过AccessId,查数据库,获取SecretKey,以及用户信息等
使用获取的SecretKey对stringToSign进行加密,得到签名串,对比原始签名串,是否匹配,匹配则请求合法
其他校验:对用户信息进行校验,用户是否可用、对AccessId使用超期进行判断等
通过url以及method获取API信息(主要是获取其服务名)
返回鉴权结果
2.4.服务分发
对鉴权结果进行判断,合法则进行服务分发,将请求转发到对应服务上
获取响应结果
2.5.封装响应
对响应结果进行处理,统一封装为网关返回数据
SpringCloud:搭建基于Gateway的微服务网关(一)的更多相关文章
- SpringCloud:搭建基于Gateway的微服务网关(二)
0.代码 https://github.com/fengdaizang/OpenAPI 1.引入相关依赖 pom文件如下: <?xml version="1.0" encod ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_6-06 zuul微服务网关集群搭建
笔记 6.Zuul微服务网关集群搭建 简介:微服务网关Zull集群搭建 1.nginx+lvs+keepalive https://www.cnblogs.com/liuyisai/ ...
- 《springcloud 二》SrpingCloud Zuul 微服务网关搭建
网关作用 网关的作用,可以实现负载均衡.路由转发.日志.权限控制.监控等. 网关与过滤器区别 网关是拦截所有服务器请求进行控制 过滤器拦截某单个服务器请求进行控制 Nginx与Zuul的区别 Ngin ...
- 基于SpringBoot-Dubbo的微服务快速开发框架
简介: 基于Dubbo的分布式/微服务基础框架,为前端提供脚手架开发服务,结合前一篇--Web AP快速开发基础框架,可快速上手基于Dubbo的分布式服务开发,项目代码: https://github ...
- SpringCloud Gateway微服务网关实战与源码分析-上
概述 定义 Spring Cloud Gateway 官网地址 https://spring.io/projects/spring-cloud-gateway/ 最新版本3.1.3 Spring Cl ...
- springcloud(十四):搭建Zuul微服务网关
springcloud(十四):搭建Zuul微服务网关 1. 2. 3. 4.
- 使用 Node.js 搭建微服务网关
目录 Node.js 是什么 安装 node.js Node.js 入门 Node.js 应用场景 npm 镜像 使用 Node.js 搭建微服务网关 什么是微服务架构 使用 Node.js 实现反向 ...
- 微服务网关 Spring Cloud Gateway
1. 为什么是Spring Cloud Gateway 一句话,Spring Cloud已经放弃Netflix Zuul了.现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是 ...
- 微服务网关实战——Spring Cloud Gateway
导读 作为Netflix Zuul的替代者,Spring Cloud Gateway是一款非常实用的微服务网关,在Spring Cloud微服务架构体系中发挥非常大的作用.本文对Spring Clou ...
随机推荐
- sql server 根据字段去重
使用 row_number() over (partition by 要去重的字段 order by 排序字段) 数据库表结构 学生成绩表 UserGrade Id int ...
- 使用DES算法实现加密解密
使用DES算法实现加密解密 我们常见的加密算法有DES.MD5.IDEA.AES等等,这篇随笔介绍使用DES算法实现加密解密 首先介绍一下DES算法: DES算法为密码体制中的对称密码体制,又被称为美 ...
- prometheus学习系列一: Prometheus简介
Prometheus简介 prometheus受启发于Google的Brogmon监控系统(相似kubernetes是从Brog系统演变而来), 从2012年开始由google工程师Soundclou ...
- tensorflow--非线性回归
算法步骤: 1. 给定训练样本,x_data和y_data 2. 定义两个占位符分别接收输入x和输出y 3. 中间层操作实际为:权值w与输入x矩阵相乘,加上偏差b后,得到中间层输出 4. 使用tanh ...
- Mac下Mysql配置
安装 http://www.mirrorservice.org/sites/ftp.mysql.com/Downloads/MySQL-5.6/mysql-5.6.41-macos10.13-x86_ ...
- error: stdio.h: 没有那个文件或目录
在64位系统中,编写一个C语言程序后,使用gcc进行编译时,出现了如下的错误: test.c:1:19: fatal error: stdio.h: 没有那个文件或目录 #include <s ...
- SaltStack--配置管理
saltstack配置管理 Saltstack状态模块 远程执行模块的执行是过程式,而状态是对minion的一种描述和定义,管理人员不需要关系部署任务如何完成的,只需要描述minion的状态描述.它的 ...
- Unity 渲染教程(四):第一个光源
将法线从物体空间转换到世界空间. 使用方向光. 计算漫反射和镜面高光反射. 实现能量守恒. 使用金属的工作流程. 利用Unity的基于物理规则渲染的算法. 这是关于渲染基础的系列教程的第四部分.前面的 ...
- seaborn---调色板
一.样式控制 1.set([context,style,palette,font,...]) 一步设定美学参数. 2.axes_style([style,rc]) 返回参数字典,用于绘图的美学风格. ...
- 浅析数据库(DB)、操作数据存储(ODS)和数据仓库(DW)的区别与联系
文章背景: 相信大部分刚接触上面三个概念的同学,都多多少少会有些迷惑,现在我就给大家简单分析下这三者的关系,希望大家对这三者的概念理解有所帮助吧. 本文主要从下面两类关系来叙述上面三者的关系: 数据库 ...