百汇游戏网站开发商,什么是软件外包产业,微信网站在线登录网页版,公司漏沟设计logo免费一、什么是服务网关
服务网关 路由转发 过滤器 1、路由转发#xff1a;接收一切外界请求#xff0c;转发到后端的微服务上去#xff1b;
2、过滤器#xff1a;在服务网关中可以完成一系列的横切功能#xff0c;例如权限校验、限流以及监控等#xff0c;这些都可以通过…一、什么是服务网关
服务网关 路由转发 过滤器 1、路由转发接收一切外界请求转发到后端的微服务上去
2、过滤器在服务网关中可以完成一系列的横切功能例如权限校验、限流以及监控等这些都可以通过过滤器完成其实路由转发也是通过过滤器实现的。
二、为什么需要服务网关
上述所说的横切功能以权限校验为例可以写在三个位置
每个服务自己实现一遍 写到一个公共的服务中然后其他所有服务都依赖这个服务 写到服务网关的前置过滤器中所有请求过来进行权限校验 第一种缺点太明显基本不用第二种相较于第一点好很多代码开发不会冗余但是有两个缺点
由于每个服务引入了这个公共服务那么相当于在每个服务中都引入了相同的权限校验的代码使得每个服务的jar包大小无故增加了一些尤其是对于使用docker镜像进行部署的场景jar越小越好 由于每个服务都引入了这个公共服务那么我们后续升级这个服务可能就比较困难而且公共服务的功能越多升级就越难而且假设我们改变了公共服务中的权限校验的方式想让所有的服务都去使用新的权限校验方式我们就需要将之前所有的服务都重新引包编译部署。 而服务网关恰好可以解决这样的问题
将权限校验的逻辑写在网关的过滤器中后端服务不需要关注权限校验的代码所以服务的jar包中也不会引入权限校验的逻辑不会增加jar包大小 如果想修改权限校验的逻辑只需要修改网关中的权限校验过滤器即可而不需要升级所有已存在的微服务。 所以需要服务网关
三、服务网关技术选型 引入服务网关后的微服务架构如上总体包含三部分服务网关、open-service和service。
1、总体流程
服务网关、open-service和service启动时注册到注册中心上去 用户请求时直接请求网关网关做智能路由转发包括服务发现负载均衡到open-service这其中包含权限校验、监控、限流等操作 open-service聚合内部service响应返回给网关网关再返回给用户
2、引入网关的注意点
增加了网关多了一层转发原本用户请求直接访问open-service即可性能会下降一些但是下降不大通常网关机器性能会很好而且网关与open-service的访问通常是内网访问速度很快 网关的单点问题在整个网络调用过程中一定会有一个单点可能是网关、nginx、dns服务器等。防止网关单点可以在网关层前边再挂一台nginxnginx的性能极高基本不会挂这样之后网关服务就可以不断的添加机器。但是这样一个请求就转发了两次所以最好的方式是网关单点服务部署在一台牛逼的机器上通过压测来估算机器的配置而且nginx与zuul的性能比较根据国外的一个哥们儿做的实验来看其实相差不大zuul是netflix开源的一个用来做网关的开源框架 网关要尽量轻。
3、服务网关基本功能
智能路由接收外部一切请求并转发到后端的对外服务open-service上去
注意我们只转发外部请求服务之间的请求不走网关这就表示全链路追踪、内部服务API监控、内部服务之间调用的容错、智能路由不能在网关完成当然也可以将所有的服务调用都走网关那么几乎所有的功能都可以集成到网关中但是这样的话网关的压力会很大不堪重负。 权限校验只校验用户向open-service服务的请求不校验服务内部的请求。服务内部的请求有必要校验吗
API监控只监控经过网关的请求以及网关本身的一些性能指标例如gc等
限流与监控配合进行限流操作
API日志统一收集类似于一个aspect切面记录接口的进入和出去时的相关日志
上述功能是网关的基本功能网关还可以实现以下功能
A|B测试A|B测试时一块比较大的东西包含后台实验配置、数据埋点看转化率以及分流引擎在服务网关中可以实现分流引擎但是实际上分流引擎会调用内部服务所以如果是按照上图的架构分流引擎最好做在open-service中不要做在服务网关中。