简介
电影的点击次数代表着电影受欢迎的程度,系统中需要统计每一部电影的历史总点击次数和某一段时间内的点击次数,依据这些数据可以给用户推荐当前最热的电影,吸引用户下单。
现在实现
目前线上系统具有记录每部电影总点击次数的功能,其实现是:电影表中设计一个记录点击次数的字段,当用户请求电影详情时实时修改该字段为当前值+1
缺点
- mysql数据写性能不强,并发性能差,当有大量用户访问时会造成数据库假死,正常的页面访问不响应
- 只能记录总的点击次数,不能记录近期的点击次数,推荐不准确
优点
点击次数统计准确,实时性好
流行实现分析
现在很多成熟的网站都提供类似的功能,其实现方法也有所不同,分为实时统计和异步统计两种实现,总结有如下方式:
nosql实时统计
使用诸如memcached的nosql实现,memcached提供incr指令,它可以原子性的对指定key的值+1,而且性能极高,他的缺点是不能持久化,当数据库崩溃时数据会全部丢失,所以需要在有数据高安全性要求的情况,使用memcacheddb 或者开启持久化的redis代替memcached,他们都支持memcached协议,所以原有的代码不需要做任何修改,但性能会损失一点,这种损失对日均pv500万以下的网站应该不会有影响。
记录访问信息、异步统计
上面讲述的是一种实时解决方案,能解决大部分的情况,但对应性能要求高的网站,解决这个问题的杀手锏还是异步。当用户访问网页时直接记录这次访问的信息,但不马上进行统计,由一个后台服务程序动态统计这些数据,并把统计结果存储到数据库中,网站只需要访问统计好的结果即可,统计频率可以设置为几分钟、几小时或者几天,这要看网站对数据延迟的容忍度了/
mysql 存储
mysql update操作会锁记录,使用锁会影响性能,但insert操作会快很多,特别是myisam存储引擎可以允许不设置主键,插入性能很高。
nosql存储
使用nosql存储每次的日志,mysql insert的性能虽然不错,但在高并发情况下还是会出现问题,因此可以使用写性能更好的nosql,比如mongodb,tokyo tyrant等
文件存储
不引入其他的存储信息,直接使用文件存储日志,每天一个文件,在linux下能够达到很不错的性能,而且架构十分简单,java log4j也能达到不错的性能。
专业日志存储系统
使用专门的日志系统,比如scribe,具备处理海量并发,海量数据的能力,但运维成本高
抉择
方案选择指标
- 尽可能的高性能
- 开发简单,最好不用开发代码
- 支持近期点击次数统计
- 数据延时不长,数据不需要实时,延迟几个小时甚至1天都可以接受
结论
- 使用文件系统存储、异步统计,统计结果存储数据库
- 不开发代码,直接使用啊怕车系统系统记录日志
- 在影片详情加入一个图片,src="click.ichaoying.com/movie/dot.jpg?id=xxx&ts=xxx",id 表示电影id,ts表示时间戳,保证本地没有缓存
- 构建click域名,并配置其日志记录
- 开发shell脚本,异步统计日志信息,并存储
- 使用crontab定时执行,可以设置为每天夜里2点执行统计
分享到:
相关推荐
springboot入门工程,可是开始计数,终止计数,清空计数.只保存最近一分钟以内的访问次数
web中经常会使用到刷新页面,访问url、重定向请求的功能。 javascript提供了许多方法访问,修改当前用户在浏览器中访问的url.所有的这些技术都是基于location对象的。它是作为window对象的属性。你可以生成一个包含...
Redis缓存url访问次数(SpringBoot拦截器) 博客地址:https://blog.csdn.net/qq_38234785/article/details/119008637
JAVA实现的能抓取网站url提供分析等功能
查询访问URL地址所用的时间(可指定访问次数和间隔时间)
URL Protocol 示例 C#代码 可以实现网页点击打开本地程序,
点击查看解压密码.url
网站访问统计,记录访问者ip,访问次数,入口等基本信息。 折线图现实访问高峰期等。
https://blog.csdn.net/shisuizhe/article/details/54949431?locationNum=6&fps=1根据大佬的博客制作的damo,通过url点击打开winform程序,并传值
ThinkPHP URL设计和SEO支持ThinkPHP URL设计和SEO支持
点击获取页面URL地址 $.jqURL.url(); 点击获取页面URL地址传递的参数 $.jqURL.qs(); 点击获取页面去除参数后的地址 $.jqURL.strip(); 点击获取页面URL传递的参数a的值 $.jqURL.get("a");
按域名、url、ip等等统计信息 统计总流量 统计当前带宽\峰值带宽 统计总请求数量 1. 安装 # cd /usr/local/src/ # wget http://nginx.org/download/nginx-1.4.2.tar.gz # tar -xzvf nginx-1.4.2.tar.gz
urlcode解码,HTTP:URL编码解码-A codec for URL encoding and decoding
定义变量: int total=1;//data amount int p=1;//page index int perpage=5; int pergroup=5; 功能:|[3] 4 5 > >> >| 即:首页、尾页、前group、后group、上一页、下一页、页码
它可以统计您站点的如下信息: 一:访问量,访问次数,页面浏览量,点击数,数据流量等 二:精确到每月、每日、每小时的数据 三:访问者国家 四:访问者IP 五:Robots/Spiders的统计 六:访客持续时间 七:对不同...
URL参数拼接, URL参数拼接, URL参数拼接, URL参数拼接, URL参数拼接
站点统计:记录用户访问数,页面浏览数
根据坐标、点击间隔、点击次数,实现模拟鼠标自动点击功能。 注意:你的电脑首先装有.NET Framework框架,然后才能运行此程序. Process[] pname = Process.GetProcesses(); //取得所有进程 http(s)?://([\w-]+\.)...
URL Generator(URL生成器)是来自国外的一款URL生产工具,URL Generator界面整洁、功能强大,能够一键生产URL,快捷方便、小巧又实用,URL Generator将根据您输入的字段值创建一个URL列表,然后可以从程序中保存URL...
毕业设计,基于Python+Django+MySql开发的豆瓣电影爬虫及电影展示网站,内含Python完整源代码,数据库脚本 Python基于Scrapy豆瓣电影爬虫及Django电影展示网站设计毕业源码案例设计 开发环境:Python3.7 + Scrapy...