Skip to content

Latest commit

 

History

History
30 lines (18 loc) · 2.64 KB

golang编写API Server网关.md

File metadata and controls

30 lines (18 loc) · 2.64 KB

​ 一般客户端不能直接访问后台微服务,而是通过API网关来传递请求,API网关作用:一般负责服务路由,负载均衡、缓存、访问控制和鉴权等功能。

​ 现在主流的设计一般会采用微服务架构。其思路不是开发一个巨大的单体式应用,而是将应用分解为小的、互相连接的微服务,每个业务逻辑都被分解为一个微服务,微服务之间通过REST API通信。

​ Docker 作为容器工具可以把:业务逻辑容器、数据库容器、储存容器、队列容器使得软件可以拆分成若干个标准化容器,然后像搭积木一样组合起来,让彼此通信,从而形成微服务。

​ 因此微服务很适合用 Docker 容器实现,每个容器承载一个服务。一台计算机同时运行多个容器,从而就能很轻松地模拟出复杂的微服务架构。

​ API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。 API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和管理服务。

使用API网关有如下好处:

  • 向客户端隐藏了应用如何被划分到微服务的
  • 向每个客户端提供最优API
  • 将调用大量服务的逻辑转到API网关,因而简化了客户端
  • 减少了请求/往返数量。比如,API使客户端可以在一趟请求中向多个服务拉取数据。请求少了,开销就少了,因此提升了用户体验。API网关对手机应用来说是非常必要的。

API网关模式也有一些缺点:

  • 增加了复杂度 - API网关自身也是一个需要被开发、部署和管理的部分。
  • 增加了响应时间,因为多了API网关这个网络跃点 - 但是,对绝大部分应用,多一次往返的开销是不明显的。

网关层作为客户端与服务端的一层挡板,主要起到了三大类作用:

第一类作用是隔离作用,作为企业系统边界,隔离外网系统与内网系统。

第二类作用是解耦作用,通过解耦,使得微服务系统的各方能够独立、自由、高效、灵活地调整,而不用担心给其他方面带来影响。

第三类作用是脚手架作用,提供了一个地点,方便通过扩展机制对请求进行一系列加工和处理。