网关是我们经常提到的一个词,在各类服务中,网关服务也是独特的一类。那么,什么是网关?网关都起着什么样的作用?以及,我们怎么搭建自己的网关服务呢?本期 robust 就来聊一聊网关服务。
网易云音乐:点击播放
喜马拉雅:点击播放
企鹅FM:点击播放
求打赏🙇如果你觉得 Robust 这样一档技术类的谈话节目还不错,希望我继续做下去,不妨打赏支持。你可以扫描本文下方的二维码打赏,也可以加我微信后红包打赏。
- 什么是GateWay?
GateWay是用于控制服务的请求(如客户端发出的请求)与服务的响应(如向客户端发送数据)的调控系统。简单说,就是在原始架构基础上,在上游发送过来的请求,和已经存在的服务之间,加多一层控制层。 - API GateWay 是最常见的 GateWay 服务。
API 本身就是一种服务,我们不去管它背后的实现逻辑和架构,对于要使用 API 的人而言,这一个暴露的 API 就是我所需要的服务。在浏览器前端或手机客户端中调用 API 就是向该服务发出请求。API 向前端吐出对应的数据,就是服务的响应。 - 为什么需要GateWay?
我们来举一个典型的场景。在传统实现中,我们是如何根据不同的用户,返回不同的数据的?对于用户而言,他只能看到自己有权限的数据。我们一般是通过cookie鉴权,或者通过token鉴权的方式,然后在API服务端,鉴权之后,确认当前访问的是哪一个用户,然后再进行业务逻辑处理。但是,在这个场景中,你会发现,鉴权和业务逻辑必须写在同一套代码里面。而且,业务逻辑严重依赖鉴权结果,造成深度耦合。能不能让开发者专注业务逻辑,不要去搞鉴权的东西呢?
当然可以,这就是GateWay可以办到的事情。在 API 服务器外面再套一层,这一层实现鉴权,在真正向 API 请求数据时,已经完成了鉴权,API 后端代码拿到用户信息后,不用担心是否合法问题,直接取出数据进行处理后返回就可以了。这就是将鉴权交给网关层去做的典型场景。
除了鉴权,网关层还可以实现流量分发,避免服务挂掉,可以对响应数据进行处理后再返回给前端。总之,一旦中间多了一层GateWay,在不影响原始业务代码逻辑的情况下,还能干很多事。如果这个 GateWay 设计和实现的灵活,那么在处理一些问题上,就会变得非常方便,一插一拔就可能给搞定了。 - Serverless 中的 gateway:控制请求分发
- 网址转发
- 自己开发一个GateWay。
- 实现网址转发
- 实现鉴权功能
- 提供编程能力
- 网址转发
- 修改请求和响应的
- 提供可视化UI管理
- 安利一下我自己写的 easy-gateway。