首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务系列:Kong网关实现API负载均衡

微服务系列:Kong网关实现API负载均衡

原创
作者头像
AIOPS
修改2023-11-14 20:09:27
5621
修改2023-11-14 20:09:27
举报
文章被收录于专栏:高可用高可用

1. 背景

和其他的应用程序架构类似,API往往也需要同时处理大量的请求和流量。如果所有的请求都集中在单一的服务器或实例上,很容易导致性能瓶颈和系统崩溃。解决方案就是将流量分散到多机。

本文我们就聊下Kong的负载均衡方式、算法及通过实战介绍Kong怎么将API实现负载均衡。

微服务系列传送门:

1、 为什么需要API网关

2、 Kong初探

3、 Kong安装配置

4、 通过Kong提供API服务

5、 通过Kong网关给API限流

6、 通过Kong网关给API加Key鉴权

2. Kong的负载均衡

与Nginx类似,Kong也是通过多个backend实现负载平衡,同时支持健康检查等功能,如下图

2.1 Kong支持的负载均衡方式

基于DNS的负载均衡:Kong可以从DNS服务器接收更新,通过解析主机名为多个IP地址并将请求分发到这些地址,实现基于DNS的负载均衡。这种方式不需要进行Kong内部的配置,适用于后端服务的注册在Kong之外进行管理的场景。

环形负载均衡器(Ring-balancer):Kong作为服务注册中心,通过单个HTTP请求添加/删除节点,并立即开始/停止接收流量。环形负载均衡器可以动态地管理后端服务,无需进行DNS更新,提供了更灵活和动态的负载均衡方式。

2.2 Kong支持的负载均衡算法

➢ 轮询(Round-robin)算法:默认使用的算法,将请求依次分发给每个目标,实现权重均衡的轮询分发。

➢ 一致性哈希(Consistent-hashing)算法:根据指定的哈希输入(如消费者、IP地址、请求头、Cookie等)将请求分发给目标。支持主要和备用哈希属性,当主要哈希失败时会使用备用哈希属性。

➢ 最小连接数(Least-connections)算法:选择连接数最少的目标进行请求分发,根据目标的权重进行加权分发。

➢ 延迟(Latency)算法:根据上游响应时间选择延迟最低的目标进行请求分发。该算法适用于单一类型的上游服务,并且要求请求的QPS尽可能大以提高负载均衡效果。

由于生产环境直接配置后端IP的场景较多,我们下面就Ring-balancer来实验。

3. 实战

3.1 搭建测试后端

在之前文章微服务系列:通过Kong提供API服务-腾讯云开发者社区-腾讯云,已经使用自建镜像启动了8081的服务端口,这里我们再启动一个8082的端口

[root@VM-4-13-centos kong]# docker run -d -p 8082:8000 87ded7bc6294

3.2 创建upstream对象

通过下面指令,创建名称为example_upstream的upstream对象

curl -X POST http://localhost:8001/upstreams --data name=example_upstream

3.3 创建upstream target

将8081、8082对应的API服务,加入example_upstream

[root@VM-4-13-centos kong]# curl -X POST http://localhost:8001/upstreams/example_upstream/targets --data target='127.0.0.1:8081'
[root@VM-4-13-centos kong]# curl -X POST http://localhost:8001/upstreams/example_upstream/targets --data target='127.0.0.1:8082'

3.4 更新service

修改example_service的指向为上步创建的example_service

[root@VM-4-13-centos kong]# curl -X PATCH http://localhost:8001/services/example_service \
 --data host='example_upstream'

3.5 在浏览器验证负载均衡能力

刷新浏览器,会发现结果在8081和8082之间轮询出现。

4. 总结

本文通过实际部署展示了Kong网关怎么给API实现负载均衡的,大家有什么问题欢迎和我讨论。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景
  • 2. Kong的负载均衡
    • 2.1 Kong支持的负载均衡方式
      • 2.2 Kong支持的负载均衡算法
      • 3. 实战
        • 3.1 搭建测试后端
          • 3.2 创建upstream对象
            • 3.3 创建upstream target
              • 3.4 更新service
                • 3.5 在浏览器验证负载均衡能力
                • 4. 总结
                相关产品与服务
                负载均衡
                负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档