关于 arch-scalability
arch-scalability 是供 OpenClaw 使用的系统架构技能,帮助设计和实施可扩展方案。它涵盖扩缩容、负载均衡、缓存、数据库副本与队列解耦等常见手段。
主要功能
- 01水平与垂直扩缩容
- 02负载均衡
- 03Redis 与 CDN 缓存
- 04数据库只读副本
- 05队列解耦
- 06扩缩容监控与错误处理
适用场景
- 01应对电商促销流量峰值
- 02扩展实时数据处理应用
- 03分散微服务工作负载
- 04将单体应用迁移至云原生架构
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill arch-scalability安装后在 Claude Code 中输入/arch-scalability确认已加载。
详细介绍
arch-scalability
用途
此技能使 OpenClaw 能够设计和实现可扩展的系统架构,重点是通过水平扩展和垂直扩展、负载均衡、缓存策略(例如 Redis 或 CDN)、数据库副本以及基于队列的解耦来应对负载增长,确保应用在发展过程中依然保持高性能和可靠性。
适用场景
当应用遇到流量高峰、需要弹性分配资源,或需要分配工作负载以避免瓶颈时,请使用此技能,例如促销期间的电子商务网站、实时数据处理应用,或需要处理可变用户负载的微服务。对于云原生设计或单体应用迁移,应在开发早期应用此技能。
核心功能
- 水平扩展:添加相同的实例(例如,通过 AWS Auto Scaling)以分配负载;使用 Kubernetes 等工具扩展 Pod。
- 垂直扩展:升级现有资源(例如,增加 EC2 实例的 CPU/RAM)以满足即时容量需求,但要监控限制,避免停机。
- 负载均衡:使用 NGINX 或 AWS ELB 在服务器之间分配流量;支持轮询或最少连接算法。
- 缓存:使用 Redis 实现内存缓存,或使用 CDN(例如 Cloudflare)缓存静态资源,以降低延迟并减少数据库访问。
- 数据库副本:在 MySQL 或 PostgreSQL 中设置只读副本,以处理读密集型查询,避免主数据库过载。
- 队列解耦:使用 RabbitMQ 或 Kafka 分流任务,防止高吞吐量系统出现同步瓶颈。
使用模式
要进行水平扩展,请在 AWS 中配置自动扩展组;要进行垂直扩展,请以编程方式调整实例类型。对于缓存,请使用 Redis 实现缓存旁路等模式,缓存频繁访问的数据。对于负载均衡,请将 NGINX 集成为反向代理。将任务路由到队列以解耦服务,确保异步处理。始终监控指标(例如,通过 Prometheus),并在 CPU > 80% 时触发扩展事件。模式示例:在 Node.js 应用中,处理任务前检查队列长度,并动态扩展工作进程。
常用命令/API
执行可扩展性任务时使用以下确切命令。设置用于身份验证的环境变量,例如,连接 Redis 时使用 export REDIS_API_KEY=$SERVICE_API_KEY。
-
水平扩展(AWS CLI):创建自动扩展组:
aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-group --launch-configuration-name my-config --min-size 1 --max-size 5 --vpc-zone-identifier subnet-123456 -
垂直扩展(AWS EC2):修改实例类型:
aws ec2 modify-instance-attribute --instance-id i-12345678 --instance-type "{\"Value": "t3.medium"}" -
负载均衡(NGINX 配置):编辑
/etc/nginx/nginx.conf并添加:
upstream backend { server 192.168.1.1:80; server 192.168.1.2:80; } server { listen 80; location / { proxy_pass http://backend; } } -
缓存(Redis CLI):设置和获取缓存值:
redis-cli -h redis-host SET user:1 "John Doe" EX 3600
redis-cli -h redis-host GET user:1 -
数据库副本(MySQL):创建副本:
mysql -u root -p -e "CALL mysql.rds_create_replication_group('my-group', 'my-replica');"(适用于 AWS RDS) -
队列解耦(RabbitMQ):发布消息:
rabbitmqadmin publish exchange=logs routingKey=info payload="{'message': 'High load detected'}
OpenClaw 集成的 API 端点:使用 POST 请求 /api/scalability/scale-group,并在 JSON 请求体中提供 { "group": "my-group", "action": "scale-out", "instances": 2 },同时包含身份验证标头 Authorization: Bearer $SERVICE_API_KEY。
集成说明
在代码中封装可扩展性逻辑来进行集成;例如,使用 Python 中的 AWS SDK 检查指标并触发扩容:导入 boto3,然后执行 autoscaling = boto3.client('autoscaling')。对于 Redis,通过 redis-py 库进行连接:import redis; r = redis.Redis(host='redis-host', password=os.environ['REDIS_API_KEY'])。使用 YAML 等配置文件设置参数:
scaling:
min_instances: 1
max_instances: 5
threshold: 80 # CPU percent
确保服务位于同一 VPC 中,以实现低延迟通信。对于 CDN,通过 API 配置 Cloudflare:curl -X PUT "https://api.cloudflare.com/client/v4/zones/zone-id/settings/development_mode" -H "Authorization: Bearer $CLOUDFLARE_API_KEY" -d '{"value":"on"}'。先在预发布环境中测试集成。
错误处理
主动处理错误:对于 Redis 连接,使用 try-except 块捕获 ConnectionError,并通过指数退避机制重试(例如,等待 2^x 秒)。在负载均衡中,监控 502 错误,并在服务器运行状况检查失败时扩容。对于数据库副本,使用 MySQL 中的 SHOW SLAVE STATUS 检查复制延迟;如果延迟超过 5 秒,则回退到主库。队列错误(例如,RabbitMQ 连接失败)应通过 Sentry 等工具触发告警;代码片段:
import pika
try:
connection = pika.BlockingConnection(pika.URLParameters(os.environ['RABBITMQ_URL']))
except pika.exceptions.AMQPConnectionError as e:
print(f"Queue error: {e}. Retrying in 5 seconds...")
time.sleep(5)
# Retry logic here
记录所有错误及其时间戳和指标,以便进行事后事件分析。
具体使用示例
-
示例:使用 NGINX 负载均衡器扩展 Web 应用
对于处理用户请求的 Node.js Web 服务器,首先设置 NGINX:按上述说明编辑配置,然后运行nginx -s reload。在代码中使用 AWS SDK 自动扩容:const AWS = require('aws-sdk'); const autoscaling = new AWS.AutoScaling(); autoscaling.setDesiredCapacity({ AutoScalingGroupName: 'my-group', DesiredCapacity: 3 }).promise();当流量超过阈值时,这会扩展到 3 个实例,并通过 NGINX 分配负载。
-
示例:为数据库查询实现 Redis 缓存
在 Python Flask 应用中缓存用户数据,以减少数据库访问次数:首先,按上述说明连接 Redis。然后:import redis r = redis.Redis(host='redis-host', password=os.environ['REDIS_API_KEY']) def get_user(id): value = r.get(f'user:{id}') if value: return value.decode() else: user = query_db(id) # Fetch from DB r.set(f'user:{id}', user, ex=3600) return user这会将结果缓存 1 小时,在高负载期间提升响应速度。
图关系
- 相关集群:se-architecture
- 相关标签:scalability、load-balancing、caching、architecture
- 关联技能:arch-load-balancing(用于深入了解负载策略)、data-caching(用于高级 Redis 模式)