TalkingData 作为中国领先的第三方移动数据服务平台,其技术架构的核心目标是高可用、高并发、可扩展、数据安全,以应对海量的移动设备数据、复杂的业务场景和多样化的客户需求。

其架构并非一成不变,而是随着业务的发展和技术演进而不断演进,我们可以从几个层面来理解它:总体演进、核心架构、关键技术栈和未来趋势。
总体架构演进
TalkingData 的架构演进大致可以分为几个阶段:
-
单体架构阶段 (早期)
- 特点:所有功能模块(数据采集、存储、处理、分析、报表)都部署在少数几台服务器上,通过应用服务器和数据库直接连接。
- 问题:随着业务量激增,单体应用变得臃肿,扩展性差,一个模块的故障可能导致整个系统崩溃,开发、部署和运维都非常困难。
-
SOA (面向服务的架构) 阶段
(图片来源网络,侵删)- 特点:将单体应用拆分为一系列独立的服务,如用户服务、事件服务、报表服务等,服务之间通过 RPC (如 Dubbo) 或 API 调用进行通信。
- 优点:实现了服务层面的解耦,不同团队可以独立开发、部署和扩展各自的服务,提高了系统的灵活性和可维护性。
- 问题:服务数量增多后,服务间的依赖关系变得复杂,分布式事务、服务治理(发现、熔断、限流)、API 版本管理等问题凸显。
-
云原生与微服务架构阶段 (当前主流)
- 特点:这是 TalkingData 目前采用的架构,在 SOA 的基础上,进一步将服务颗粒度做得更细,并全面拥抱云原生技术。
- 核心思想:
- 微服务:每个业务功能都是一个独立的微服务。
- 容器化:使用 Docker 将每个微服务及其依赖打包成标准化的镜像。
- 容器编排:使用 Kubernetes (K8s) 进行容器的自动化部署、扩展和管理。
- DevOps:建立从代码提交、自动构建、自动测试到自动部署的完整 CI/CD 流水线。
- Service Mesh:引入服务网格(如 Istio)来处理服务间的通信,实现流量管理、安全、可观察性等,将这部分逻辑从业务代码中剥离出来。
核心技术架构分层解析
TalkingData 的技术架构可以清晰地分为以下几层,从数据流入到最终价值输出:
数据采集与接入层
这是数据的入口,负责从各种渠道收集原始数据。
- SDK:
- 核心产品:TalkingData Analytics for Apps (TA)、TalkingData Game Analytics (TG) 等。
- 功能:嵌入到 App 中,采集用户行为事件(如启动、页面访问、点击、购买)、设备信息、用户属性等数据。
- 技术:SDK 通常使用 Java (Android), Swift/Objective-C (iOS) 等原生语言开发,以保证性能和数据准确性。
- API 接口:
提供标准化的 RESTful API,供客户服务器端上报数据,例如广告转化数据、线下门店客流数据等。
(图片来源网络,侵删) - 数据同步工具:
支持客户通过 FTP、SFTP 或数据库同步工具(如 DataX)批量导入历史数据或业务数据。
数据传输与缓冲层
原始数据量巨大且具有突发性,需要一个缓冲层来削峰填谷,保护后端处理系统。
- 技术选型:Apache Kafka。
- 作用:
- 解耦:将数据生产者(SDK/API)和数据消费者(数据处理集群)解耦。
- 削峰填谷:应对流量高峰,防止后端系统被冲垮。
- 持久化与重放:数据在 Kafka 中持久化存储,支持消费者多次消费,便于数据回溯和重新处理。
- 高吞吐:Kafka 本身的高吞吐特性非常适合海量日志数据的实时传输。
数据存储与计算层
这是整个架构的“心脏”,负责对数据进行存储、清洗、转换、计算和分析。
TalkingData 采用了大数据技术栈,根据数据的类型、处理时效性和成本要求,选择不同的存储和计算引擎。
-
数据湖:
- 存储:基于 HDFS 或 对象存储(如阿里云 OSS、AWS S3)。
- 存储所有原始的、未经处理的半结构化数据(如 JSON、Protobuf 格式的日志),以及处理后的各种格式数据。
- 优势:成本低,存储容量大,适合做长期归档和全量数据分析。
-
数据仓库:
- 存储/计算:基于 Apache Hive 或 云数仓(如 ClickHouse, Snowflake, BigQuery)。
- 将数据湖中的原始数据经过 ETL (Extract-Transform-Load) 处理后,加载到数据仓库中,形成结构化的数据表(如宽表、主题表)。
- 作用:支持复杂的即席查询、BI 报表和多维分析。
-
实时计算引擎:
- 技术选型:Apache Flink 是其核心引擎,也部分使用 Spark Streaming。
- 作用:
- 实时 ETL:对 Kafka 中的流式数据进行实时清洗、转换和聚合。
- 实时特征计算:为实时推荐、实时风控等场景计算用户特征。
- 实时监控与告警:对关键业务指标(如 DAU、留存率)进行实时计算和监控。
- 实时用户画像更新:根据用户实时行为,动态更新用户标签。
-
批处理引擎:
- 技术选型:Apache Spark。
- 作用:
- 大规模离线计算:进行用户分群、漏斗分析、路径分析、归因模型训练等复杂计算任务。
- 数据 ETL:负责将数据从数据湖加载到数据仓库,或进行大规模的数据预处理。
数据服务与应用层
这一层将处理好的数据通过 API 或产品形式提供给内外部客户。
-
API 服务:
- 将分析结果封装成标准化的 API 接口,供客户在自己的业务系统中调用,获取用户画像、分析报告、广告转化效果等。
- 技术:基于微服务架构,通常使用 Spring Cloud 或自研的 RPC 框架构建。
-
核心产品平台:
- TalkingData Analytics:可视化分析平台,提供报表、漏斗、留存、路径等分析工具。
- TalkingData Ad Tracking:广告效果监测平台,通过归因模型分析广告投放效果。
- TalkingData Audience:用户画像平台,提供人群标签、圈选、推送等功能。
- TalkingData Intelligence:智能决策平台,提供预测、推荐等 AI 能力。
基础设施与运维层
为整个上层架构提供稳定、弹性的运行环境。
- IaaS:主要部署在 阿里云、腾讯云、AWS 等公有云上,利用云的弹性和可扩展性,按需使用资源。
- CaaS:Docker 容器化所有应用,实现环境一致性和快速部署。
- O/K:Kubernetes (K8s) 作为容器编排平台,负责应用的部署、扩缩容、服务发现和故障自愈。
- Service Mesh:Istio 或自研服务网格,统一管理服务间的流量、安全(mTLS)和可观测性。
- DevOps:Jenkins, GitLab CI, ArgoCD 等工具链,实现自动化 CI/CD,加速迭代。
- 监控与告警:Prometheus + Grafana 进行系统监控和指标可视化,ELK (Elasticsearch, Logstash, Kibana) 或 Loki 进行日志聚合与分析,Alertmanager 进行告警。
关键技术栈总结
| 层次 | 核心技术 | 主要用途 |
|---|---|---|
| 数据采集 | TalkingData SDK, RESTful API | 从 App 和服务端收集原始数据 |
| 数据缓冲 | Apache Kafka | 高吞吐、持久化的消息队列,削峰填谷 |
| 数据存储 | HDFS / S3 (数据湖), Hive / ClickHouse (数仓) | 海量数据低成本存储与高效查询 |
| 数据计算 | Apache Flink (实时), Apache Spark (批处理) | 流式计算和离线大数据处理 |
| 数据服务 | Spring Cloud / gRPC ( |
