网站首页 > 技术教程 正文
公有云、容器化和微服务(micro service)正在逐渐取代原有的IT架构,这使得API在公司的信息系统中呈指数级增长。面对这样的增长,公司都会需要一个高效的管理工具。
开源API独角兽Kong就是这样的工具。它的主要产品是API开源网关,用户通过它可以对流量进行分析,管理和不同API相关的开发人员、消费者、合作伙伴和客户等。
Kong 的前世今生
Kong 的开发初衷,来自于创始团队对互联网产品发展的笃信:他们认为互联网系统的“微服务化”、“去中心化”是必然趋势,即: 未来软件产品功能一定会更加细碎,随着产品处理的业务越来越复杂,更多功能会变得模块化。多年前大家的手机里大多是简单的打电话、发短信,但如今手机中的 App 已经承载了人们生活中的方方面面,没有人出门可以完全离得开手机,越是受到用户喜爱的爆款应用,后台的功能、产品设计和服务就越复杂。以大家熟悉的打车软件为例,在用户眼中,软件后台是数据中心,但其背后“藏着”价格计算、路径导航、司机推荐、结算系统等细微环节, 一个小小的 App 背后对应着成千上万个“微服务”。
而这个趋势所对应的产品开发过程也将逐步“分布化”与“解耦化”: 如果一个产品功能出现问题,为了让整个系统不至于受到影响,微功能之间必须采取分布式开发并进行管理。要达到这样的效果,微服务之间需要经过解耦,形成点对点的通讯关系,而涉及到通讯,就相当于在产品内部形成了多个 API,微服务之间相互调用。而涉及到调用,就势必要确保其中的连接性与安全性。服务网格 Kong Mesh 就是专门解决这些复杂性功能交互的产品。
Kong 最早的招牌产品是 “Kong Gateway”,是一款可以管理 API 全生命周期的网关工具,2022年初这款产品的总下载量已超过2.7亿次,每月活跃实例达到270万, 成为了帮助用户从单体应用平滑迁移到微服务架构的标准工具。
Kong 的基本架构
那么,我们回到 Kong,来看一下 Kong 的整体架构。
- Kong 基于 Nginx 来实现 Api Gateway 基本的负载均衡、反向代理等功能。由 C 语言编写的 Nginx 有着超高的性能和低内存开销。
- OpenResty 是一个基于 Nginx 的库,它将 Nginx 进行封装,并提供了整个生命周期的 Hook( 钩子 ),使得开发者可以通过 Lua 脚本对 Nginx 进行插件化管理。
什么是 Hook ?钩子编程( hooking ),也称作“挂钩”,是计算机程序设计术语,指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术。处理被拦截的函数调用、事件、消息的代码,被称为钩子(hook )。简单来说就是在每个生命周期调用一个函数,而你只要实现这个函数就可以进行中间操作等功能。例如:你想要做饭,做饭的整个生命周期可以概括为 洗锅->烧油->放菜->出锅。而 Hook 则是在每个步骤中会调用的。比如在洗锅后会调用洗锅的 Hook 、烧油后会调用一个烧油的 Hook 。而你则可以实现洗锅的 Hook,在里面做一些事。比如你实现了洗锅的 Hook,其功能是检查锅洗的干不干净。那么系统将会在执行到洗锅这个步骤后检查有没有人实现洗锅的 Hook,结果就发现了你声明的检查洗锅的函数。接下来就会调用你写的函数来检查锅洗的干不干净。
- Kong 使用PostgreSQL 或 Cassandra 来对其配置文件进行持久化存储,使得可以进行集群管理。
- Kong 提供了插件模型,使用 Lua 脚本来对 Nginx 整个生命周期进行扩展。实现了一些常用插件( 限流、熔断、验权等 )。
Kong特点
- Cloud-Native:与平台无关,Kong可以在任何平台上运行-从裸机到容器-并且可以在本机上的每个云上运行。
- Kubernetes-Native:使用官方的Ingress Controller通过本地Kubernetes CRD声明性地配置Kong,以路由和连接所有L4 + L7通信。
- 动态负载平衡:跨多个上游服务对流量进行负载平衡。
- 基于哈希的负载平衡:具有一致的哈希/粘性会话的负载平衡。
- 熔断器:智能跟踪不健康的上游服务。
- 运行状况检查:主动和被动监视您的上游服务。
- 服务发现:在第三方DNS解析器(例如Consul)中解析SRV记录。
- 无服务器:直接从Kong调用和保护AWS Lambda或OpenWhisk功能。
- WebSockets:通过WebSockets与您的上游服务进行通信。
- gRPC:与gRPC服务进行通信,并通过日志记录和可观察性插件观察流量
- OAuth2.0:轻松将OAuth2.0身份验证添加到您的API。
- 日志记录:通过HTTP,TCP,UDP或磁盘记录对系统的请求和响应。
- 安全性:ACL,僵尸程序检测,允许/拒绝IP等…
- Syslog:登录到系统日志。
- SSL:为基础服务或API设置特定的SSL证书。
- 监视:实时监视提供关键的负载和性能服务器指标。
- 转发代理:使Kong连接到中间透明HTTP代理。
- 认证:HMAC,JWT,基本等。
- 速率限制:基于许多变量来阻止和限制请求。
- 转换:添加,删除或处理HTTP请求和响应。
- 缓存:在代理层缓存并提供响应。
- CLI:从命令行控制Kong群集。
- REST API:Kong可以使用其RESTful API进行操作,以实现最大的灵活性。
- 地理复制:跨不同区域的配置始终是最新的。
- 故障检测和恢复:如果您的Cassandra节点之一发生故障,则Kong不会受到影响。
- 集群:所有Kong节点自动加入集群,并在各个节点之间更新其配置。
- 可扩展性:Kon本质上是分布式的,只需添加节点即可水平扩展。
- 性能:Kong通过扩展和使用NGINX作为核心轻松处理负载。
- 插件:可扩展的体系结构,用于向Kong和API添加功能。
Kong 安装
在这里以在CentOS 7下安装Kong 2.2版本说明。注意CentOS 7安装PostgreSQL不再列出,可以参考网上的文章进行安装。
Kong-Dashboard安装。对于Kong网关本身也提供了Kong Dashboard管理页面,下面再看下Dashboard的安装。在安装Dashboard前需要首先安装Node.js,具体如下:
在启动后再配置Dashboard需要绑定的Kong Server,如下:
猜你喜欢
- 2024-10-11 如何使用Nginx对Artifactory进行http应用
- 2024-10-11 IntelliJ IDEA必装插件以及SpringBoot使用小技巧合集
- 2024-10-11 WeCube 2.8.0 发布,一站式IT架构管理和运维工具
- 2024-10-11 Kong系列(三)——Kong插件「IP Restriction」使用
- 2024-10-11 docker开箱即用的java版本nginx-clojure实现负载均衡
- 2024-10-11 RTMP和RTSP的区别(rtp rtmp区别)
- 2024-10-11 「开源资讯」njs 0.4.1 发布,nginx 的 JavaScript 脚本语言
- 2024-10-11 Nginx如何支持OpenTracing - Jaeger
- 2024-09-22 免费又好用的缓存插件,非Speed Optimizer莫属
- 2024-09-22 web中间件nginx性能分析与调优(nginx中间件怎么看版本号?)
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)