1. 课程导论与目标

1.1 蓝绿发布概念

蓝绿部署(Blue-Green Deployment)是一种零停机或接近零停机的发布策略,通过维护两套完全独立的生产环境(蓝环境与绿环境)来实现流量平滑切换。在任意时刻,只有一套环境承载全部生产流量,另一套环境保持空闲或用于新版本验证。

环境 状态 说明
蓝环境 当前生产(Active) 运行稳定版本,承载全部用户流量
绿环境 待发布(Standby) 部署新版本,通过内部验证后切换流量

蓝绿发布的核心优势在于:

  • 瞬时回滚:若新版本出现问题,只需将流量切回原环境,无需重新部署。
  • 环境隔离:新旧版本运行在独立基础设施上,避免资源冲突。
  • 验证窗口:新版本可在生产流量接入前进行完整的功能与性能验证。
实践要点:蓝绿发布要求两套环境具备相同的资源配置与数据同步机制。数据库向后兼容是常见挑战,建议采用读写分离或双写策略。
蓝绿发布流量切换流程 用户流量入口 负载均衡器 / 网关 蓝环境(当前生产) 版本 v2.1.0 · 承载 100% 流量 绿环境(待发布) 版本 v2.2.0 · 内部验证中 一键切换

1.2 门禁系统作用

发布门禁(Release Gate)是部署流水线中的质量关卡,在蓝绿切换前自动执行一系列验证检查,只有全部检查通过后才允许流量切换。门禁系统是保障发布安全的核心防线。

门禁类型 检查内容 通过标准
日志错误门禁 新版本日志中 ERROR / FATAL 级别条目数量 错误数 ≤ 阈值(如 0)
响应延迟门禁 P95 / P99 响应时间对比基线 增幅 ≤ 10%
错误率门禁 HTTP 5xx 比例或业务异常率 错误率 ≤ 0.1%
资源水位门禁 CPU / 内存 / 连接数使用率 使用率 ≤ 80%
常见误区:门禁阈值设置过松会导致无效检查,设置过严则频繁阻塞发布。建议基于历史发布数据动态调整阈值,并保留人工强制放行通道。

1.3 Loki 日志系统简介

Grafana Loki 是受 Prometheus 启发设计的水平可扩展、高可用、多租户日志聚合系统。与 Elasticsearch 等全文索引方案不同,Loki 采用仅索引元数据的设计哲学,将日志内容存储在对象存储中,大幅降低存储与运维成本。

特性 Loki Elasticsearch
索引策略 仅索引标签(Label),不索引日志内容 全文倒排索引
存储成本 低(对象存储 + 压缩) 高(索引占用大量磁盘)
查询语言 LogQL(类 PromQL 语法) Query DSL(JSON 格式)
与 Prometheus 集成 原生集成,标签体系一致 需额外适配
适用场景 Kubernetes 环境、指标与日志统一 复杂全文搜索、业务分析

Loki 的核心组件包括:

  • Distributor:接收日志写入请求,验证并分发到 Ingester。
  • Ingester:将日志数据批量写入对象存储,同时维护近期数据的内存缓存。
  • Querier:处理 LogQL 查询请求,从 Ingester 和对象存储中获取日志。
  • Query Frontend:查询缓存、分片与加速层。
  • Compactor:合并与重排存储中的日志块,提升查询效率。
Loki 核心架构组件 Distributor Ingester 对象存储 Query Frontend Querier 关键设计 • 标签索引,内容不索引 • 对象存储降成本 • LogQL 类 PromQL 语法 • 原生 K8s 集成

1.4 课程整体目标与受众

本课程旨在培养学员构建基于 Loki 的蓝绿发布门禁日志查询接口的完整能力,从架构设计到代码实现,再到生产部署与监控。

维度 目标
知识目标 掌握蓝绿发布原理、门禁系统设计模式、Loki 架构与 LogQL 查询语法
技能目标 使用 Python 开发 RESTful 门禁查询接口,集成 Loki HTTP API,编写可测试的异步代码
工程目标 设计高可用接口架构,配置监控告警,编写运维文档与自动化测试
交付目标 产出可部署的接口服务、Docker 镜像、Kubernetes 部署清单与 CI/CD 流水线配置

目标受众:

  • SRE / 运维开发工程师:需要构建或优化发布门禁系统。
  • 后端开发工程师:希望掌握日志查询接口开发与 Loki 集成。
  • 平台工程团队成员:负责 CI/CD 流水线质量门禁建设。
  • 技术负责人:评估蓝绿发布与日志门禁的技术选型与落地路径。
前置要求:学员应具备 Python 基础编程能力,了解 RESTful API 设计概念,对 Kubernetes 和 Prometheus 有基本认知。无需提前掌握 Loki 或蓝绿发布经验。