API网关产生背景以及kong网关产品介绍

最近在整理API网关的培训资料,也想来谈一谈我们为什么需要API网关,以及kong网关的一些特性分析。互联网的大环境下,以及微服务架构盛行的今天,为解决企业对外部互联网集成交互的高效和高质量,采用分布式集成架构去中心化减少风险,并降低臃肿的企业IT应用架构每年带来的巨大维护成本节省投资,API网关就这样在一些工程师的引领和推动下产生了,API网关解决的问题包括:
 后端的服务能否对接多终端?如何快速检索到需要的API服务?
 如何知道API被谁消费了?如何管理业务系统暴露的上万API ?
 API是否被非法调用,如何预警? 已有业务系统API如何接入?
 如何控制消费者的流量的速率?API能否下线?………
API网关产生背景以及kong网关产品介绍_第1张图片

微服务架构中微服务组件的交互建议通过网关,API网关及管理平台负责保障微服务应用之间集成的安全、高效、可追踪、可管理。API接入协议简单、轻量、快捷,更适合作为互联网应用的交互技术,弥补了SOA架构模式较重的缺点,作为集成与共享技术是SOA的有;力补充。API网关从功能上看和SOA架构的ESB非常相似,如果我们将微服务架构=SOA架构,那么SOA架构中的ESB中间件=API网关了,那么这两种有什么区别和共同点呢?
API网关产生背景以及kong网关产品介绍_第2张图片

 发展路径不同:ESB主要是大企业倡导的,而微服务包含API网关是由技术工程师引领的。
 集成场景不同:ESB重在解决企业内大型应用的集成(SAP/Oracle ERP/大型的软件),而API网关使用Restful协议主要解决的是内部服务对外交互(互联网)以及微服务应用的交互。
 协议决定性能不同:互联网需要更高的性能,服务慢用户体验自然差,WebService相比Restful更大包含业务操作更多,性能自然相对较差。
 部署架构不同:ESB一般是集中模式,统一总线管理服务。API网关可以与Docker容器实现Sidercar自动注入部署,更轻量且更容易实现分布式管理服务。这里展开一下,API网关应该基于业务边界和客户端应用程序进行隔离,而不是像ESB一样作为所有内部微服务的单一聚合器。(微服务改造过的企业内部可能会部署n个网关), 微服务架构提倡的最佳实践“Backend for front-end”的模式(BFF),其中每个API网关可以为每个客户端提供不同的API。
 技术架构相似:ESB和API网关都是重在集成,包括路由/代理、安全认证、流控和熔断、日志监控、输入/输出转换等这些功能非常类似。
 无法替代:ESB无法替代API网关,即使现在ESB能支持Restful协议,但无法在去中心化的微服务架构中替代API网关的角色,产品和实施成本也较高。API网关无法替代ESB,基于ESB可以实现更好的服务治理以及CEP、服务编排等高级应用。
最后总结一下:微服务的整合,仍然需要中间件,我们甚至可以把这个中间件叫MSB,micro-service bus(API网关)。因此我们仍然可以从过去ESB的理念中汲取一些有用的知识和经验。因此我们最后来看一下完整的企业集成/监控/共享的整体架构体系应该是这样的:
API网关产生背景以及kong网关产品介绍_第3张图片

 API快速开发接入平台:快速开发和发布API,类似ESB设计器。
 API网关引擎及管理平台: API网关,类似ESB总线,实现服务路由、安全、日志、流控、转换等功能。API管理平台类似ESB管控平台。
 监控和分析平台: 对于ESB和API的运行情况进行监控、分析、告警、报表展示。
 能力对外开放和运营服务平台: 实现API能力及ESB能力对外接入、发布、消费、计量与计费、运营和管理。
最后我们拿业界比较知名的开源网关kong来讲解他的原理和特性:
API网关产生背景以及kong网关产品介绍_第4张图片

Kong网关具有以下的特性:
 可扩展性: 通过简单地添加更多的服务器,可以轻松地进行横向扩展,这意味着您的平台可以在一个较低负载的情况下处理任何请求;
 模块化: 可以通过添加新的插件进行扩展,这些插件可以通过RESTful Admin API轻松配置;
 在任何基础架构上运行: Kong网关可以在任何地方都能运行。您可以在云或内部网络环境中部署Kong,包括单个或多个数据中心,包括Docker容器部署。
 数据中心用于存储Kong集群节点信息、API、消费者、插件等信息,目前提供了PostgreSQL和Cassandra支持,如果需要高可用建议使用Cassandra。
 Kong集群中的节点通过gossip协议自动发现其他节点,当通过一个Kong节点的管理API进行一些变更时也会通知其他节点。【横向搭建多个kong节点,连接同一数据库,对外再将多个kong节点作为上游反向代理形成统一API入口】
Kong网关主要组成和插件分析:
kong 是在客户端和(微)服务间转发API通信的API网关,通过插件扩展功能。Kong 有三个主要组件:
 Kong Server :基于nginx的服务器,用来接收 API 请求。
 Apache Cassandra/PostgreSQL :用来存储操作数据。
 Kong dashboard/konga:UI管理工具,也可以使用 restful方式通过admin api进行管理。
kong包含插件【插件的作用范围可以是全局(global)、服务(service)、路由(router)。】
 身份认证插件:Kong提供了Basic Authentication、Key authentication、OAuth2.0 authentication、HMAC authentication、JWT、LDAP authentication认证实现。插件的作用范围可以是全局(global)、服务(service)、路由(router)。
 安全控制插件:ACL(访问控制)、CORS(跨域资源共享)、动态SSL、IP限制、爬虫检测实现。
 流量控制插件:请求限流(基于请求计数限流)、上游响应限流(根据upstream响应计数限流)、请求大小限制。限流支持本地、Redis和集群限流模式。
 分析监控插件:Galileo(记录请求和响应数据,实现API分析)、Datadog(记录API Metric如请求次数、请求大小、响应状态和延迟,可视化API Metric)、Runscope(记录请求和响应数据,实现API性能测试和监控)。
 转换插件:请求转换(在转发到upstream之前修改请求)、响应转换(在upstream响应返回给客户端之前修改响应)。
 日志应用插件:TCP、UDP、HTTP、File、Syslog、StatsD、Loggly等。

你可能感兴趣的:(kong,api,网关)