Kong是在客户端和(微)服务间转发API通信的API网关,通过插件扩展功能。Kong有两个主要组件:
- Kong Server :基于nginx的服务器,用来接收API请求。
- Apache Cassandra :用来存储操作数据。
你可以通过增加更多Kong Server机器对Kong服务进行水平扩展,通过前置的负载均衡器向这些机器分发请求。根据文档描述,两个Cassandra节点就足以支撑绝大多数情况,但如果网络非常拥挤,可以考虑适当增加更多节点。
对于开源社区来说,Kong中最诱人的一个特性是可以通过插件扩展已有功能,这些插件在API请求响应循环的生命周期中被执行。插件使用Lua编写,而且Kong还有如下几个基础功能:HTTP基本认证、密钥认证、、CORS( Cross-origin Resource Sharing,跨域资源共享)。
全部的功能是要收费的! 一张图说明使用Kong-API网关前后的效果:
brew安装kong
brew tap mashape/kong
brew install kong
5分钟体验
基本操作
启动kong
kong start -c <path_to_config>
检查kong是不是正常启动了
正常启动会输出:[OK] Started
,kong会监听两个端口:
- 8000: API请求的代理层。
- 8001: restful的配置管理API。
停止kong
kong stop
重新加载kong
kong reload
添加API
通过RESTful API添加你的API
curl -i -X POST \
--url http://localhost:8001/apis/ \
--data 'name=mockbin' \
--data 'upstream_url=http://mockbin.com/' \
--data 'request_host=mockbin.com'
检查API是不是已经被加如了:
HTTP/1.1 201 Created
Content-Type: application/json
Connection: keep-alive
{
"request_host": "mockbin.com",
"upstream_url": "http://mockbin.com/",
"id": "2eec1cb2-7093-411a-c14e-42e67142d2c4",
"created_at": 1428456369000,
"name": "mockbin"
}
发起一个请求
curl -i -X GET \
--url http://localhost:8000/ \
--header 'Host: mockbin.com'
启动插件
通过API配置插件
下面增加一个key-auth
插件
curl -i -X POST \
--url http://localhost:8001/apis/mockbin/plugins/ \
--data 'name=key-auth'
检查API是否已经被配置了
curl -i -X GET \
--url http://localhost:8000/ \
--header 'Host: mockbin.com'
# 返回错误,应该key-auth要求提供apikey头和其他参数
HTTP/1.1 403 Forbidden
...
{
"message": "Your authentication credentials are invalid"
}
增加用户
用户可以被单独管理,以及控制他们对API的访问。
新建一个用户
$ curl -i -X POST \
--url http://localhost:8001/consumers/ \
--data "username=Jason" \
--data "custom_id=13"
HTTP/1.1 201 Created
Content-Type: application/json
Connection: keep-alive
{
"username": "Jason",
"created_at": 1428555626000,
"id": "bbdf1c48-19dc-4ab7-cae0-ff4f59d87dc9"
}
为用户创建秘钥
$ curl -i -X POST \
--url http://localhost:8001/consumers/Jason/key-auth/ \
--data 'key=ENTER_KEY_HERE'
{
"consumer_id": "876bf719-8f18-4ce5-cc9f-5b5af6c36007",
"created_at": 1443371053000,
"id": "62a7d3b7-b995-49f9-c9c8-bac4d781fb59",
"key": "62eb165c070a41d5c1b58d9d3d725ca1"
}
如果不指定key参数,kong会为你生成一个,推荐不指定。
检查用户凭证是否有效
curl -i -X GET \
--url http://localhost:8000 \
--header "Host: mockbin.com" \
--header "apikey: ENTER_KEY_HERE"
使用API key
# 参数
curl http://kong:8000/{api path}?apikey=<some_key>
# headers
curl http://kong:8000/{api path} -H 'apikey: <some_key>'
上游HTTP头。
当一个客户端被验证通过后,这个插件会附加一些参数到请求中,可以用来完成你自己的逻辑。
- X-Consumer-ID, the ID of the Consumer on Kong
- X-Consumer-Custom-ID, the custom_id of the Consumer (if set)
- X-Consumer-Username, the username of the Consumer (if set)
kong如何和consul搭配使用
很多项目用consul做服务发现,consul支持dns做服务发现,所以直接将kong的dns服务器地址配置成consul就可以了。
dns_resolver: server
dns_resolvers_available:
server:
address: "192.168.9.31:8600"
问题:kong是否可以配置2-3个dns服务器,然后自己负载均衡。
目前不能,kong只能接受1个dns地址,需要用户自己在consul前面搭建一个load balancer,然后在kong中配置这个lb的地址。
问题:kong不支持consul
kong使用普通dns查询,不支持SRV查询,但是Consul的服务发现只支持SRV查询。
kong会在0.9.0加入支持.
相关推荐
Kong是一个高可用、易扩展的API网关项目,其核心基于OpenResty构建,利用了Nginx的高性能和Lua语言的灵活性。Kong的设计允许它轻松应对大量网络请求,并且可以水平扩展,实现多个Kong服务器的集群部署。它通过负载...
Kong是一个专门用于微服务架构的开源API网关,它以轻量级、高性能和可扩展性著称。API网关作为微服务架构中的重要组件,负责处理外部请求并将其适配到后端的微服务上。Kong支持多种插件,这些插件可以实现访问控制、...
Kong OPENRESTY Kong 是一个开源的 API 管理层,用于保护、管理和扩展 API 和微服务。它提供了一种灵活的方式来管理 API 流量、身份验证、速率限制、分析和插件等功能。 API Gateway 模式是微服务架构中的一种常见...
Kong是开源的企业级API网关,它提供了一种在微服务架构中管理和保护API的方式。这个"Kong入门指南.zip"文件包含了一份PDF文档,帮助初学者了解并掌握Kong的基本概念、安装与配置,以及如何利用其特性来构建安全、可...
《哥斯拉大战金刚:C++编程实战》 在标题"Ex3-Godzilla vs Kong_king_C++_"中,我们可以推断这是一个关于C++编程的练习项目,它以电影中的经典对决——哥斯拉(Godzilla)与金刚(Kong)为主题。这可能是一个趣味性...
掌握edgexfoundry go语言版本 管理模块运行制理与源码解读,包括jwt 与 oauth2 两种安全模式。 vault kong 实战 docker 镜像制作
Java分布式架构设计实战课程是2022年最新的学习资源,涵盖了从基础到高级的全方位内容,旨在帮助开发者深入理解并掌握Java在分布式系统中的应用。这套课程共有13个章节,每个章节都针对特定的分布式架构技术或概念...
在"微服务气相实战源码.zip"这个压缩包中,我们可以期待找到一系列与微服务相关的编程源代码。这些源码可能是用于实现微服务架构中的不同组件,包括服务发现、负载均衡、API网关、配置管理、数据库访问层以及业务...
OpenResty的优势在于其开发速度快、运行性能高、支持动态加载脚本、资源占用少,并且没有Stop-the-World (STW)现象,因此在业界常被用来作为流量接入网关,如K8S Ingress和知名的API网关Kong、APISIX等都是基于...
微服务架构设计与实战是当前IT领域中的热门话题,它是一种新型的应用开发和部署模式,旨在提高系统的可扩展性、可维护性和敏捷性。微服务架构通过将单一应用程序拆分为一组小型、独立的服务来实现这一目标,每个服务...
08 | 微服务网关(Kong):网关在微服务架构中的作用 09 | 配置中心:如何在微服务治理中发挥更大的作用? 10 | 可观测性之 Trace:更快速定位问题 11 | 可观测性之监控告警:利用 Prometheus 和 Grafana 收集监控...
使用Python 3学习OpenCV 4计算机视觉-第三版 这是Packt发行的的代码库。...并对面Kong的性别和年龄进行分类构建增强现实应用程序以跟踪3D图像使用机器学习模型,包括SVM,人工神经网络(ANN)和深度神经网络(DNN)
在CelebA-HQ和新的动物面Kong数据集(AFHQ)上进行的实验验证了我们在视觉质量,多样性和可伸缩性方面的优越性。 为了更好地评估图像到图像的翻译模型,我们发布了AFHQ,具有较大域间和域内差异的高质量动物脸。 ...
2. **孔令贤**(http://blog.csdn.net/lynn_kong):华为公司的工程师,他在博客中分享了他在OpenStack项目中的实践和理解,对于了解OpenStack在企业环境中的应用非常有帮助。 3. **liujunwei1234**...
=4s),它们是: 冷气机汽车喇叭孩子们玩耍狗皮钻Kong发动机怠速枪声手提钻警笛街头音乐 随附的元数据包含每个声音摘录的唯一 ID 及其给定的类名。 此数据集的示例包含在随附的 git 存储库中,完整数据集可从此处...
作者由零基础慢慢深入,由浅入深,逐步掌握Java知识生态圈,帮助Javaava初学者和爱好者,预测帮助读者掌握Java基础知识,了解开发技巧并积累一定的项目实战经验。为什么要写这样一本书荀子曰:“不闻不若闻之,闻之...
总的来说,这份试题反映了中考英语听力测试的基本要求和格式,为学生提供了实战演练的机会,同时也是教师评估学生听力水平和教学效果的重要工具。通过这样的练习,学生能更好地适应中考的听力部分,提高整体英语成绩...
9. 地区和学校资源:文中出现了CCCRotarySecondarySchool,HongKong的提及,表明实验室的建设可能与香港的某所中学(罗德岛中学)有关联,这反映了乐高机器人实验室可能与特定的教育机构合作,或者是在该学校建立的...
本书《FreeBSD Device Drivers》由Joseph Kong编写,为开发者提供了全面且深入的FreeBSD设备驱动程序开发指导。无论你是初学者还是有经验的开发者,都能从中获得宝贵的见解和技术知识。通过学习这本书,你将能够有效...
描述中的“气Kong”可能是由于输入错误,我们暂且忽略,因为这并没有提供具体的信息。 标签“Python”确认了这个压缩包与Python编程语言相关,可能包含了代码示例、学习笔记、实战项目或者教程文档。由于没有更具体...