gateway 网关
gateway 网关
为什么要用网关
如果不用网关
客户端需要发起多次请求,增加网络通信的成本以及客户端处理的复杂性
服务的鉴权会分布在每个微服务中处理,客户端对于每个服务的调用都需要重复鉴权。
可能不同服务采用不同的协议,比如 HTTP RCP,客户端需要调用多个服务,需要对不同协议进行适配。
网关的作用
针对所有请求进行统一鉴权,限流,熔断,日志。
协议转换。针对多种不同协议,在网关层可以统一处理后以 HTTP 对外提供服务。
统一错误码处理。
请求转发,并且可以基于网关实现内外网的隔离。
在网关层进行请求拦截,获取请求中附带的用户身份信息,调用统一认证中心对请求进行身份认证,在确认了身份之后再检查是否有资源的访问权限。
网关的本质是对请求进行路由转发以及对请求前置和后置的过滤。
请求的转发和路由:接收客户端的所有请求,并将请求转发到后端服务中,提供统一的业务接口给客户端
过滤:网关会拦截所有的请求来完成一系列的横切工作,比如鉴权,限流。
配置文件
id:自定义路由 ID 保持唯一。
uri:目标服务地址,支持普通 URI 以及 lb://应用注册服务名称,后者表示从注册中心获取集群服务地址。
predicates:路由条件,根据匹配的结果决定是否执行该请求路由。
filters:过滤规则,包含 pre 和 post 过滤。其中 StripPrefix=1,表示 gateway 根据该配置的值去掉 URL 路径的部分前缀,1 表示去掉一个前缀,即在转发的目标 URI 中去掉 gateway
gateway 相关概念:
路由(Route):它是网关的基本组件,由 ID,目标 URI,predicates,filters 集合组成
谓词(Predicate):java8 进入的函数式接口,提供断言功能。可以匹配 HTTP 请求中的任何内容。如果 Predicate 集合判断结果为 true,则意味着请求会被当前 Router 进行转发。
过滤器(Filter):为请求提供前置和后置过滤
当客户端发送一个请求到网关时,网关会根据一系列 Predicate 的匹配结果决定访问哪个 Route 路由,然后过滤器链进行请求的处理,过滤器链可以在请求发送到后端服务器前和后执行。
这就是网关的大体介绍了,网关可以鉴权、熔断、限流、路由转发。其实网关最重要的就是路由和谓词两部分。
总结
这篇文章我们讲了为什么需要用网关,以及网关在微服务中的作用是什么,希望这篇文章能让你更好的了解网关。
❤️ 感谢大家
如果你觉得这篇内容对你挺有有帮助的话:
欢迎关注我❤️,点赞👍🏻,评论🤤,转发🙏
关注
盼盼小课堂
,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。
版权声明: 本文为 InfoQ 作者【周杰伦本人】的原创文章。
原文链接:【http://xie.infoq.cn/article/917841ce54419e2f243c68430】。文章转载请联系作者。
评论