微服务中服务网关的重要性

一、什么是服务网关

服务网关 = 路由转发 + 过滤器

1、路由转发:接收一切外界请求,转发到后端的微服务上去;

2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。

二、为什么需要服务网关

上述所说的横切功能(以权限校验为例)可以写在三个位置:

每个服务自己实现一遍

写到一个公共的服务中,然后其他所有服务都依赖这个服务

写到服务网关的前置过滤器中,所有请求过来进行权限校验

第一种,缺点太明显,基本不用;

第二种,相较于第一点好很多,代码开发不会冗余,但是有两个缺点:

由于每个服务引入了这个公共服务,那么相当于在每个服务中都引入了相同的权限校验的代码,使得每个服务的jar包大小无故增加了一些,尤其是对于使用docker镜像进行部署的场景,jar越小越好;

由于每个服务都引入了这个公共服务,那么我们后续升级这个服务可能就比较困难,而且公共服务的功能越多,升级就越难,而且假设我们改变了公共服务中的权限校验的方式,想让所有的服务都去使用新的权限校验方式,我们就需要将之前所有的服务都重新引包,编译部署。

而服务网关恰好可以解决这样的问题:

将权限校验的逻辑写在网关的过滤器中,后端服务不需要关注权限校验的代码,所以服务的jar包中也

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
微服务架构网关作为服务的入口,扮演着非常重要的角色。对于网关的认证和鉴权,可以通过以下几种方式进行设计: 1. 使用JWT令牌认证:JWT令牌是一种轻量级的认证方式,可以在用户登录后颁发一个包含用户信息的JWT令牌,然后将该令牌存储在客户端。当客户端请求微服务时,将JWT令牌携带在请求头网关可以通过验证JWT令牌的签名和有效期来判断令牌是否有效,从而进行认证和鉴权。 2. 使用OAuth2认证:OAuth2是一种标准的认证协议,可以通过OAuth2服务器颁发访问令牌,然后将访问令牌存储在客户端。当客户端请求微服务时,将访问令牌携带在请求头网关可以通过OAuth2服务器验证访问令牌的有效性,从而进行认证和鉴权。 3. 使用API密钥认证:API密钥是一种简单的认证方式,可以为每个微服务颁发一个唯一的API密钥,然后将API密钥存储在客户端。当客户端请求微服务时,将API密钥携带在请求头网关可以通过验证API密钥的有效性来进行认证和鉴权。 4. 使用服务代理认证:服务代理是一种将多个微服务封装在一起的方式,可以通过服务代理对微服务进行统一的认证和鉴权。服务代理可以在请求微服务之前进行认证和鉴权,从而保证请求的合法性。 总之,在微服务网关的认证和鉴权非常重要,可以根据业务需求和安全要求,选择合适的认证方式进行设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值