克拉克拉(KilaKila):大规模实时计算平台架构实战
克拉克拉(KilaKila):大规模实时计算平台架构实战
一、产品背景:
克拉克拉(KilaKila)是国内专注二次元、主打年轻用户的娱乐互动内容社区软件。KilaKila推出互动语音直播、短视频配音、对话小说等功能,满足当下年轻用户个性化、碎片化的文娱需求。App用户等级体系作为克拉克拉社区化打造的核心业务,在增强社区活跃度、提高产品留存方面起到至关重要的作用。随着业务规模增长,海量用户行为日志实时采集与计算的瓶颈也日益突出,由于单台服务器的处理能力有限,海量数据分析需要分布式计算模型来替代。通过技术调研与架构选型,最终解决方案采用基于阿里云日志服务(Log Service)与 开源技术Storm为组合的基础架构。
二、实时日志采集:
LogHub 支持客户端、网页、协议、SDK/API等多种日志无损采集方式,所有采集方式均基于Restful API实现,除此之外也可以通过API/SDK实现新的采集方式。对于克拉克拉来说,业务日志会实时输出到本地服务器,通过在日志服务器部署Logtail,即可完成日志的无丢失采集。因业务场景不同,对日志可以根据不同的Topic进行分类,从而满足不同业务的个性化计算需求。此外,LogHup可通过配置自带的投递服务,将海量日志同步到数据仓库中永久存储。
图一:日志采集流程图
通过Logtail来采集Nginx上用户行为的日志到Logstore只需要简单配置相应日志所在的机器组和日志的绝对路径,其从日志落盘服务器到采集工作的完成控制在1秒内。同时Logstore支持多功能的日志检索服务,可以为后续明确用户行为提供快捷的查询服务。其中我们将不同topic的日志存储在不同的Logstore中,供后续不同业务有针对性的实时消费。
图二:克拉克拉topic日志结构图
图三:日志检索
三、实时业务场景:
为满足克拉克拉用户社区目标,该业务主要针对APP用户在直播、小说、视频三大业务线100多种行为场景下完成用户经验值的实时计算,也就是数据值的增删改查。在实时计算层,克拉克拉选择了Storm开源的分布式实时大数据处理框架,而阿里云日志服务对于Storm有着非常好的兼容与支持。
图四:克拉克拉实时计算框架
图五: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服务端。
四、实时数据存储
克拉克拉实时计算框架中存在诸多数据缓存、永久存储等场景需求。面对该问题,克拉克拉采用了阿里云OTS组件方案。OTS也称为表格存储(Table Store)是阿里云自研的NoSQL多模型数据库,提供海量结构化数据存储以及快速的查询和分析服务。表格存储的分布式存储和强大的索引引擎能够提供PB级存储、千万TPS以及毫秒级延迟的服务能力。通过使用OTS所提供的Java SDK开发包实现了Storm计算过程中所涉及到的数据存储需求。
图六:克拉克拉OTS存储示例
五、项目总结
该项目以实时性和数据的精确度作为评判指标,所面临的挑战主要是用户行为的高并发,平均每秒百万级别的用户计算量;而针对不同的Logstore的日志处理量将会达到用户计算量的十倍左右。通过基于阿里云日志服务、OTS表格存储组件所搭建的克拉克拉实时计算平台综合能力表现良好,符合产品业务预期。
六、未来展望
以Storm为计算中心的框架虽可满足克拉克拉业务诉求,但相关项目研发效率还可进一步提升。对此,后续将重点调研阿里云另一个高效实时计算组件Blink。Blink 是阿里云实时计算方案,基于开源的Apache Flink。 该技术方案的最大亮点是通过SQL脚本语言来代替现有Java语言所开发的计算逻辑。从研发效率上来讲,SQL脚本更容易上手且运维成本更低,相信到时公司整体实时计算框架的性能将会得到显著的提升。
原文链接
本文为云栖社区原创内容,未经允许不得转载。
克拉克拉(KilaKila):大规模实时计算平台架构实战的更多相关文章
- 携程实时计算平台架构与实践丨DataPipeline
文 | 潘国庆 携程大数据平台实时计算平台负责人 本文主要从携程大数据平台概况.架构设计及实现.在实现当中踩坑及填坑的过程.实时计算领域详细的应用场景,以及未来规划五个方面阐述携程实时计算平台架构与实 ...
- TOP100summit:【分享实录】Twitter 新一代实时计算平台Heron
本篇文章内容来自2016年TOP100summit Twitter technical lead for Heron Maosong Fu 的案例分享. 编辑:Cynthia Maosong Fu:T ...
- SLA 99.99%以上!饿了么实时计算平台3年演进历程
作者介绍 倪增光,饿了么BDI-大数据平台研发高级技术经理,曾先后就职于PPTV.唯品会.15年加入饿了么,组建数据架构team,整体负责离线平台.实时平台.平台工具的开发和运维,先后经历了唯品会.饿 ...
- QQ音乐PB级ClickHouse实时数据平台架构演进之路
导语 | OLAP(On-Line Analytical Processing),是数据仓库系统的主要应用形式,帮助分析人员多角度分析数据,挖掘数据价值.本文基于QQ音乐海量大数据实时分析场景,通过Q ...
- 《大数据实时计算引擎 Flink 实战与性能优化》新专栏
基于 Flink 1.9 讲解的专栏,涉及入门.概念.原理.实战.性能调优.系统案例的讲解. 专栏介绍 扫码下面专栏二维码可以订阅该专栏 首发地址:http://www.54tianzhisheng. ...
- 知名大厂如何搭建大数据平台&架构
今天我们来看一下淘宝.美团和滴滴的大数据平台,一方面进一步学习大厂大数据平台的架构,另一方面也学习大厂的工程师如何画架构图.通过大厂的这些架构图,你就会发现,不但这些知名大厂的大数据平台设计方案大同小 ...
- 从零构建Flink SQL计算平台 - 1平台搭建
一.理想与现实 Apache Flink 是一个分布式流批一体化的开源平台.Flink 的核心是一个提供数据分发.通信以及自动容错的流计算引擎.Flink 在流计算之上构建批处理,并且原生的支持迭代计 ...
- 大规模实时流处理平台架构-zz
随着不同网络质量下接入终端设备种类的增多,服务端转码已经成为视频点播和直播产品中必备的能力之一.直播产品讲究时效性,希望在一定的时间内让所有终端看到不同尺寸甚至是不同质量的视频,因此对转码的实时性要求 ...
- Lyft 基于 Flink 的大规模准实时数据分析平台(附FFA大会视频)
摘要:如何基于 Flink 搭建大规模准实时数据分析平台?在 Flink Forward Asia 2019 上,来自 Lyft 公司实时数据平台的徐赢博士和计算数据平台的高立博士分享了 Lyft 基 ...
随机推荐
- vector的用法小结(待补全
1.vector的好处 支!持!删!除! 节!省!内!存! 2.一点基础的小操作 ①插入操作:v.push_back(x) 在尾部插入元素x: ②删除操作 : v.erase(x)删除地址为x的元素 ...
- 在VB中动态执行VBS代码,可操控窗体控件
通过执行一段VBS代码来操控窗体内的控件也可以使用AddObject方法添加自己的类,那么在动态VBS代码中也一样可以使用在增加程序扩展性或是有脚本化需求的时候,这个方法还是不错的. Option E ...
- ntp---时钟同步服务
NTP--时钟同步服务 地球分为东西十二个区域,共计 24 个时区 格林威治作为全球标准时间即 (GMT 时间 ),东时区以格林威治时区进行加,而西时区则为减. 地球的轨道并非正圆,在加上自转速度逐年 ...
- Git Log描述乱码问题解决方法
在git bash 中执行以下命令:git config --global core.quotepath off git config --global --unset i18n.logoutpute ...
- 873D. Merge Sort
Merge sort is a well-known sorting algorithm. The main function that sorts the elements of array a w ...
- Could not resolve placeholder 'IMAGE_SERVER_URL' in string value "${IMAGE_SERVER_URL}"
这种问题 在网上查的是说使用了重复的property-placeholder 可能是在别的xml 也用了property-placeholder 解决方法 加上 ignore-unresolva ...
- Linux 结构化命令
if -then 语句 if -then 语句有如下格式 if command then commands f i bash shell 的if语句会先运行if后面的那个命令,如果改命令的退出状态码是 ...
- BurpSuite 代理设置的小技巧
原文:https://www.anquanke.com/post/id/85925 作者:三思之旅 预估稿费:300RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 在We ...
- web项目 easyui-datagrid开发实践
一,引言 工作的需要,做了3年的wpf(mvvm)……,又因为项目的需求,回归到web的开发. ■ 3 years ago,vue是我三年前没用过的玩意儿. ■ 3 years ago,boots ...
- input type=passoord 密码框的明密文(显示和隐藏) 显示
最近在写一个新的项目,从头开始写,所以就要从注册登录开始做起.以前写登录注册模块的时候,无外乎给input框一个type=”password”就可以了,近期因为要涉及到显示隐藏状态的切换. 样式代码如 ...