克拉克拉(KilaKila):大规模实时计算平台架构实战

 

1、产品背景:
克拉克拉(KilaKila)是国内专一二次元、主打年轻用户的娱乐互动内容社区软件。KilaKila推出互动语音直播、短视频配音、对话小说等功能,知足当下年轻用户个性化、碎片化的文娱需求。App用户等级体系做为克拉克拉社区化打造的核心业务,在加强社区活跃度、提升产品留存方面起到相当重要的做用。随着业务规模增加,海量用户行为日志实时采集与计算的瓶颈也日益突出,因为单台服务器的处理能力有限,海量数据分析须要分布式计算模型来替代。经过技术调研与架构选型,最终解决方案采用基于阿里云日志服务(Log Service)与 开源技术Storm为组合的基础架构。数据库

2、实时日志采集:
LogHub 支持客户端、网页、协议、SDK/API等多种日志无损采集方式,全部采集方式均基于Restful API实现,除此以外也能够经过API/SDK实现新的采集方式。对于克拉克拉来讲,业务日志会实时输出到本地服务器,经过在日志服务器部署Logtail,便可完成日志的无丢失采集。因业务场景不一样,对日志能够根据不一样的Topic进行分类,从而知足不一样业务的个性化计算需求。此外,LogHup可经过配置自带的投递服务,将海量日志同步到数据仓库中永久存储。缓存

_1

图一:日志采集流程图服务器

经过Logtail来采集Nginx上用户行为的日志到Logstore只须要简单配置相应日志所在的机器组和日志的绝对路径,其从日志落盘服务器到采集工做的完成控制在1秒内。同时Logstore支持多功能的日志检索服务,能够为后续明确用户行为提供快捷的查询服务。其中咱们将不一样topic的日志存储在不一样的Logstore中,供后续不一样业务有针对性的实时消费。架构

_2

图二:克拉克拉topic日志结构图并发

_3

图三:日志检索负载均衡

3、实时业务场景:
为知足克拉克拉用户社区目标,该业务主要针对APP用户在直播、小说、视频三大业务线100多种行为场景下完成用户经验值的实时计算,也就是数据值的增删改查。在实时计算层,克拉克拉选择了Storm开源的分布式实时大数据处理框架,而阿里云日志服务对于Storm有着很是好的兼容与支持。
_4框架

图四:克拉克拉实时计算框架运维

_5

图五:LogHup 与 Storm关系分布式


上图中红色虚线框中就是LogHub Storm Spout,每一个Storm Topology会有一组Spout,同组内的Spout共同负责读取Logstore中所有数据。不一样Topology中的Spout相互不干扰。每一个Topology须要选择惟一的LogHub Consume Group名字来相互标识,同一 Topology内的Spout经过 Consumer Library来完成负载均衡和自动failover。Spout从LogHub中实时读取数据以后,发送至Topology中的Bolt节点,按期保存消费完成位置做为checkpoint到LogHub服务端。高并发

4、实时数据存储
克拉克拉实时计算框架中存在诸多数据缓存、永久存储等场景需求。面对该问题,克拉克拉采用了阿里云OTS组件方案。OTS也称为表格存储(Table Store)是阿里云自研的NoSQL多模型数据库,提供海量结构化数据存储以及快速的查询和分析服务。表格存储的分布式存储和强大的索引引擎可以提供PB级存储、千万TPS以及毫秒级延迟的服务能力。经过使用OTS所提供的Java SDK开发包实现了Storm计算过程当中所涉及到的数据存储需求。

_6

图六:克拉克拉OTS存储示例

5、项目总结 该项目以实时性和数据的精确度做为评判指标,所面临的挑战主要是用户行为的高并发,平均每秒百万级别的用户计算量;而针对不一样的Logstore的日志处理量将会达到用户计算量的十倍左右。经过基于阿里云日志服务、OTS表格存储组件所搭建的克拉克拉实时计算平台综合能力表现良好,符合产品业务预期。 6、将来展望 以Storm为计算中心的框架虽可知足克拉克拉业务诉求,但相关项目研发效率还可进一步提高。对此,后续将重点调研阿里云另外一个高效实时计算组件Blink。Blink 是阿里云实时计算方案,基于开源的Apache Flink。 该技术方案的最大亮点是经过SQL脚本语言来代替现有Java语言所开发的计算逻辑。从研发效率上来说,SQL脚本更容易上手且运维成本更低,相信到时公司总体实时计算框架的性能将会获得显著的提高。

相关文章
相关标签/搜索