Kong

Kong:一个请求的生命期

Kong 扮演的角色 作为一个 API 网关,Kong 既可以作为负载均衡器,也可以作为反向代理、认证中心等等。可以看作一个基于 Lua 的超级加强版的 Nginx Kong 的每个 Node 是多进程的。有一个 master 进程,多个 worker 进程。每个进程又拥有多个线程。就像下图的黄色圈圈。 作为 worker 的线程,各自又会管理很多个连接。这些连接可以如下分类: 可用连接:这些连接是空闲的,可以被 worker 使用 未阻塞连接:当一个新请求到来时,worker 会从可用连接中取出一个,然后将其放入未阻塞连接中。当请求处理完毕后,worker 会将连接放回可用连接中 正在处理的连接:由于采用多路复用模型,实际上正在处理的连接只有一个。未阻塞连接会一个接一个地被处理 阻塞连接:当请求处理过程中,需要等待外部服务的响应时,连接会被放入阻塞连接中。当外部服务响应后,连接会被放回未阻塞连接中 保持存活(keepalive)的连接:当请求处理完毕后,worker 会判断是否需要保持连接。如果需要,连接会被放入保持存活的连接中。当下一个请求到来时,worker 会从保持存活的连接中取出一个,然后将其放入未阻塞连接中 Keep-Alive 是用于复用连接的方式。由于 TLS 需要进行 SSL 握手,这个过程的开销比较大。所以,如果能够复用连接,就可以避免这个开销。 Phases 每个 Kong Node 都会经历多个阶段。 Init 这个阶段只会在 Node 启动时执行,且只在 Master 进程执行。主要做以下事情: 创建 Lua VM 加载配置文件 检查迁移 加载插件 初始化数据库 / Dbless / Hybird 初始化 DNS 初始化 PDK 初始化证书 初始化路由和插件迭代器 Init Worker 之后进入 init_worker 阶段。这个阶段会在每个 Worker 进程中执行。主要做以下事情: Read more...
1 of 1