一、业务流程分析

整体业务流程:

  1. 微博WAX (流量请求模块)Z系统 (请求接收与解析模块) 发送竞价请求(Bid Request)。
  2. Z系统 (请求接收与解析模块) 接收并解析请求,校验请求参数(如 dspidtoken 等)。
  3. Z系统 (流量分发模块) 根据流量筛选规则将请求分发给 **上游供应商 (流量接收与应答模块)**。
  4. 上游供应商 (流量接收与应答模块) 根据广告位和用户数据进行竞价,并返回 Bid Response 到 **Z系统 (下游应答接收与解析模块)**。
  5. Z系统 (下游应答接收与解析模块) 解析来自上游的竞价应答数据。
  6. Z系统 (竞价引擎模块) 根据上游应答数据和广告投放规则计算竞价结果,选择最终竞标的广告。
  7. 微博WAX (应答接收模块) 接收 Z系统 发送的竞价结果,并根据结果进行 二次竞价
  8. 微博WAX (二次竞价模块) 完成二次竞价后,选择展示的广告,并通过 微博WAX (曝光点击数据回传模块) 将曝光与点击数据回传到 Z系统 (曝光点击数据接收模块) 和 **上游供应商 (曝光点击监测模块)**。
  9. Z系统 (曝光点击数据接收模块)上游供应商 (曝光点击监测模块) 同时接收并处理回传的曝光和点击数据。

详细分析:

  1. 微博WAX (流量请求模块)

    • 功能:负责向 Z系统 发起竞价请求,包含广告位信息、用户信息、设备信息等。
    • 需求
      • 必须能够处理大规模流量请求,并能高效地将请求数据转发给 Z系统
  2. Z系统 (请求接收与解析模块)

    • 功能:接收来自 微博WAX 的竞价请求(Bid Request),进行请求参数的校验与解析(如 dspidtoken 等)。
    • 需求
      • 高并发支持:能够快速接收并解析大量请求。
      • 开发技术:推荐使用 GoNode.js 开发,支持高效的请求处理。
  3. Z系统 (流量分发模块)

    • 功能:将通过校验的请求根据流量分发规则转发给 **上游供应商 (流量接收与应答模块)**。
    • 需求
      • 支持高并发异步请求处理,能够将请求均匀分发给多个上游供应商。
      • 采用 消息队列(如 KafkaRabbitMQ)保证请求的顺序和可靠性。
  4. 上游供应商 (流量接收与应答模块)

    • 功能:上游广告供应商接收 Z系统 转发的竞价请求,并根据广告位和用户数据返回竞价应答(Bid Response)。
    • 需求
      • 高并发请求处理能力,能够根据广告请求快速计算竞价结果。
      • 开发技术:支持多种数据格式(如 JSON、XML)返回竞价数据。
  5. Z系统 (下游应答接收与解析模块)

    • 功能:接收并解析 上游供应商 返回的竞价应答(Bid Response),进行格式校验和解析。
    • 需求
      • 需要支持对多个供应商的应答数据进行统一解析和格式校验。
      • 开发技术:支持异步数据处理,确保快速响应。
  6. Z系统 (竞价引擎模块)

    • 功能:根据上游应答数据和广告投放规则进行竞价计算,最终选择中标的广告。
    • 需求
      • 高性能计算模块,能够在短时间内处理大量竞价数据。
      • 支持分布式计算和缓存优化,使用 RedisMemcached 来减少重复计算。
  7. 微博WAX (应答接收模块)

    • 功能:接收 Z系统 返回的竞价结果,并根据竞价结果进行二次竞价。
    • 需求
      • 需要能够快速处理竞价数据,并将竞价结果反馈到二次竞价模块。
  8. 微博WAX (二次竞价模块)

    • 功能:进行二次竞价,根据最终竞标的广告进行选择并展示。
    • 需求
      • 需要保证快速的广告展示逻辑,确保展示广告时的性能和响应时间。
  9. 微博WAX (曝光点击数据回传模块)

    • 功能:在广告展示后,微博WAX会通过该模块将广告的曝光和点击数据回传到 Z系统上游供应商
    • 需求
      • 必须能够处理大规模的曝光与点击数据,并通过可靠的方式回传到 Z系统上游供应商
      • 开发技术:使用 KafkaRabbitMQ 进行数据传输,确保高并发时数据不丢失。
  10. Z系统 & 上游供应商 (曝光点击监测模块)

    • 功能:同时接收来自 微博WAX 的曝光与点击数据,进行数据存储和后续分析。
    • 需求
      • Z系统:存储广告的曝光与点击数据,并提供统计与查询功能。
      • 上游供应商:对广告效果进行跟踪和优化分析。
      • 开发技术:使用 RedisMySQLPostgreSQL 来存储数据,并进行分析与展示。

