一、项目目标与业务需求

项目目标

本项目的核心目标是开发一个高并发、高性能的广告竞价系统,该系统将与微博WAX平台对接,处理广告请求、进行竞价、展示广告并监测广告的曝光与点击情况。系统的需求包括高并发、高可扩展性和低延迟。

业务需求

  • 请求量:预计系统每日需处理20亿次请求,平均23,148 QPS(每秒请求数),并且在高峰时支持57,870 QPS
  • 延迟要求:整个广告请求的处理过程(从请求接收到竞价结果)需要在230毫秒内完成
  • 并发连接数:支持约13,309个并发连接
  • 数据安全:确保数据的传输安全,特别是竞价结果和广告数据需要加密。
  • 系统可扩展性:系统应支持未来的业务扩展,能够横向扩展,满足流量增长需求。

业务流程概述

  1. 接收微博WAX的竞价请求:从微博WAX接收竞价请求,包含广告位、设备信息等数据。
  2. 请求参数校验与流量筛选:对请求中的参数进行验证,筛选无效流量。
  3. 上游请求分发与竞价引擎:将筛选后的请求发送给上游广告供应商,并基于竞价逻辑计算出价。
  4. 竞价提交与结果回传:竞价成功后,将结果提交给微博WAX系统。
  5. 广告展示与曝光监测:广告展示后,通过曝光与点击监测数据来优化广告投放效果。
  6. 数据回传与报表:收集曝光与点击数据并回传至微博WAX和上游广告供应商。

二、知识与技能储备

为了保证项目能够顺利开发并按期上线,团队成员需要具备以下知识和技能:

1. Go语言与Gin框架

  • Go语言:高效的并发编程,利用goroutine和channel处理高并发请求。
  • Gin框架:使用Gin作为Web框架,提供轻量级、高性能的API处理能力。

2. 微服务架构与分布式系统设计

  • 微服务架构:拆分系统为多个独立模块,通过HTTP API进行通信,支持灵活扩展。
  • 容器化与编排:使用Docker和Kubernetes进行容器化部署和管理,保证系统高可用性和可扩展性。

3. 数据库与缓存

  • Redis:用于缓存频繁访问的广告数据和规则,提升系统响应速度。
  • MySQL(RDS):用于存储竞价历史、曝光点击数据等持久化数据。

4. 异步消息处理

  • RocketMQ/Kafka:用于异步任务和数据传输,确保系统能够在高并发下稳定运行。

5. 监控与日志

  • Prometheus与Grafana:进行系统性能和健康监控,实时监测QPS、延迟等关键指标。
  • 阿里云SLS(日志服务):进行日志收集与分析,确保系统稳定运行并便于问题追踪。

三、团队规划与搭建

人员配置

项目团队由以下人员组成,每个成员负责不同的开发模块,确保项目的高效推进:

角色 人数 主要职责
Go开发工程师 2 负责核心模块的开发(请求接收与处理、竞价引擎、数据回传等)
前端开发工程师 1 负责管理后台开发、数据可视化、报表生成等功能
测试工程师 1 编写测试用例,进行单元测试、集成测试、性能测试等
运维工程师 1 负责系统部署、监控、性能优化,确保系统高可用

技术基础

  1. Go语言与Gin框架:用于开发高并发、高性能的后端服务。
  2. Redis:用于缓存广告规则、会话信息等,提高响应速度。
  3. MySQL(RDS):存储广告竞价历史、曝光点击数据等持久化数据。
  4. 消息队列(RocketMQ/Kafka):处理异步任务,确保高并发环境下的稳定性。
  5. Docker和Kubernetes:实现容器化部署和微服务架构,确保灵活的扩展能力和高可用性。

四、技术架构设计

系统架构

项目的技术架构采用微服务架构,将系统拆分为多个独立服务模块,以便于开发和扩展。

  • 接入层:通过SLB(负载均衡器)分发请求到多个服务实例。
  • 业务逻辑层:处理广告请求、竞价计算、数据回传等业务逻辑。
  • 数据存储层:使用Redis缓存数据和MySQL存储持久化数据。
  • 监控与管理层:提供系统健康监控、日志管理等功能。

关键技术选型

  • Go语言:高效并发编程,适合高并发场景。
  • Gin框架:高性能的Web框架,适合开发RESTful API。
  • Redis:高速缓存,减少数据库压力,提升响应速度。
  • MySQL(RDS):关系型数据库,用于存储广告数据。
  • RocketMQ/Kafka:异步消息队列,确保系统高效稳定运行。
  • Docker/Kubernetes:容器化部署,支持水平扩展,保障系统可用性。
  • Prometheus/Grafana:性能监控,实时跟踪QPS、延迟等指标。

五、开发规划与模块划分

模块划分与优先级

模块 描述 优先级 负责人 预估时间
请求接收与处理模块 接收并解析微博WAX的竞价请求,校验参数,处理请求数据 Go开发A 5 天
流量筛选模块 基于规则筛选无效请求,减少系统负担 Go开发A 3 天
上游请求分发模块 将请求分发到上游广告供应商,处理并发请求 Go开发B 4 天
竞价引擎模块 根据竞价算法计算广告出价,并返回竞价结果 Go开发B 7 天
下游竞价提交模块 将竞价结果提交给微博WAX进行广告展示 Go开发A 3 天
曝光与点击监测模块 监测广告曝光和点击行为,收集数据并回传 前端开发 5 天
数据回传模块 将曝光和点击数据回传至上游广告供应商及微博WAX Go开发A 3 天
管理后台(PHP) 提供数据管理界面,生成报表,支持广告投放数据的查看和管理 全栈开发C 10 天

开发阶段

  • 第一阶段:核心功能开发(请求接收与处理、流量筛选、竞价引擎、数据回传)。
  • 第二阶段:附加功能开发(上游请求分发、下游竞价提交、曝光与点击监测)。
  • 第三阶段:管理后台和优化(管理后台、性能优化、监控和日志功能)。

六、风险与应对策略

技术风险

  • 高并发压力:系统需要处理高并发流量,可能导致性能瓶颈。
    • 应对措施:通过水平扩展、负载均衡和容器编排应对高流量,优化请求处理逻辑,减少延迟。

集成风险

  • 接口兼容性问题:微博WAX平台的API接口可能与系统不兼容。
    • 应对措施:提前进行接口调试,确保数据格式和请求

规范一致。

安全风险

  • 数据泄露与攻击:数据在传输过程中可能会受到攻击或泄露。
    • 应对措施:使用HTTPS加密通信,保证数据的安全;使用API权限控制和身份验证,防止未经授权的访问。

性能风险

  • 请求延迟过高:在高并发情况下,系统可能无法满足延迟要求。
    • 应对措施:采用缓存、限流、并发控制等优化手段,确保系统在高并发下稳定运行。

七、总结

  1. 项目目标明确:构建一个高效、稳定的广告竞价系统,能够处理大规模的请求,支持低延迟和高并发。
  2. 技术准备充分:团队掌握了Go语言、Gin框架、Redis、MySQL等关键技术,能够高效处理高并发请求。
  3. 模块化开发:系统分为多个功能模块,每个模块有明确的功能和开发优先级,确保开发的可控性。
  4. 风险管控:提前识别了技术、集成、性能和安全等方面的风险,并准备了相应的应对策略。
  5. 持续优化与监控:通过监控、日志管理和性能优化,确保系统稳定运行,并能根据需求进行扩展。