# 广告投放系统 **Repository Path**: linyoga/ad-spring-cloud ## Basic Information - **Project Name**: 广告投放系统 - **Description**: 基于spring cloud实现的广告投放系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-02-18 - **Last Updated**: 2025-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 广告系统微服务项目 这是一个基于Spring Cloud的广告投放管理系统,包含微服务架构的多个组件。 ## 项目结构 - **ad-common**: 公共模块,包含通用配置、工具类和异常处理 - **ad-eureka**: 注册中心服务 - **ad-gateway**: API网关服务 - **ad-search**: 广告检索服务,包含数据索引和同步功能 - **ad-sponsor**: 广告投放服务,包含广告主相关功能 ## 主要功能 1. 广告计划管理 2. 广告单元管理 3. 创意素材管理 4. 地域定向投放 5. 兴趣标签定向 6. 关键词定向 7. 广告创意与广告单元关联 8. 广告数据检索与缓存 9. MySQL Binlog数据同步 10. XSS和SQL注入过滤 ## 技术架构 - Spring Boot + Spring Cloud 微服务架构 - Eureka 服务注册与发现 - Feign 服务间通信 - MyBatis Plus 数据访问 - Redis 数据缓存 - MySQL 数据存储 - Kafka 数据同步(可选) - Binlog 数据实时同步 ## 快速开始 1. 安装并启动MySQL数据库 2. 创建并初始化广告系统所需表结构 3. 启动ad-eureka注册中心 4. 启动ad-sponsor广告投放服务 5. 启动ad-search广告检索服务 6. 启动ad-gateway网关服务 7. 通过网关访问各服务API ## 服务说明 ### ad-sponsor 广告投放服务,提供REST API用于管理广告计划、广告单元、创意素材等广告投放相关信息。 ### ad-search 广告检索服务,实现广告数据的缓存和检索功能,支持基于地域、兴趣标签和关键词的广告匹配。 ### ad-eureka 服务注册中心,实现微服务架构中的服务发现和注册功能。 ### ad-gateway API网关,统一处理所有微服务的API请求,包含访问日志和前置过滤器功能。 ## 数据同步机制 系统使用MySQL Binlog实现数据实时同步,支持将数据变更事件发送到Kafka或直接更新索引服务。数据分为多个层级同步: - Level 2: 基础数据(广告计划、创意素材) - Level 3: 广告单元数据 - Level 4: 地域、兴趣标签、关键词等定向信息 ## 安全功能 系统包含以下安全防护措施: - SQL注入过滤 - XSS攻击防护(HTML过滤) - 统一异常处理 - 响应数据包装 ## 使用示例 1. **创建广告计划**: POST /ad/plan/save 2. **创建广告单元**: POST /ad/unit/save 3. **检索匹配广告**: POST /fetchAds 4. **查询广告计划**: GET /ad/plan/info/{id} ## 数据模型 - **AdPlan**: 广告计划,包含计划名称、状态、投放时间等信息 - **AdUnit**: 广告单元,关联广告计划,包含投放位置类型和状态 - **Creative**: 创意素材,包含广告内容和规格信息 - **CreativeUnit**: 创意与广告单元的关联关系 - **District**: 广告单元地域定向信息 - **UnitIt**: 广告单元兴趣标签定向 - **UnitKeyword**: 广告单元关键词定向 ## 注意事项 1. 系统使用统一的REST API响应格式(Result类) 2. 包含严格的参数校验和异常处理机制 3. 支持多种数据同步方式(直接更新、Kafka异步等) 4. 服务间通信使用Feign客户端 ## 扩展性设计 系统采用分层索引设计,支持快速扩展新的广告匹配规则和数据同步逻辑,通过DataLevel枚举可清晰了解数据层级关系。 ## 配置说明 各服务需要配置MySQL、Redis等基础服务信息,具体配置项请参考各服务的application.yml文件。