认识微服务
单体项目->微服务
高耦合->低耦合
单体架构
将业务的所有功能集中在一个项目中开发
系统可用性差,耦合性高
微服务
架构方案。把单体架构中的功能模块拆分为多个独立项目
黑马商城
用户登录
通过拦截器拿到用户信息,然后threadlocal存入用户信息
在拦截器里面存入当前线程的线程域,在后续UserContext里面存着
最后要清除threadlocal防止内存泄漏
微服务拆分方式
独立project
不方便管理
maven聚合服务
一个父工程,里面几个子工程
新建maven的module
网关
基本功能
前端服务发给单体服务只用请求一个端口,请求多个微服务就需要请求多个端口?每个微服务都需要用户的登录信息,各自做登录信息校验很麻烦
网关就是路由转发和身份校验
网关是对外暴露的微服务,可以从注册中心拿到各个微服务的地址,这样前端就是和单体架构一样只用请求一个端口就可以了,网关再去转发到各个微服务负载均衡选择具体实例。
自定义过滤器:
网关转发之前做登录校验
因为每一个微服务都需要获得用户的登录信息,比如购票、选座什么的,不可能让每一个微服务都去做JWT校验,所以把JWT校验放在【网关】中。
网关向微服务发起的是HTTP请求,所以把JWT校验信息保存在请求头中。
globalFilter全局处理器
控制过滤器的顺序【如何保证登录校验过滤器在转发过滤器之前?】
继承Order接口,getOrder返回小值,过滤器按照order从小到大的顺序执行
gatewayFilter指定接口过滤器
不是直接实现接口,要去继承抽象类工厂,而且要在yml文件中做配置
过滤器工厂类为了读取配置,创建定制化对象?
TokenValidateGatewayFilterFactory 必须以此为后缀
在yml文件中配置名称就是TokenValidate
定义顺序可以实现orderGatewayFilter