画像平台功能具有相似性,其技术架构也可以抽象出统一的模式,本节内容主要介绍画像平台常见的技术架构。为了加强读者对技术选型的认识,本节还会介绍几个互联网公司在画像类平台上的技术选型方案。
画像平台常见技术架构图如图2-13所示,主要包括数据层、存储层、服务层和应用层。
数据层:画像平台功能建设依赖现有的大数据组件,如大数据存储、大数据计算、大数据任务调度等,借助大数据组件可以实现标签的生产、存储和维护。标签数据源是画像平台所依赖的最底层数据,不同标签往往散落在不同的业务库表中。为了方便业务使用,画像平台会将所有标签汇总成一张画像宽表。标签数据分为离线和实时两类,实时标签主要是由实时数据产生的标签,离线标签基于离线数据计算生成,算法产出的挖掘类标签也属于离线标签范畴。
存储层:画像平台业务代码直接访问的都是存储层数据,其主要包含4类存储内容。人群数据存储引擎主要用于存储人群数据,画像平台产出的各类人群需要持久化存储,方便后续对外提供服务使用。标签数据存储引擎主要用于标签查询服务,为了提高服务性能一般使用高性能的缓存类数据库。画像数据存储引擎是为了提高人群圈选速度,直接基于底层大数据原始表做人群圈选性能较差,需要借助画像数据存储引擎提高人群生产效率。业务数据存储引擎主要存储业务数据,如人群基本信息、人群圈选条件、标签基本信息、标签产出信息等。
服务层:服务层是画像平台核心功能实现层。标签服务主要用于实现标签查询服务和元数据查询服务,其依赖存储层的标签数据存储引擎和业务数据存储引擎。人群服务主要包括人群创建和画像分析服务,人群创建支持各类创建方式,画像分析服务支持多种画像分析场景,人群服务还包括人群判存和人群附加功能模块。人群服务主要依赖人群数据存储引擎和画像数据存储引擎。标签管理服务提供标签增删改查功能,其依赖业务数据存储引擎及一些大数据支撑组件。用户画像查询服务主要提供单用户画像查询功能,其数据来源于标签数据存储引擎。
应用层:应用层即画像平台对外服务展现层。SDK主要对外提供服务接口,比如标签查询接口、元数据查询接口、人群创建接口、判存接口等,第三方借助SDK使用画像平台服务、获取画像数据。画像平台通过可视化的页面展示平台功能,用户在画像平台上通过简单的配置便可使用各类功能,提高了画像数据的使用效率。
上一小节介绍了画像平台常见的技术架构,本节将介绍各模块的具体技术选型方案。本书第7章会给出一个从0到1搭建画像平台的实践案例,为了保证读者能够顺利复现书中内容,本书所有技术选型均采用开源技术或者云服务。兼顾业界画像平台发展趋势和技术流行程度,具体的技术选型如图2-14所示,本节对于相关技术只做概括性说明,具体到每一种技术的特点及配置方式,可以参见第7章内容。
数据层:所有底层数据存储在基于Hive构建的数据仓库中,均以Hive表的形式存在。HDFS提供大数据分布式文件存储的能力;Yarn用于资源调度,标签的生产、实时数据的处理等任务都依赖大数据资源调度;DolphinScheduler主要用于任务调度,主要负责Hive表导入人群、标签定时更新、人群定时产出等大数据调度工作;Spark作为离线数据计算引擎主要用于计算一些离线任务;Flink主要用于实时数据的处理,如消费实时数据进行用户行为分析。通过以上技术保证了画像平台底层数据的稳定产出。
存储层:为了提高人群筛选速度,引入了ClickHouse计算引擎,其在OLAP场景下性能表现优异,比较适合实现画像平台人群圈选和分析功能;借助Redis缓存可以满足标签查询服务和人群判存服务的高并发需求;为了方便人群数据对外输出,生成的人群会存储在阿里云OSS(Object Storage Service,对象存储服务)中,人群数据还会存储在Hive表中用于备份使用;平台上的业务数据存储在数据库MySQL中,其中包括人群配置信息、标签元信息、画像分析结果数据等。基于这些存储引擎可以构建高可用的画像服务。
服务层:服务层主要提供用于构建画像平台页面的接口服务以及支持分布式高并发场景下的微服务。本书借助SpringBoot搭建画像平台服务端工程,向平台前端提供RESTful风格的接口服务;使用SpringCloud可以搭建一套微服务,可以满足标签查询、判存等高并发服务需求。
应用层:前端研发可以使用Vue搭建前端工程并开发可视化的画像平台功能;平台对外提供的服务均可以封装到SDK中,本书以Java语言为主,因此SDK主要以JAR(Java Archive,Java归档)包的形式存在。
以上便是一个可行的技术选型方案,读者也可以根据自身业务特点选择不同的技术方案或者实现语言,但是画像整体的架构及业务实现逻辑基本相似。
本节主要介绍业界在画像相关功能上的技术选型方案。目前业界数据层建设都依赖Hadoop体系下大数据工具及组件,服务层的区别主要在语言框架层面,最终提供服务的方式相同。本节提到的技术选型主要偏重存储层涉及的画像引擎及画像分析相关技术方案,对应到功能层面上的人群圈选和画像分析功能。
阿里达摩盘是阿里妈妈广告投放平台,该平台可以进行人群圈选并应用于后续广告投放环节。阿里的实现方案主要基于自身云服务MaxComputer和AnalyticDB实现,其中MaxComputer主要用于离线计算挖掘,AnalyticDB用于实时大数据分析。
美团和滴滴的实现方案比较相似,在人群圈选中主要使用的是Elasticsearch和Spark引擎,Elasticsearch可以快速找到筛选逻辑比较简单的人群,当涉及复杂的圈选逻辑时可以降级为Spark引擎,直接从底层Hive表中获取数据。
Apache Doris源于百度,在百度内部使用也比较广泛。百度内部用户画像相关圈选和分析基本都是基于Doris实现的。知乎的画像圈选也借助了Doris,并把Spark作为一些特殊业务场景下人群圈选的计算引擎。
最近几年ClickHouse比较流行,今日头条DMP以及CDP均通过ClickHouse实现了人群圈选,借助ClickHouse的BitMap实现了人群圈选的提速;快手DMP在人群圈选场景下也借助ClickHouse BitMap实现了相关功能。
最后提一下商用的数据分析平台,神策和GrowingIO都成立于2015年,但是由于创始团队的技术风格不同,其技术选型差异较大。神策主要基于Impala和Kudu实现,而且在Impala上面做了大量的优化;GrowingIO借助Elasticsearch和HBase实现,部分功能使用Spark引擎进行计算。
技术选型没有优劣之分,关键要适合自身业务特点。借助本节内容读者可以对业界技术选型有大概的认识,在建设画像平台过程中选择最适合自身的技术方案。
提示:以上技术选型来自网络公开材料,如果有误欢迎批评指正。
本文节选自《用户画像:平台构建与业务实践》,转载请注明出处。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。