背景信息
Consul 是一个服务网格解决方案,其核心之一的 Consul KV 是一个分布式键值数据库,主要用途是存储配置参数和元数据,同时也允许用户存储索引对象。
在微服务架构模式下,当扩容、硬件故障等导致上游服务发生变动的情况出现时,通过手动撰写配置,维护上游服务信息的方式,会导致维护成本陡增。对此,Apache APISIX 提供了服务发现注册中心的功能,实现动态获取最新的服务实例信息,以降低用户的维护成本。
目前,Apache APISIX 借由社区贡献的 consul_kv
模块,支持了基于 Consul KV 的服务发现注册中心。
插件工作原理
Apache APISIX 利用 Consul KV 分布式键值存储能力的 consul_kv
模块,解耦了服务的提供者和消费者,实现了服务发现注册中心的两大核心功能。
- 服务注册:服务提供者向注册中心注册服务。
- 服务发现:服务消费者通过注册中心查找服务提供者的路由信息。
在此基础上构建的 Apache APISIX 将更灵活地适应现有的微服务架构,更好地满足用户需求。
如何使用
本文中的测试环境均使用 docker-compose 在 Docker 中搭建。
- 下载 Apache APISIX。
# 拉取 apisix-docker 的 Git 仓库
git clone https://github.com/apache/apisix-docker.git
- 创建 Consul 文件夹和配置文件。
# 创建 consul 文件夹
mkdir -p ~/docker-things/consul/ && cd "$_"
# 创建配置文件
touch docker-compose.yml server1.json
- 修改
docker-compose.yml
文件。
version: '3.8'
servi