架构设计架构思维技术架构

架构思维-《API网关概览篇》

2018-11-18  本文已影响228人  熬夜的猫头鹰

关注公众号架构思维干货抢先看

前世今生

在开始介绍网关之前,首先介绍两个概念BFF(Backend For Frontend)和网关,这两个概念及其容易混淆,所以首先借用Netflix和SoundCloud两个公司的系统架构层次演化来说明一下。

Netflix微服务分层架构(2017以及以前)

Netflix 2017年
这个分层架构共分四个层次

网关+边界API层(BFF)+一些前端服务(如安全认证,Playback相关服务,DRM等),统一由一个Netflix的前端团队负责,该团队也称边界工程(Edge Engineering)团队。

Netflix微服务分层架构(2018)

上述的Edge PaaS其实是一个单块架构,随着Netflix的前端业务变得更加复杂,Edge PaaS也逐渐遭遇康威法则的约束,暴露出如下问题:

主要变化是将边界API层分成两个子层次:

API聚合层,专注对后端微服务进行聚合,提供前端友好、抽象统一的API。API聚合层主要基于Java+后台服务的客户端SDK实现。API聚合层还按业务功能进行分集群部署(API Sharding)。

设备适配层BFF,专注对API聚合层的服务进行裁剪和适配,提供给不同的用户体验展示。

结论

SoundCloud

下面继续以SoundCloud公司为案例,通过一系列架构视图,展示SoundCloud微服务架构的分层组织方式。如果你阅读并理解了前面两篇文章的内容,那么就比较容易理解本文的内容,所有本文的分析会相对简单一点。

注,SoundCloud是一家德国网站,提供音乐分享社区服务,成长很快,Alexa世界排名已进入200位以内。

image.png

总结

API网关概念介绍

API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。

API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和管理服务。

通常情况下, API 网关要做很多工作,它作为一个系统的后端总入口,承载着所有服务的组合路由转换等工作,除此之外,我们一般也会把安全,限流,缓存,日志,监控,重试,熔断等放到 API 网关来做,那么可以试想在高并发的情况下,这里可能会出现一个性能瓶颈。

另外,如果没有开源项目的支撑前提下,自己来做这样一套东西,是非常大的一个工作量,而且还要做 API 网关本身的高可用等,如果一旦做不好,有可能最先挂掉的不是你的其他服务,而就是这个API网关。

知名开源网关:

Tyk:Tyk是一个开放源码的API网关,它是快速、可扩展和现代的。Tyk提供了一个API管理平台,其中包括API网关、API分析、开发人员门户和API管理面板。Try 是一个基于Go实现的网关服务。

Kong:Kong是一个可扩展的开放源码API Layer(也称为API网关或API中间件)。Kong 在任何RESTful API的前面运行,通过插件扩展,它提供了超越核心平台的额外功能和服务。

Orange:和Kong类似也是基于OpenResty的一个API网关程序,是由国人开发的,学姐也是贡献者之一。

Netflix zuul:Zuul是一种提供动态路由、监视、弹性、安全性等功能的边缘服务。Zuul是Netflix出品的一个基于JVM路由和服务端的负载均衡器。

apiaxle: Nodejs 实现的一个 API 网关。

api-umbrella: Ruby 实现的一个 API 网关。

总结,通过本文我们了解到了什么是 API 网关,网关的由来,以及API网关的作用和其在微服务架构中所处的地位。希望为各位架构师起到参考的价值。

上一篇下一篇

猜你喜欢

热点阅读