【API网关Kong系列三】 - 战前预热

1、Kong使用

kong 的使用起来很简单,对于熟悉Nginx的大神来说,就更不在话下了。不过在使用前先来介绍下其内的一些基本概念,以便我们在使用时不会感到懵逼。

2、管理方式

《【API网关Kong系列三】 - 战前预热》

从上图中可以看出其中8000/8443分别是Http和Https的转发端口,等介于Nginx的80端口,而8001端口便是默认的管理端口,我们可以通过Http Restful API来动态管理Kong的配置。

如: 我们来看一个典型的Nginx的配置对应在Kong上是怎么样的
下面是一个典型的Nginx 配置

upstream helloUpstream { 
        server localhost:3000 weight=100; 
} 
server { 
        listen 80; 
        location /hello { 
        proxy_pass http://helloUpstream; 
        } 
} 

这是一个典型的Nginx 转发配置我在就不多啰嗦了。
下面我们来看看其对应Kong中的配置

# 配置 upstream 
curl -X POST http://localhost:8001/upstreams 
    --data "name=helloUpstream" 

# 配置 target 
curl -X POST http://localhost:8001/upstreams/hello/targets 
    --data "target=localhost:3000" --data "weight=100" 

# 配置 service 
curl -X POST http://localhost:8001/services 
    --data "name=hello" --data "host=helloUpstream" 

# 配置 route 
curl -X POST http://localhost:8001/routes 
    --data "paths[]=/hello" 
    --data "service.id=8695cc65-16c1-43b1-95a1-5d30d0a50409" 

curl -X POST http://localhost:8001/routes 
    --data "hosts[]=a.com,b.com,*.abc.com" 
    --data "service.id=8695cc65-16c1-43b1-95a1-5d30d0a50409" 

这一切配置都是通过其Http Restful API 来动态实现的,无需我们在手动的 reload Nginx.conf 。开发的同学看到这是不是感觉到很幸福了。

在上述的配置中涉及到了几个概念:upstrean、target、service、route等概念,它们是Kong的几个核心概念,也是我们在使用Kong Api 时经常打交道的,下面我们就其几个核心概念做一下简单的说明。

3、关键名词解析

  • Upstream

Upstream 对象表示虚拟主机名,可用于通过多个服务(目标)对传入请求进行负载均衡。例如:service.v1.xyz 为Service对象命名的上游host是service.v1.xyz对此服务的请求将代理到上游定义的目标。

  • Target

目标IP地址/主机名,其端口表示后端服务的实例。每个上游都可以有多个target,并且可以动态添加Target。

由于上游维护Target的更改历史记录,因此无法删除或者修改Target。要禁用目标,请发布一个新的Targer weight=0,或者使用DELETE来完成相同的操作。

  • Service

顾名思义,服务实体是每个上游服务的抽象。服务的示例是数据转换微服务,计费API等。

服务的主要属性是它的URL(其中,Kong应该代理流量),其可以被设置为单个串或通过指定其protocol, host,port和path。

服务与路由相关联(服务可以有许多与之关联的路由)。路由是Kong的入口点,并定义匹配客户端请求的规则。一旦匹配路由,Kong就会将请求代理到其关联的服务。

  • Route

路由实体定义规则以匹配客户端的请求。每个Route与一个Service相关联,一个服务可能有多个与之关联的路由。与给定路由匹配的每个请求都将代理到其关联的Service上。

Service 和 Route 的组合(以及它们之间的关注点分离)提供了一种强大的路由机制,通过它可以在Kong中定义细粒度的入口点,从而使基础架构路由到不同上游服务。

  • Consumer

Consumer 对象表示服务的使用者或者用户。您可以依靠Kong作为主数据库存储,也可以将使用者列表与数据库映射,以保持Kong与现有的主数据存储之间的一致性。

  • Plugin

插件实体表示将在HTTP请求/响应生命周期期间执行的插件配置。它是如何为在Kong后面运行的服务添加功能的,例如身份验证或速率限制。

将插件配置添加到服务时,客户端向该服务发出的每个请求都将运行所述插件。如果某个特定消费者需要将插件调整为不同的值,您可以通过创建一个单独的插件实例,通过service和consumer字段指定服务和消费者 。

4、对应关系

  • Upstream : target -> 1:n
  • Service:Upstream -> 1:1 or 1:0 (Service 可以直接指向具体的Target,相当于不做负载均衡)
  • Service : Route -> 1:n

5、总结

这一章读起来比较枯燥,主要介绍了以下几个知识点。
1: Kong 的转发和路由端口: 8000 和 8443
2: 介绍了Kong 中的几个核心概念, Upstream、Route、Service、Consumer、Targe、 Plugin 的作用。
3: 介绍了 核心组件的对应的关系

想了解更多关于Kong网关的请移步
>>>>> 企业级API网关Kong

    原文作者:阅历笔记
    原文地址: https://segmentfault.com/a/1190000019886923
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