克拉克拉(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脚本更容易上手且运维成本更低,相信到时公司整体实时计算框架的性能将会得到显著的提升。

原文链接
本文为云栖社区原创内容,未经允许不得转载。  

转载于:https://www.cnblogs.com/yunqishequ/p/10250459.html

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

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

    克拉克拉(KilaKila):大规模实时计算平台架构实战 作者:阿里云MVP田亮 一.产品背景: 克拉克拉(KilaKila)是国内专注二次元.主打年轻用户的娱乐互动内容社区软件.KilaKila推出 ...

  2. bilibili Saber 实时计算平台架构与实践【Apache Flink 替换 Spark Stream的架构与实践】

    摘要:本文由 bilibili 大数据实时平台负责人郑志升分享,基于对 bilibili 实时计算的痛点分析,详细介绍了 bilibili Saber 实时计算平台架构与实践.本次分享主要围绕以下四个 ...

  3. 携程实时计算平台架构与实践丨DataPipeline

    文 | 潘国庆 携程大数据平台实时计算平台负责人 本文主要从携程大数据平台概况.架构设计及实现.在实现当中踩坑及填坑的过程.实时计算领域详细的应用场景,以及未来规划五个方面阐述携程实时计算平台架构与实 ...

  4. bilibili 实时计算平台架构与实践

    摘要:本文由 bilibili 大数据实时平台负责人郑志升分享,基于对 bilibili 实时计算的痛点分析,详细介绍了 bilibili Saber 实时计算平台架构与实践.本次分享主要围绕以下四个 ...

  5. 腾讯Oceanus实时计算平台架构设计

    腾讯Oceanus实时计算平台架构设计-学习总结 一.背景 实时计算应用主要分为以下四类: (1)ETL:ETL应该是目前实时计算最普遍的应用场景.例如在TDBank的数据链路中,TDSort读取消息 ...

  6. 58同城实时计算平台架构实践

    背景 58同城作为覆盖生活全领域的服务平台,业务覆盖招聘.房产.汽车.金融.二手及本地服务等各个方面.丰富的业务线和庞大的用户数每天产生海量用户数据需要实时化的计算分析,实时计算平台定位于为集团海量数 ...

  7. 腾讯Oceanus实时计算平台架构设计---学习总结

    一.背景 实时计算应用主要分为以下四类: (1)ETL:ETL应该是目前实时计算最普遍的应用场景.例如在TDBank的数据链路中,TDSort读取消息缓存系统Tube中的消息,通过流数据处理系统将消息 ...

  8. 滴滴是如何从零构建集中式实时计算平台的?| 技术头条

    作者 | 梁李印 责编 | 唐小引 出品 | CSDN(ID:CSDNNews) 滴滴出行作为一家出行领域的互联网公司,其核心业务是一个实时在线服务.因此具有丰富的实时数据和实时计算场景.本文将介绍滴 ...

  9. 滴滴梁李印:滴滴是如何从零构建中式实时计算平台的?

    本文来源 | CSDN 作者 | 梁李印,滴滴出行大数据架构部技术专家.梁李印将于5月18-19日在上海A2M峰会分享<滴滴实时计算平台架构与实践>话题,更多A2M峰会内容可点击此处查看. ...

最新文章

  1. C#_关于静态类和静态方法(转)
  2. Java8:Lambda表达式增强版Comparator和排序
  3. 判断输入的整数是否为素数_C语言 | 判断是否素数
  4. 关于wParam和lParam
  5. 一个数组分成两部分,让两部分的差最小
  6. camera---(4)双摄像头分类
  7. 布隆过滤器误判_布隆过滤器原理
  8. 设计干货栅格系统素材 | UI设计师应用好帮手
  9. 机器学习、数据科学、深度学习、可视化常用方法速查手册总结分享
  10. 新中大财务软件V5.08安装
  11. 微信HOOK 关于转发消息功能开发的一些开发心得
  12. Windows XP SP3 下 High Definition Audio 声卡安装方法
  13. 第一章 数字图像基础知识(图像的空间分辨率和幅度分辨率)
  14. ipa在线下载安装(itms-services)
  15. 金融工程 | 远期与期货概述
  16. OJ刷题之《寄居蟹与海葵》
  17. 将windows 8安装到U盘随身带!
  18. 基本图像变换:线性变换,仿射变换,投影变换
  19. CreateJS 入门小记
  20. CMWAP 和 CMNET

热门文章

  1. SpringBoot整合mybatis(CRUD)
  2. java.rmi.server_java.rmi.ServerException:服务器线程中发生Remo...
  3. python目录及文件_零基础小白必看:python基本操作-文件、目录及路径
  4. Linux 如何取进程运行时间,linux -- 获取进程执行时间
  5. php js获取文件大小,js+ajax实现获取文件大小的方法_javascript技巧
  6. python 分布式框架_python分布式框架rq的使用
  7. 【若依(ruoyi)】自定义的数据选择对话框
  8. JavaScript:向数组开头添加
  9. 【sprinb-boot】改造成 spring-cloud 项目
  10. hbuilder怎么没法插入字符了_一个你所不知道的加密方式--零宽字符加密