一. 微服务
二. Api Gateway
三. Kong 的使用
一. 微服务
对于一些传统的 大型项目,传统的方式会有一些缺陷,比如说 新人熟悉系统成本高(因为整个系统作为一个整体,彼此会有一定的牵连),项目重
启时间长,重构困难(对于一个新技术的引入,可能需要对整个项目推到重来),不易于更换新的技术,并且整个项目会慢慢变成巨无霸。
所以说就会有微服务这种概念,一个服务实现一个不同的特性或者功能。每一个独立的微服务都是一个小型应用。一些微服务可能会暴露一些api 给
其他的一些微服务或者是客户。如下图1(把各个业务拆分):
对于微服务,目前 像Netflix ,亚马逊,ebay 等都有应用。
当然,微服务也有一定的缺陷,比如说 每个服务(每个应用) 如果都有一个 数据库的话,那么如何维持 数据库事务。再比如说,服务之间的调用可
能会由于 网络的原因变得不可达,那么 代码中要额外增加 请求失败的代码。
二. Api Gateway
api gateway 即 api 网关。所有的请求首先会经过这个网关。这有点类似于前端控制器模式,也有点类似于 Facade模式。如下图2所示:
由于所有的请求会先经过这个 api 网关,所以 可以在 这里做 权限控制,安全,负载均衡,请求分发,监控等等。
那么,为什么要用 这个 api gateway 这个东西,主要原因在于 一个客户可以直接请求每一个服务。每一个服务都有一个 url。这些url 会和 负载均
衡设备相映射。为了得到产品信息,客户需要发很多的 request 请求。这样就不是很好。另外一个问题就是 可能协议不同,不一定是 http,比如说可能
由于防火墙或者什么的限制,可能需要用到其他的协议。再另外,以后重构的时候可能要拆分接口,或者合并接口,由于客户端和 API 直接打交道,所以
比较难。
所以说,如上 图1 加入了 api gateway 就可以变为 如下图3所示:
当然,任何技术都有缺陷, api gateway 也是一样,比如说 容易成为性能瓶颈。
三. Kong 的使用
Kong 是一个现成 的 api gateway 的解决方案,它在 nginx 上进行了开发。
api gateway 的实现方式有很多种,比如说 JVM 上可以用基于NIO 的框架比如Netty,Vertx,Spring Reactor,JOSS Undertow。现在一个比较流程的没有基于 JVM 的就是 NodeJs。其他的还有 Nginx Plus。
以下介绍 Kong 的使用。
-
3.1 安装 Kong
-
3.2 加入 API
3.1 安装 Kong
参考:https://getkong.org/install/ ,里面写得比较详细了,但是要预先安装一个 Cassandra 数据库(介绍:http://cassandra.apache.org/)。安装之后,Kong 项目会监控两个端口,一个是 8000,一个是 8001。 8000端口是可以给用户访问,就是说用户发送请求先到 Kong 项目的 8000 端口,然
后Kong 项目帮你转到你的后端应用api。 8001 端口是管理端口,比如说,管理员可以通过 8001端口来得到你加入过的 api。
3.2 加入 API
参考文档:https://getkong.org/docs/0.5.x/admin-api/ , 里面介绍了 api 的管理,包括 增删查改。下面介绍我第一次 使用时 还有有些不清楚的点:
3.2.1 列出 所加过的 api
3.2.2 加入 api
单个加入:
上面这段命令表示:
-
--url:http://localhost:8001/apis/ 固定的,加入 api 就得写这个,表示给 kong管理。
-
upstream_url:表示我们的网站。相当于一个请求前缀。
-
request_path:就是具体我们的 api。
利用request_host 部署全部的 api:
3.2.3 删除 api
后面 这个串表示 加入的api的 id。
四. 参考:
1. API Gateway 模式: http://microservices.io/patterns/apigateway.html
2. Nginx: https://www.nginx.com/blog/introduction-to-microservices/
3. Kong 项目官网:https://getkong.org/
http://blog.csdn.net/pzxwhc/article/details/49873623
相关推荐
在微服务架构中,API Gateway 是一个至关重要的组件,它...在实际应用中,常见的API Gateway实现包括Kong、Netflix Zuul、Amazon API Gateway等,它们提供了丰富的功能和高度的可定制性,能够适应各种业务场景的需求。
Kong 是一个开源的 API 管理层,用于保护、管理和扩展 API 和微服务。它提供了一种灵活的方式来管理 API 流量、身份验证、速率限制、分析和插件等功能。 API Gateway 模式是微服务架构中的一种常见模式,它作为一个...
Kong是企业级的API网关,它提供了一个强大的平台,用于管理和保护微服务API。Kong的核心是基于Nginx,结合了OpenResty的Lua脚本能力,使其能够处理复杂的路由、认证、限流等任务。以下是关于Kong的一些关键知识点: ...
关于金融行业的微服务API网关,目前有多种实现,如Spring Cloud的Kong、Orange、Netflix Zuul和SpringCloud Gateway等。虽然框架层面并未区分专门的金融和非金融应用,但在实际应用中,金融行业可能需要更严格的安全...
另一种是通过RESTful API,这是一个内部API,可用于管理Kong Gateway的配置和状态。RESTful API命令可以在集群中的任何节点上运行,确保了配置的一致性。 Kong还支持基于插件的模块化系统,允许开发者通过安装和...
网关技术选型.mp4):这部分可能会讨论不同的API网关选择,包括开源的Zuul、Spring Cloud Gateway、Kong等,以及自定义实现的可能性。Nginx因其高性能和灵活性,经常被选为API网关的实现工具。 3. **Nginx下载安装**...
《PyPI官网下载的tencentcloud-sdk-python-apigateway-3.0.553.tar.gz详解》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了丰富的Python库,供全球开发者免费下载使用。本文将深入探讨在PyPI...
通过API Gateway,可以简化客户端的交互,避免直接与多个服务通信的复杂性,同时提供额外的安全性和性能优化。 Kong是一个流行的开源API Gateway,基于Nginx和Lua插件,能够处理多种API管理和路由需求。不过,对于...
Zuul 和 Kong 是常用的API Gateway实现,它们可以作为微服务的统一接口,减轻了后端服务的压力。 4. **服务间通信**:服务间通信是微服务架构的关键,通常采用RESTful API或者RPC(远程过程调用)方式。Spring ...
在IT行业中,API(应用程序编程接口)是软件系统之间交互的关键工具,而Kong则是一个流行的微服务和API网关,提供安全、管理和分析等功能。本文将深入探讨如何在CentOS 7.1环境下离线安装Kong API网关及其依赖包。 ...
我们从百亿流量交易系统 API 网关(API Gateway)的现状和面临问题出发,阐述微服务架构与 API 网关的关系,理顺流量网关与业务网关的脉络,带来最全面的 API 网关知识与经验。内容涉及: 百亿流量交易系统 API ...
1. **Kong Gateway**: 主要处理API请求和响应,执行各种操作如认证、限速、缓存等。 2. **Kong DB**: 用于存储API配置、消费者、插件配置等数据,可以使用内置的Cassandra或PostgreSQL数据库。 3. **Kong Admin API*...
在WK框架中,可能采用了 Zuul、Kong 或 Gateway 等流行的API网关解决方案,以实现高效的数据传输和保护内部微服务的安全。 3. **Vue3**: Vue3 是一个前端JavaScript框架,以其易用性、高性能和强大的生态系统著称...
应用网关(API Gateway)是微服务架构中的关键组件之一,负责将多个服务集成到一起并提供统一的接口。应用网关的功能包括: * 统一接入 * 流量管控 * 协议适配 * 安全维护 常见的应用网关包括: * Nginx+Lua * ...
6. **API Gateway**:作为对外统一入口,处理路由、认证、限流等,如使用Zuul或Kong。 7. **消息队列**:可能用到RabbitMQ或Kafka等,实现服务间的异步通信和解耦。 8. **持续集成/持续部署(CI/CD)**:如Jenkins或...
Kong API Gateway是一个流行的开源API管理平台,用于构建、运行和保护微服务和API。它支持多种云环境,并提供包括身份验证、速率限制、缓存等功能。Pulumi Kong库将Kong的强大功能与Pulumi的灵活性相结合,使开发者...
虽然 Lagom 不直接提供 API Gateway 功能,但可以与其他解决方案(如 Kong 或 Netflix Zuul)集成,以实现统一的入口点,处理身份验证、路由和限流等需求。 ### 7. **服务生命周期** Lagom 提供了一套完整的服务...
总之,python-kong-0.4.0是Python开发者与Kong API Gateway交互的重要工具,它简化了API管理和微服务网关的配置工作。无论是新手还是经验丰富的开发者,都可以借助这个库,更高效地利用Kong的功能来提升项目质量。
kong-client是kong的java sdk,它是一种高性能且可扩展的微服务API网关 先决条件 Spring3.2.5+ JDK 1.7以上 Kong2.0.1+ 特征 与springMVC的快速集成:适用于所有spring Web应用程序,只需较少的配置即可工作 服务...
Go是一种流行的、静态类型的编程语言,因其高效、简洁和强大的并发支持而被广泛用于后端服务和微服务架构,包括开发API Gateway的插件。 在压缩包内的“说明.txt”文件,可能是对这个插件集合的详细文档,包括如何...