容器化微服务部署:从基础到高级
1. 实验资源清理
在完成任何实验后,可以运行 terraform destroy
命令来清理由 Terraform 管理的所有资源。不过要注意,对于生产服务而言,这是一个危险的命令。
2. 服务发现
当使用 Docker 处理容器集群时,管理工作会变得相当复杂。正确管理需要在不同主机间共享配置,并确保容器的启动和停止部分自动化。
静态配置在很多场景下会变得复杂,例如:
- 将微服务迁移到新的 AWS 区域或不同的云提供商时,如何通知使用该微服务的其他服务?
- 当通过功能标志控制新功能时,如何快速开启或关闭该功能?
- 负载均衡器如何知晓所有应接收流量的容器?
服务发现是解决这些问题的编排方法。像 Consul(https://www.consul.io/)和 etcd(https://etcd.io/)这类工具,允许将值存储在知名键后面,并能动态更新。
下面以 etcd 为例,结合基本的 Quart 服务和 etcd3 Python 库进行说明。假设按照 etcd 官网说明以默认选项启动 etcd,可在服务中添加配置更新代码:
# etcd_basic.py
from quart import Quart, current_app
import etcd3
# Can read this map from a traditional config file
settings_map = {
"dataservice_url": "/s