跳到主要内容

11. 交付与运维

11.1 一键部署​

部署方案​

智能房地产解决方案采用容器化部署,支持一键部署到Kubernetes集群:

Docker化部署​

Dockerfile示例:

# 基础镜像
FROM python:3.11-slim

# 设置工作目录
WORKDIR /app

# 安装系统依赖
RUN apt-get update && apt-get install -y \
gcc \
g++ \
libopencv-dev \
&& rm -rf /var/lib/apt/lists/*

# 复制依赖文件
COPY requirements.txt .

# 安装Python依赖
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码
COPY . .

# 暴露端口
EXPOSE 8000

# 启动命令
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

docker-compose.yml示例:

version: '3.8'

services:
api:
build: .
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://user:password@db:5432/real_estate_ai
- REDIS_URL=redis://redis:6379/0
- MILVUS_URL=http://milvus:19530
depends_on:
- db
- redis
- milvus

db:
image: postgres:14
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=real_estate_ai
volumes:
- db_data:/var/lib/postgresql/data

redis:
image: redis:7-alpine
volumes:
- redis_data:/data

milvus:
image: milvusdb/milvus:v2.3.0
volumes:
- milvus_data:/var/lib/milvus

volumes:
db_data:
redis_data:
milvus_data:

Kubernetes部署​

Deployment配置:

apiVersion: apps/v1
kind: Deployment
metadata:
name: real-estate-ai-api
spec:
replicas: 3
selector:
matchLabels:
app: real-estate-ai-api
template:
metadata:
labels:
app: real-estate-ai-api
spec:
containers:
- name: api
image: real-estate-ai-api:latest
ports:
- containerPort: 8000
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: real-estate-secrets
key: database-url
- name: REDIS_URL
valueFrom:
secretKeyRef:
name: real-estate-secrets
key: redis-url
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 2000m
memory: 2Gi
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 8000
initialDelaySeconds: 10
periodSeconds: 5

Service配置:

apiVersion: v1
kind: Service
metadata:
name: real-estate-ai-api
spec:
selector:
app: real-estate-ai-api
ports:
- port: 80
targetPort: 8000
type: LoadBalancer

Ingress配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: real-estate-ai-ingress
spec:
rules:
- host: api.real-estate.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: real-estate-ai-api
port:
number: 80

一键部署脚本​

部署脚本示例​

#!/bin/bash

# 一键部署脚本
set -e

echo "开始部署智能房地产解决方案..."

# 1. 检查环境
echo "检查环境..."
kubectl version --client
docker version

# 2. 构建镜像
echo "构建Docker镜像..."
docker build -t real-estate-ai-api:latest .

# 3. 推送镜像
echo "推送镜像到镜像仓库..."
docker tag real-estate-ai-api:latest registry.example.com/real-estate-ai-api:latest
docker push registry.example.com/real-estate-ai-api:latest

# 4. 部署到Kubernetes
echo "部署到Kubernetes..."
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/secrets.yaml
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml
kubectl apply -f k8s/ingress.yaml

# 5. 等待部署完成
echo "等待部署完成..."
kubectl wait --for=condition=available --timeout=300s deployment/real-estate-ai-api -n real-estate

# 6. 验证部署
echo "验证部署..."
kubectl get pods -n real-estate
kubectl get services -n real-estate

echo "部署完成!"

11.2 配置管理​

配置分类​

环境配置​

  • 开发环境配置:

    • 数据库连接配置
    • Redis连接配置
    • 外部服务配置
  • 测试环境配置:

    • 测试数据库配置
    • 测试Redis配置
    • 测试外部服务配置
  • 生产环境配置:

    • 生产数据库配置
    • 生产Redis配置
    • 生产外部服务配置

应用配置​

  • 功能开关:

    • 功能启用/禁用
    • A/B测试配置
    • 灰度发布配置
  • 业务配置:

    • 推荐算法参数
    • 评估模型参数
    • 审查规则配置

配置管理方案​

ConfigMap配置​

apiVersion: v1
kind: ConfigMap
metadata:
name: real-estate-config
data:
app.properties: |
# 应用配置
app.name=智能房地产解决方案
app.version=1.0.0

# 推荐配置
recommendation.model=hybrid
recommendation.top_k=10

# 评估配置
evaluation.model=xgboost
evaluation.confidence_threshold=0.8

Secret配置​

apiVersion: v1
kind: Secret
metadata:
name: real-estate-secrets
type: Opaque
data:
database-url: <base64-encoded-value>
redis-url: <base64-encoded-value>
api-key: <base64-encoded-value>

11.3 版本管理​

版本发布流程​

版本命名规则​

  • 语义化版本号:
    • 格式:主版本号.次版本号.修订号(如1.2.3)
    • 主版本号:重大架构变更
    • 次版本号:新功能添加
    • 修订号:Bug修复

发布流程​

  1. 开发阶段:

    • 功能开发
    • 单元测试
    • 代码审查
  2. 测试阶段:

    • 集成测试
    • 系统测试
    • 用户验收测试
  3. 预发布阶段:

    • 预发布环境部署
    • 预发布验证
    • 性能测试
  4. 发布阶段:

    • 生产环境部署
    • 灰度发布
    • 全量发布
  5. 验证阶段:

    • 生产环境验证
    • 监控告警
    • 问题修复

灰度发布​

灰度策略​

  • 用户灰度:

    • 10%用户灰度
    • 50%用户灰度
    • 100%用户全量
  • 地域灰度:

    • 单个地域灰度
    • 多个地域灰度
    • 全国全量

灰度监控​

  • 指标监控:

    • 错误率监控
    • 响应时间监控
    • 业务指标监控
  • 回滚机制:

    • 自动回滚(错误率>5%)
    • 手动回滚
    • 回滚验证

11.4 运维监控​

监控指标​

系统监控​

  • 资源监控:

    • CPU使用率
    • 内存使用率
    • 磁盘使用率
    • 网络使用率
  • 服务监控:

    • 服务可用性
    • 服务响应时间
    • 服务错误率

业务监控​

  • 业务指标监控:
    • 推荐任务数
    • 推荐成功率
    • 评估任务数
    • 评估准确率

告警机制​

告警规则​

  • 系统告警:

    • CPU使用率 > 90%
    • 内存使用率 > 90%
    • 磁盘使用率 > 90%
    • 服务不可用
  • 业务告警:

    • 推荐成功率 < 90%
    • 评估准确率 < 90%
    • 错误率 > 1%

告警通知​

  • 通知渠道:

    • 邮件通知
    • 短信通知
    • 钉钉/企业微信通知
  • 告警升级:

    • 一级告警:通知值班人员
    • 二级告警:通知技术负责人
    • 三级告警:通知管理层

11.5 故障处理​

故障分类​

故障级别​

  • P0级别:系统完全不可用,需要立即处理
  • P1级别:核心功能不可用,影响业务
  • P2级别:部分功能不可用,影响部分用户
  • P3级别:轻微问题,不影响业务

故障处理流程​

故障发现​

  • 监控告警:监控系统自动告警
  • 用户报告:用户报告问题
  • 主动发现:运维人员主动发现

故障处理​

  1. 故障确认:确认故障现象和影响范围
  2. 故障隔离:隔离故障影响
  3. 故障分析:分析故障原因
  4. 故障修复:修复故障问题
  5. 故障验证:验证故障修复
  6. 故障总结:总结故障经验

故障预案​

常见故障预案​

  • 数据库故障预案:

    • 主从切换
    • 数据恢复
    • 服务降级
  • 缓存故障预案:

    • 缓存重建
    • 服务降级
    • 数据回源
  • 模型服务故障预案:

    • 模型降级
    • 规则引擎备用
    • 服务降级

11.6 备份与恢复​

数据备份​

备份策略​

  • 全量备份:

    • 每日全量备份
    • 备份保留30天
    • 异地备份
  • 增量备份:

    • 每小时增量备份
    • 备份保留7天

备份验证​

  • 备份完整性验证:验证备份文件完整性
  • 备份恢复测试:定期恢复测试
  • 备份监控:监控备份状态

灾难恢复​

灾难恢复预案​

  • RTO(恢复时间目标):≤ 4小时
  • RPO(恢复点目标):≤ 1小时

恢复流程​

  1. 灾难评估:评估灾难影响
  2. 恢复准备:准备恢复环境
  3. 数据恢复:恢复数据
  4. 服务恢复:恢复服务
  5. 验证验证:验证恢复效果