使用 Kong 的负载均衡功能

业务场景

假设我们在abc.com域名下有两个服务,分别为 Search-Service 和 API-Service。

用户端

Search-Service 提供搜索服务,通过search.abc.com为用户提供服务。
API-Service 提供搜索服务,通过api.abc.com为用户提供服务。

用户看不到这两个服务的实现细节。

服务端

早期,Search-Service 内部使用百度提供的搜索服务。
后来,Search-Service 增加了必应的提供的搜索服务,用户对此增加的过程无感知。
最终,Search-Service 按照一定的权重来使用两者的服务。

API-Service 内部使用聚合数据提供的API服务,为了保证稳定性,聚合数据提供了两套服务,API-Service 按照一定的权重来使用这两套服务。

架构图

使用 Kong 的负载均衡功能_第1张图片

在 Konga 中新建 Upstream

新建 search-upstream

baidu.combing.com 两个Target,权重各为100。

使用 Kong 的负载均衡功能_第2张图片

新建 api-upstream

op.juhe.cnv.juhe.cn 两个Target,权重各为100。

使用 Kong 的负载均衡功能_第3张图片

在 Konga 中新建 Service

使用 Kong 的负载均衡功能_第4张图片

在 Konga 中新建 Route

使用 Kong 的负载均衡功能_第5张图片

测试

正常情况

用浏览器多次访问:search.abc.com:8000(kong监听8000端口,域名需要本地解析),发现跳转到百度和必应的情况各占50%。

输出结果 占比
跳转到必应 50%
跳转到百度 50%

用浏览器多次访问:api.abc.com:8000(kong监听8000端口,域名需要本地解析):

输出结果 占比 备注
Juhe Open Api V1.0 50% http://op.juhe.cn/ 的输出结果
Juhe Open Api V3.0 50% http://v.juhe.cn/ 的输出结果

一个 Target 失效的情况

将聚合数据提供的其中一个服务标记为失效:
使用 Kong 的负载均衡功能_第6张图片

用浏览器多次访问:api.abc.com:8000(kong监听8000端口,域名需要本地解析):

输出结果 占比 备注
Juhe Open Api V1.0 0% http://op.juhe.cn/ 的输出结果
Juhe Open Api V3.0 100% http://v.juhe.cn/ 的输出结果

可见,虽然其中一个 Target 失效,对使用 api.abc.com 的用户来说,服务依然是可用的。

原文链接:https://www.sdk.cn/details/oL3eV8jW2woDkwAW0Y

SDK社区是一个中立的社区,这里有多样的前端知识,有丰富的api,有爱学习的人工智能开发者,有风趣幽默的开发者带你学python,还有未来火热的鸿蒙,当各种元素组合在一起,让我们一起脑洞大开共同打造专业、好玩、有价值的开发者社区,帮助开发者实现自我价值!

你可能感兴趣的:(api)