二、技术架构与模块设计

基于上述业务流程,以下是针对每个模块的架构设计和技术要求:

模块名称 功能描述 技术要求
请求接收与解析模块 1. 接收来自微博WAX的Bid Request请求。
2. 校验请求参数(如 dspidtoken 等)。
3. 解析请求数据,确保请求有效性。
- 使用 GoNode.js 开发,支持高并发请求接收。
- 使用 正则表达式参数验证库 进行请求参数校验。
流量筛选模块 1. 根据配置的规则(如地域、IP黑名单、设备类型等)筛选请求。
2. 丢弃无效请求,确保只处理合法请求。
- 使用 Redis 缓存筛选规则,保证快速访问。
- 支持 动态规则更新,不需要重启服务。
流量分发模块 1. 将合法请求分发到上游广告供应商进行竞价。
2. 支持异步并发处理请求,提高性能。
- 支持高并发,使用 goroutines(Go)线程池(Java)并行处理。
- 使用 消息队列(如 RabbitMQKafka)进行可靠的消息传递。
下游应答接收与解析模块 1. 接收上游广告供应商返回的竞价响应(Bid Response)。
2. 解析竞价响应数据,确保格式正确。
3. 支持超时重试机制,确保获取到有效的应答。
- 支持多种格式解析(如 JSONXML)。
- 配置 超时重试机制,确保请求响应及时。
Z系统竞价引擎模块 1. 根据上游竞价数据和广告投放规则计算竞价结果。
2. 选择最终竞标的广告。
- 高性能计算模块,支持分布式计算。
- 使用 RedisMemcached 做缓存优化,减少重复计算。
上游应答发送模块 1. 将竞价结果发送回微博WAX平台。
2. 确保消息的顺序性和可靠性,避免数据丢失。
- 高并发支持,使用消息队列(如 Kafka)保证消息传递的可靠性。
曝光点击数据接收模块 1. 接收微博WAX和上游广告供应商回传的曝光与点击数据。
2. 存储并处理曝光与点击数据,生成统计报表。
- 支持高吞吐量,能够同时接收来自多个来源的数据。
- 数据存入 MySQLPostgreSQL,并支持快速查询。
曝光点击回传模块 1. 向 Z系统上游供应商回传广告的曝光与点击数据。
2. 支持高并发数据处理。
- 需要支持高并发数据写入,使用 RedisKafka 做实时数据传输。
- 使用 API消息队列进行数据回传。

三、技术与架构细节

1. 高可用与扩展性设计

  • 微服务架构:通过 Kubernetes 进行服务编排和管理,实现服务的自动扩展和负载均衡。
  • 容灾与备份:设计跨区域备份多活架构,确保当某一服务宕机时,系统能自动切换并继续提供服务。
  • 数据库分区与读写分离:使用数据库分区和读写分离策略,提高数据的查询效率和系统的扩展性。

2. 性能优化

  • 缓存优化:使用 Redis 进行缓存,减少数据库查询和重复计算的压力,优化系统性能。
  • 并发处理:使用 GogoroutinesJava线程池,提高系统并发处理能力。
  • 消息队列:使用 KafkaRabbitMQ 做异步处理,确保请求的可靠性和数据的高吞吐量。

3. 安全性设计

  • 数据加密:使用 HTTPS 加密数据传输,保护用户隐私。
  • 身份验证与授权:确保只有授权用户能访问 Z系统 的敏感数据和服务。
  • 防止DDos攻击:使用 WAF(Web应用防火墙)防止恶意流量攻击。

四、总结

通过将 业务流程开发模块 细化到每个核心模块的功能需求,确保了架构设计的可行性、系统的高可用性、可扩展性及高并发处理能力。通过对QPS、并发连接数熔断机制数据回传等方面的分析,确保系统能够在高并发、大流量的场景下稳定运行。