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

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

 发展路径不同: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快速开发接入平台:快速开发和发布API,类似ESB设计器。
 API网关引擎及管理平台: API网关,类似ESB总线,实现服务路由、安全、日志、流控、转换等功能。API管理平台类似ESB管控平台。
 监控和分析平台: 对于ESB和API的运行情况进行监控、分析、告警、报表展示。
 能力对外开放和运营服务平台: 实现API能力及ESB能力对外接入、发布、消费、计量与计费、运营和管理。
最后我们拿业界比较知名的开源网关kong来讲解他的原理和特性:

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等。

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

  1. kong 网关日志格式修改

    kong 网关日志格式修改 kong网关默认日志在/usr/local/kong/logs,主要有access.log,admin_access.log,error.log,access.log和ng ...

  2. 谈API网关的背景、架构以及落地方案--转

    原文地址:http://chuansong.me/n/465796751848 Chris Richardson曾经在他的博客上详细介绍过API网关,包括API网关的背景.解决方案以及案例.对于大多数 ...

  3. API网关之Kong网关简介

    1. Kong简介 Kong是一款基于OpenResty(Nginx + Lua模块)编写的高可用.易扩展的,由Mashape公司开源的API Gateway项目.Kong是基于NGINX和Apach ...

  4. Kong网关简介安装

    转载 李亚飞 大佬的文章:https://www.lyafei.com/ 背景 我们有批设备卖给了海外的服务商,老外请了第三方检测机构,检测设备与我们系统的安全性,结果找到了近 40+ 的安全漏洞,有 ...

  5. centos6.5 安装 kong 网关

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 最近要求了解下kong网关,然后在网上一顿找,说实话,度娘的力量还是不行啊,找出来的那些跟着配置,不 ...

  6. kong 网关教程入门

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 为什么使用API-Gateway 1. 方便客户端维护-- 每个请求方不用管理多个api url,统一访问api-gateway即可 2. 接口重构时 ...

  7. 以Docker方式安装和配置Kong网关和Konga控制台

    文章目录 以Docker方式安装和配置Kong网关和Konga控制台 前言 安装Kong 创建容器网络 启动PostgreSQL数据库 初始化数据 对Kong Admin API作安全防护 启动Kon ...

  8. KONG网关 — 介绍安装

    网关是微服务中不可或缺的一部分,它承载了所有请求流量入口,参数验证拦截,用户权限验证,但是除了JAVA的spring cloud之外,公共网关屈指可数,其中最受关注的就是KONG了,笔者半年前就已经在 ...

  9. Kong 网关 快速入门

    Kong api网关基础知识 一般业务场景 api网关的优缺点 Kong介绍 概念和特性 安装 Docker下安装 linux 下安装kong 安装问题 无DB模式 deck工具 通过Kong的res ...

最新文章

  1. java mvc学习_史上最全的SpringMVC学习笔记
  2. mysql 日志还原数据库_通过Mysql-bin日志恢复还原数据
  3. 激光雷达和毫米波雷达的区别
  4. Project查看资源分配情况
  5. linux vbox安装mac os,超简单的linux下virtualbox4.3.26安装配置黑苹果 OSX 10.9的办法
  6. (十一)GDBdebug调试技术——malloc()和free()发生故障
  7. python运行需要网络吗_python邮件和网络的简单使用
  8. UBNT设置AP模式注意事项
  9. R语言——(四)、数据读入与预处理
  10. 2018年海峡两岸光电展将在台北举办
  11. 计算学习理论PAC模型
  12. 学习笔记——经纬度坐标系及定位相关API
  13. 申请美国大学计算机专业,低GPA如何申请美国大学计算机专业
  14. RBP系统管理之用户审批
  15. linux 通过手机上网,Linux系统通过手机GPRS上网设置简介有哪些呢?
  16. 例解BITMAP的数据格式
  17. Mac下chromedriver下载及安装详解
  18. 【测试沉思录】22. 前端性能测试怎么做?
  19. ios图片编辑(看这个就够了!)
  20. GDB或delve调试Go程序查看变量显示<optimized out>解决办法

热门文章

  1. (php毕业设计)基于php的博客分享管理系统
  2. 微信公众号开发之 “`高级接口`” 总结
  3. 字符串转对象的三种方式
  4. vue-cli3.0 之 vue-lottie使用教程(渲染JSON动画)
  5. c语言进行数据统计分析的研究报告,如何撰写一份优质的数据分析报告?
  6. chrome各种版本下载地址:
  7. 身份证阅读器Android相片解码库报错libwlt2bmp.so:has text relocations解决方案
  8. 软件架构设计原则--迪米特原则
  9. DBUS学习-DBUS实例
  10. 计算机命令怎么输入,装备属性指令怎么输入 装备属性指令输入方法