导图社区 微服务
API网关是服务访问入口,身份认证、资源访问都通过网关进行资源统一转发。本项目设计采用前后端分离架构设计,前端工程服务基于SPRINGboot web服务进行实现。
Vue.js项目:包含了项目分析:目录结构、用户登录模板实现、关于密钥说明、路由导航守卫等类容,可收藏。
四阶段微服务,包括公共工程设计及实现、熟悉工程中对象的管理以及测试、NACOS注册中心入门等等,可以了解下。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
第四阶段
微服务
gateway网关
网关本质上要提供一个各种服务访问的入口,并提供服务接收并转发所有内外部的客户端调用,还有就是权限认证,限流控制等等。
Spring Cloud Gateway优缺点分析:
优点:
1. 性能强劲:是第一代网关Zuul的1.6倍。
2. 功能强大:内置了很多实用的功能,例如转发、监控、限流等
3. 设计优雅,容易扩展。
缺点:
依赖Netty与WebFlux(Spring5.0),不是传统的Servlet编程模型(Spring MVC就是基于此模型实现),学习成本高。
需要Spring Boot 2.0及以上的版本,才支持
添加spring-cloud-starter-gateway依赖
修改applicatio配置
routes:
配置网关路由规则
- id: route01
路由id,自己指定一个唯一值即可
uri:
网关帮我们转发的url
predicates:
断言(谓此):匹配请求规则
filters:
网关过滤器,用于对谓词中的内容进行判断分析以及处理
- StripPrefix=1
转发之前去掉path中第一层路径
Gateway中负载均衡实现
为什么负载均衡
网关才是服务访问的入口,所有服务都会在网关层面进行底层映射,所以在访问服务时,要基于服务serivce id(服务名)去查找对应的服务,让请求从网关层进行均衡转发,以平衡服务实例的处理能力。
uri: lb://sca-provider
lb为服务前缀(负载均衡单词的缩写),不能随意写
原理:该底层自动启动了全局过滤器(GlobalFilter),底层的接口实现了rubbon负载均衡
执行流程分析(重要)
断言(Predicate)
基于Datetime类型的断言工厂
基于header的断言工厂HeaderRoutePredicateFactory
基于Method请求方法的断言工厂,
过滤器(Filter)
GatewayFilter:应用到单个路由或者一个分组的路由上。
GlobalFilter:应用到所有的路由上。
局部过滤器
基于AddRequestHeaderGatewayFilterFactory,为原始请求添加Header。
基于AddRequestParameterGatewayFilterFactory,为原始请求添加请求参数及值,
基于PrefixPathGatewayFilterFactory,为原始的请求路径添加一个前缀路径
基于RequestSizeGatewayFilterFactory,设置允许接收最大请求包的大小
全局过滤器
网关的限流设计
添加依赖
添加sentinel及路由规则
启动网关项目,检测sentinel控制台的网关菜单,添加sentinel的jvm参数
限流分类
基于请求属性限流
自定义API维度限流(重点)
定制流控网关返回值
测试局部时间拦截器
单点登录功能
课堂实现步骤
系统基础服务工程设计及实现
业务描述
表结构设计
工程数据初始化sql
创建系统服务工程并初始化
Pojo对象逻辑实现
Dao对象逻辑实现
Service对象逻辑实现
Controller对象逻辑实现
启动服务进行访问测试
统一认证工程设计及实现
创建工程及初始化
定义用户信息处理对象
定义User对象,用于封装从数据库查询到的用户信息
定义远程Service对象,用于实现远程用户信息调用
定义用户登陆业务逻辑处理对象
定义Security配置类
初始化加密对象
定义认证管理器对象,这个对象负责完成用户信息的认证(后台)
*配置认证规则
定义认证成功/失败处理器
注意:用户的认证操作,其实现主要基于Spring Security框架
构建令牌生成及配置对象
配置令牌的生成,存储策略,验签方式(令牌合法性)
定义Oauth2认证授权配置
将所有的认证和授权相关配置进行整合
资源服务工程设计及实现
资源服务工程为一个业务数据工程,此工程中数据在访问通常情况下是受限访问,例如有些资源有用户,都可以方法,有些资源必须认证才可访问,有些资源认证后,有权限才可以访问。
业务设计架构
概要
项目创建及初始化
创建工程,添加依赖,配置文件,创建启动
创建资源Controller对象
配置令牌解析器对象
配置令牌的生成,存储策略,验签方式(令牌合法性)
配置资源认证授权规则
对于一个系统而言,它资源的访问权限是不同的
JWT自包含机制 构成:头 (令牌类型 签名算法),负载(存储信息的地方), 签名部分(防止令牌被篡改)
双重校验:本地缓存使用了 还卡瑞连接池使用了
表设计:如果主键中存在重复,在表设计的时候注意表关系的维系
API网关 硬件网关