zoukankan      html  css  js  c++  java
  • 作品排行榜设计过程

    近期需要做一个作品排行榜的功能,统计特定时间段内各个作品的历史信息,方便分析调整产品方向。这个需求有一个显著的特点就是实时要求不是很高。

    分析

    在做这件事前首先考虑是不是有现成的工具可以用呢?
    目前做大数据分析比较常用的是

    • Hadoop:做数据的批处理
    • Storm:做数据的实时处理

    这两个工具都可以实现我们的需求,storm更符合后面对实时数据分析的要求。但是问题来了:我们团队对这方面没有积累,要使用这两个工具完成需要更多的时间,并且在现阶段没有太大的必要。

    即然决定要自己写了,那就需要考虑用什么方式实现了?
    做这样的统计有两种实现

    • 实时(同步):在所有产生记录的地方添加统计的代码
    • 定时(异步):定时查询数据记录产生排行榜结果

    以现在的需求来说定时的方式会更好些,实时会对数据库产生额外的负担和对处理流程产生依赖。

    实现

    关于定时的实现方式有三个方案。

    1.全部生成

    在定时统计某个时间段内所有数据。

    • 优点:功能完成时间短,统计数据无遗漏
    • 缺点:效率低,可能对服务器产生冲击

    2.增量累加

    定时生成定时的时间段内的数据,然后根据不同的用途用生

    成特定时间段内的数据。

    • 优点:效率较高,能平滑对服务器的影响
    • 缺点:需要保存中间变量,占用数据库

    3.部分增量累加

    定时生成定时的时间段内的数据,然后根据不同的用途累加增量数据生成特定时间段内的数据

    • 优点:效率高,能平滑对服务器的影响
    • 缺点:定制化,可扩展性不强

    总体来说,使用增量计算的方式,调整计算增量的时间间隔粒度能够较好地实现我们的需求。

  • 相关阅读:
    亲测——pycharm下运行第一个scrapy项目 ©seven_clear
    [转]pycharm的一些快捷键
    一个豆瓣API的使用——拒绝思维定式
    小试牛刀--利用豆瓣API爬取豆瓣电影top250
    Python GUI编程--Tkinter
    多线程详解
    K8S+GitLab-自动化分布式部署ASP.NET Core(一) 部署环境
    初学者浅度剖析eShopOnContainers 里面用到的MediatR .
    通过Task异步加快对数组的运算
    为什么是容器?
  • 原文地址:https://www.cnblogs.com/shanpow/p/4134063.html
Copyright © 2011-2022 走看看