24.nacos注册中心集群搭建、网关、过滤器 |
您所在的位置:网站首页 › 支付网关的含义和作用 › 24.nacos注册中心集群搭建、网关、过滤器 |
1、nacos注册中心集群的搭建
要想搭建nacos集群模式,这些集群中的每台nacos服务,都必须连接同一个数据库。因为我们的nacos都放在同一台主机上,所以我们必须为每台nacos起不同的端口号。 1.1修改nacos端口号 8849 8850 8851 E:\idea2023\nacos\nacos\conf\application.properties
1.3创建nacos数据库并导入相关的表结构和数据
集群为什么建奇数个? 节点数 大于等于一半,则认为整个集群挂掉了 1.6 修改product 如果商品微服务或订单微服务ip和端口号发生改变,那么我们必须修改前端代码 后台微服务可能存在成百上千的服务,难道前端必须都要记住每个微服务的ip和端口号? 在每个微服务接口访问前,都需要验证当前用户是否登录。 解决方案: 需要再所有微服务前,搞一个代理服务器。让前端记住代理服务器的地址。由代理把请求转发给后面的微服务。 所谓的API网关,就是指系统的统一入口,它封装了应用程序的内部结构,为客户端提供统一服 务,一些与业务本身功能无关的公共逻辑可以在这里实现,诸如认证、鉴权、监控(黑白名单)、路由转发等等。 添加上API网关之后,系统的架构图变成了如下所示: nginx: l Kong 基于Nginx+Lua[再nginx中可以编写代码]开发,性能高,稳定,有多个可用的插件(限流、鉴权等等)可以开箱即用。 问题: 只支持Http协议;二次开发,自由扩展困难;提供管理API,缺乏更易用的管控、配置方式。 l Zuul 1.0(慢 servlet 2.0 ) zuul2.0 没出来。 Netflix开源的网关,功能丰富,使用JAVA开发,易于二次开发 问题:缺乏管控,无法动态配 置;依赖组件较多;处理Http请求依赖的是Web容器,性能不如Nginx l Spring Cloud Gateway Spring公司为了替换Zuul而开发的网关服务,将在下面具体介绍。 注意:SpringCloud alibaba技术栈中并没有提供自己的网关,我们可以采用Spring Cloud Gateway来做网关 2.3springcloud -gateway网关的简介Spring Cloud Gateway是Spring公司基于Spring 5.0,Spring Boot 2.0 和 Project Reactor 等术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它的目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控和限流。 优点: 性能强劲:是第一代网关Zuul的1.6倍 功能强大:内置了很多实用的功能,例如转发、监控、限流等 设计优雅,容易扩展. 缺点 gateway内置了服务器 netty服务器。千万不要在使用tomcat作为服务器。 2.4如何使用gateway网关(1)gateway 依赖 org.springframework.cloud spring-cloud-starter-gateway(2)主启动类 @SpringBootApplication public class GatewayApp { public static void main(String[] args) { SpringApplication.run(GatewayApp.class,args); } }(3)配置文件 #端口号 server: port: 7000 #服务名称 spring: application: name: qy163-gateway1 #配置路由 cloud: gateway: routes: - id: qy163-product #唯一即可,如果没有默认UUID生成 order: 0 #优先级,值越小优先级越高 uri: http://localhost:8080 #真实要转发的微服务地址 http://localhost:8080/product/getById/1 predicates: - Path=/product/** #断言:当满足该断言,则会转发到uri地址,path:路径断言 - id: qy163-order uri: http://localhost:8090 predicates: - Path=/order/** 现在在配置文件中写死了转发路径的地址, 前面我们已经分析过地址写死带来的问题,. 接下来我们从注册中心获取此地址。 (1) gateway微服务中引入nacos依赖 com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery(2)修改配置文件
如果后面增加一个微服务-那么我们就得修改gateway的配置。 自动定位微服务。 (1)修改配置文件
路由(Route) 是 gateway 中最基本的组件之一,表示一个具体的路由信息载体。主要定义了下面的几个信息: id,路由标识符,区别于其他 Route。默认生成一个 uri,路由指向的目的地 uri,即客户端请求最终被转发到的微服务。 order,用于多个 Route 之间的排序,数值越小排序越靠前,匹配优先级越高。--不改 predicate,断言的作用是进行条件判断,只有断言都返回真,才会真正的执行路由。 filter,过滤器用于修改请求和响应信息。 2.8gateway路由的流程l *基于**Datetime**类型的断言工厂* 此类型的断言根据时间做判断,主要有三个: AfterRoutePredicateFactory: 接收一个日期参数,判断请求日期是否晚于指定日期 BeforeRoutePredicateFactory: 接收一个日期参数,判断请求日期是否早于指定日期 BetweenRoutePredicateFactory: 接收两个日期参数,判断请求日期是否在指定时间段内 -After=2019-12-31T23:59:59.789+08:00[Asia/Shanghai] l *基于远程地址的断言工厂* *RemoteAddrRoutePredicateFactory**:* 接收一个IP地址段,判断请求主机地址是否在地址段中 -RemoteAddr=192.168.1.1/24 l *基于**Cookie**的断言工厂* CookieRoutePredicateFactory:接收两个参数,cookie 名字和一个正则表达式。 判断请求 cookie是否具有给定名称且值与正则表达式匹配。 -Cookie=chocolate, ch. l *基于**Header**的断言工厂* HeaderRoutePredicateFactory:接收两个参数,标题名称和正则表达式。 判断请求Header是否 具有给定名称且值与正则表达式匹配。 key value -Header=X-Request-Id, \d+ l *基于**Host**的断言工厂* HostRoutePredicateFactory:接收一个参数,主机名模式。判断请求的Host是否满足匹配规则。 -Host=**.testhost.org l *基于**Method**请求方法的断言工厂* MethodRoutePredicateFactory:接收一个参数,判断请求类型是否跟指定的类型匹配。 -Method=GET l *基于**Path**请求路径的断言工厂* PathRoutePredicateFactory:接收一个参数,判断请求的URI部分是否满足路径规则。 -Path=/foo/{segment}基于Query请求参数的断言工厂 QueryRoutePredicateFactory :接收两个参数,请求param和正则表达式, 判断请求参数是否具 有给定名称且值与正则表达式匹配。 -Query=baz, ba. l *基于路由权重的断言工厂* WeightRoutePredicateFactory:接收一个[组名,权重], 然后对于同一个组内的路由按照权重转发 routes: -id: weight_route1 uri: host1 predicates: -Path=/product/** -Weight=group3, 1 -id: weight_route2 uri: host2 predicates: -Path=/product/** -Weight= group3, 9 3、过滤器第一种局部过滤:只对当前路由有效 第二种全局过滤器: 对所有的路由都有 全局过滤器:认证校验功能 当客户端第一次请求服务时,服务端对用户进行信息认证(登录) 认证通过,将用户信息进行加密形成token,返回给客户端aaaa,作为登录凭证 以后每次请求,客户端都携带认证的token 服务端对token进行解密,判断是否有效。 对于验证用户是否已经登录鉴权的过程可以在网关统一检验。 检验的标准就是请求中是否携带token凭证以及token的正确性。 下面的我们自定义一个GlobalFilter,去校验所有请求的请求参数中是否包含“token”,如何不包含请求参数“token”则不转发路由,否则执行正常的逻辑 自定义全局过滤器 要求:必须实现GlobalFilter,Ordered接口 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |