服务网关产品(二)微服务下的网关

2020-03-18  本文已影响0人  de_self

在微服务的架构下,首先我们将微服务内部服务调用忽略,将以服务网关作为对外提供服务的唯一出口,由网关系统作为服务安全的第一道屏障,网关负责整个服务的限流、认证、鉴权、日志记录等工作。在网关后的内部服务我们采用白名单的处理方式,保障内部调用的安全。

微服务网关.png
一、限流、熔断、降级

  限流作为网关安全的第一步,首先用于防止恶意请求强刷数据,拖垮内部服务,其次,由于服务并发能力有限,我们对正常请求也需控制流量,保证系统的可用性。同时,我们的业务场景中存在下级部门刷指标数据和刷取上级数据的情况,我们进行限流的同时,会进行流量分析,存在稳定流量和大流量数据的ip与调用方,进行黑名单处理。
  熔断:对服务进行熔断配置后,可以阻止新的调用该服务的进程产生,防止新的调用该服务的进程一直累加,其他服务请求无法进入,拖垮整个服务

熔断.png
  降级:在发现服务异常后,对服务进行降级处理,以其他低级服务代理原服务。降级后的服务可满足原服务基本需求,降低原服务异常对对外服务的影响。
  技术实现:引入阿里巴巴的开源组件sentinel进行熔断限流降级的操作
spring-cloud-starter-alibaba-sentinel 作为sring-cloud-alibaba的基础组件,可在gitbub上 下载与查看源码,并可以对熔断限流降级进行可视化配置
  以@SentinelResource("sentinelApi")注解配置服务名,可针对某个api服务进行熔断限流等配置
也可以通过guava等其他组件,自写限流降级

二、jwt、Spring Security认证服务

  在身份认证过程中,jwt作为现在较为流行的认证机制,现多用于前后端分离的身份认证,可以快速搭建jwt认证服务器。通过设置资源服务器与消费服务器保证内部认证的安全性,通过私钥与加密方法,认证访问者身份,且jwt返回的token中可以携带信息搭配springSecurity的@AuthenticationPrincipal等注解,可直接使用部分信息。
  jwt携带信息虽然安全性较低,但可以存储部分不敏感信息用于简单信息携带,减少请求频次。在security配置中,将整个认证,日志记录,权限认证的工作流注入到服务中。

上一篇 下一篇

猜你喜欢

热点阅读