背景
现代的应用程序,越来越依赖于后端的 Web 服务实现各种功能。在一些大型应用程序中,通常会有许多不同的服务,例如用户认证,支付,凭证管理等。这些服务可能来自不同的供应商,甚至可能由一个单独的服务实现。由于服务的数量和复杂性,它们集成起来可能很困难。开放式 API Gateway 可以作为这些服务的集成中心,将所有的请求路由到相应的服务端点。
Serverless 是一种通过云供应商提供的基于事件的模型实现应用程序的方法。与传统的客户端/服务器模型不同,Serverless 应用程序不需要专用服务器。它们是在云上运行的函数。这些函数呈现为 API 端点,向外部世界公开服务。开发人员可以创建这些函数,然后使用不同的语言,例如 Node.js、Python、Java、Go 等等,编写处理函数。
开放式 API Gateway 的优势
当多个服务以不同的服务端点,不同的 API 和数据格式提供时,开放式 API Gateway 可以将它们集成到单个入口点,并仅暴露出很小的 API 集合。这样,开发人员就可以仅使用单个 URL 来管理服务。下面,我们将介绍一些使用开放式 API Gateway 的优势:
跨服务访问 开放式 API Gateway 将所有服务终点集成在一起,使得可以通过单一 API 来访问所有服务。
安全性:当使用开放式 API Gateway 作为服务的公共接口时,可以在 API 网关上处理身份验证和授权,而不是在每个服务端点上单独实现。这部分的原因是在微服务架构中不同的服务端点都有不同的安全需求,这些需求数以百计甚至数以千计,使用各种技术来提高安全性,而使用 API Gateway 来为所有服务端点提供身份验证和授权,可以更容易应对这些场景。
缓存:API 网关可以对 API 调用进行缓存,避免对服务端点的重复调用。
监控:API 网关可以对调用以及吞吐量进行监控。
日志:API 网关可以记录所有流经它的请求和响应,使追踪日志信息变得更容易。
执行公共任务:开放式 API Gateway 可以处理网络流量控制,令牌重试机制以及转换 API 数据格式。这些功能通常是所有服务的共性,使用 API Gateway 统一处理可以提供更好的效率与便捷性。
开放式 API Gateway 的示例代码
下面是一个在 AWS Serverless 架构中使用开放式 API Gateway 的示例代码:
-- -------------------- ---- ------- ----- ------- - ----- ------- -- - ----- ------ - ----------------- ----- ---- - ----------- ----- ---- - ---------- -- --- ----- ------- - - --------------- ------------------- ------------------------------ ---- -- --- - -- ------- --- ------ - ----- ------ - ----- ------------------ ------ - -------- ----------- ---- ----- ---------------------- -- - ---- -- ------- --- ------- - ----- ------ - ----- ------------------ ------ ------ - -------- ----------- ---- ----- ---------------------- -- - ---- - ------ - -------- ----------- ---- ----- ---------------- -------- ------- --------- -- --- -------- --- -- - - ----- ------- - --------------------- ------ - -------- ----------- ---- ----- ---------------- -------- --------- ------ ------ --- -- - --
在这个示例代码中,我们使用了 AWS Lambda 作为服务端点,并在 Lambda 上创建了 API Gateway。从事件中解析出来的 http 方法、路径、消息体,去调用相应的方法,并返回结果。所有的结果都使用 JSON 对象进行包装并返回。
总结
使用开放式 API Gateway,可以将微服务结构中的所有微服务集成到单一 API 上,这使得应用程序更易于管理。开放式 API Gateway 还提供了像安全性、缓存、监控、日志、流量控制和报告等额外的功能。 Serverless API Gateway 是一个非常适合于微服务开发的选择,让开发人员只需要关注实际的业务逻辑,而无需关注服务发现、服务调用和复杂的集成流程,这大大降低了开发和运维的难度和压力。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64955e9d48841e989429264a