Spring Cloud微服务

时间:2024-11-11 22:13:39

认识微服务

单体项目->微服务

高耦合->低耦合

单体架构

将业务的所有功能集中在一个项目中开发

系统可用性差,耦合性高

微服务

架构方案。把单体架构中的功能模块拆分为多个独立项目

黑马商城

用户登录

通过拦截器拿到用户信息,然后threadlocal存入用户信息

在拦截器里面存入当前线程的线程域,在后续UserContext里面存着

最后要清除threadlocal防止内存泄漏

微服务拆分方式

独立project

不方便管理

maven聚合服务

一个父工程,里面几个子工程

新建maven的module

网关

基本功能

前端服务发给单体服务只用请求一个端口,请求多个微服务就需要请求多个端口?每个微服务都需要用户的登录信息,各自做登录信息校验很麻烦

网关就是路由转发身份校验

网关是对外暴露的微服务,可以从注册中心拿到各个微服务的地址,这样前端就是和单体架构一样只用请求一个端口就可以了,网关再去转发到各个微服务负载均衡选择具体实例。

 

自定义过滤器:

网关转发之前做登录校验

因为每一个微服务都需要获得用户的登录信息,比如购票、选座什么的,不可能让每一个微服务都去做JWT校验,所以把JWT校验放在【网关】中。

网关向微服务发起的是HTTP请求,所以把JWT校验信息保存在请求头中。

globalFilter全局处理器

控制过滤器的顺序【如何保证登录校验过滤器在转发过滤器之前?】

继承Order接口,getOrder返回小值,过滤器按照order从小到大的顺序执行

gatewayFilter指定接口过滤器

不是直接实现接口,要去继承抽象类工厂,而且要在yml文件中做配置

过滤器工厂类为了读取配置,创建定制化对象?

TokenValidateGatewayFilterFactory 必须以此为后缀

在yml文件中配置名称就是TokenValidate

定义顺序可以实现orderGatewayFilter

网关登录校验