学习新浪微博计数服务
本文摘自 http://blog.cydu.net/
官方ppt :
http://blog.cydu.net/public/doc/Velocity%E5%88%86%E4%BA%AB_%E5%BE%AE%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1%E4%B9%8B%E5%BE%AE%E5%8D%9A%E8%AE%A1%E6%95%B0%E5%99%A8%E6%9C%8D%E5%8A%A1_%E6%9D%9C%E4%BC%A0%E8%B5%A2_20121205.pdf
本文是个人学习的理解加上原文ppt的引入
新浪微博的会有和很多计数功能,关注数,转发数,评论数等等
在大量的数据线会产生如下问题
产生的问题
1.数据量大
2.访问量发 (cache的命中率问题)
3.突发事件的热点数据
4.占用的内存
5.更新方法 如果副本多会影响性能
6.故障解决
阶段一:
在微博数据量不是很多的时候,统计数量会很少,所以直接使用sql就可以查出 select count(*),当前阶段属于只用MySql阶段
阶段二:
当有了一定的用户基础后,单纯的select count(*)扫描的数据行数过多,如果不建立联合索引来避免查表会消耗很多性能。这里的解决方案是建立一个以主键和要查询字段的联合索引来避免回表查询(原理可以查看《高性能MySql》索引章节 )。此阶段依然是单纯的使用MySql阶段
select count1, count2 from table where id = 111;
阶段三:
随着用户量的增大,访问量也随之增大,和突发的热点数据的指数增加。未解决这种问题,不得不加上缓存Memcache,此情景还有问题,就是生成新的数据的id生成问题,大量的数据并发的生成,必然有大量的id需要分配,如果要同步的生成数据,势必会影响相应速度,采用异步生成数据的id如何形成id成全站唯一切批量生成,可以使用id生成服务,每次生层一批id,避免每次生成id都要调用接口获取(id生成服务原理可以参考https://my.oschina.net/CandyDesire/blog/619122)。将要生的数据放入消息队列中,避免高并发时数据的丢失。
在生成数据过程中,新浪微博采用批量的生成方法
先合并相同的操作,降低数据库的写压力
此时的系统不在是单纯的MySql。
至此的问题如下
为了解决上述问题,采用redis解决
由于我个人没有用过redis,对AOF第一次接触,如不懂AOF可以参考http://redisbook.readthedocs.io/en/latest/internal/aof.html
引入redis后,后端架构如下
当然即使使用这个架构,柔然驾驭不了海量的数据,新浪微博还对数据结构进行的设计,我并没有看懂,详细细节可以参考官方ppt(http://blog.cydu.net/public/doc/Velocity%E5%88%86%E4%BA%AB_%E5%BE%AE%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1%E4%B9%8B%E5%BE%AE%E5%8D%9A%E8%AE%A1%E6%95%B0%E5%99%A8%E6%9C%8D%E5%8A%A1_%E6%9D%9C%E4%BC%A0%E8%B5%A2_20121205.pdf)
最后,就是讲这个计数服务进行服务化,为全站提供服务
整体发展过程
学习新浪微博计数服务相关推荐
- 从0到1:饿了么风控计数服务是如何炼成的
GitChat 作者:伍正云 原文: 从0到1:饿了么风控计数服务是如何炼成的 关注公众号:GitChat 技术杂谈,一本正经的讲技术 引言 2017年4月份从饿了么正式进入多活领域开始,也预示着饿了 ...
- Linux学习笔记 文件服务Vsftp详细介绍
Linux学习笔记 文件服务Vsftp详细介绍 知识点: 1.FTP使用TCP连接和TCP端口 2.在进行通信时,FTP需要建立两个TCP连接: 一个用于控制信息,TCP端口号缺省为21 一个用于数据 ...
- dockers-系统学习-docker compose服务编排
dockers-系统学习-docker compose服务编排 一.服务编排 1.1.概念 按照一定的业务规则批量管理容器 1.2.问题 微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会 ...
- 深圳云计算培训学习:云服务和云计算有什么区别?-千锋
深圳云计算培训学习:云服务和云计算有什么区别?-千锋 什么是云,什么不是云首先,云计算确实是非常重要的,云计算确实是当前非常重要的技术,而且对未来会有非常深刻的影响力.但是,目前云计算的商业理念,如云 ...
- 新浪微博互粉php,新浪微博粉丝服务平台配置教程
任何微博用户都可以使用新浪微博粉丝服务平台 微博粉丝服务平台跟微信公众平台的基础功能差不多,由于一切都是在私信里面操作,可以理解为私信的高级功能. 提示:粉丝服务平台在WordPress连接微信插件V ...
- 学习 WCF (6)--学习调用WCF服务的各种方法
根据不同的情况,我们可以用不同的方法调用WCF服务,本文简单总结了一下调用WCF的一些方法(代理类,Ajax...),分享给大家.开发工具调用WCF 这中方法很方便也很简单,很多工作VS就帮我们完成了 ...
- Dubbo -- 系统学习 笔记 -- 示例 -- 服务分组
Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 服务分组 当一个接口有多种实现时,可以用group区分. <dubbo:se ...
- 学习搭建 Consul 服务发现与服务网格-有丰富的示例和图片
第一部分:Consul 基础 1,Consul 介绍 官网文档描述:Consul 是一个网络工具,提供功能齐全的服务网格和服务发现. 它可以做什么:自动化网络配置,发现服务并启用跨任何云或运行时的安全 ...
- soa学习路线_Web服务安全性和SOA路线图的人为维度
soa学习路线 在大多数非平凡的SOA环境中,很难跟踪系统之间不断发展的集成,除非有明确的发布和查找适当信息的方法. 概述IT环境,定义当前或将要连接的内容,是维护环境的先决条件. 缺少这种方法通常会 ...
- Android 学习笔记 Service服务与远程通信...(AIDL)
PS:这一章节看的我有几分迷茫,不是很容易理解...不过还好总算是明白了一大半了...基本的迷惑是解决了... 学习内容: 1.跨应用启动服务... 2.跨应用绑定服务... 3.跨应用实现通信... ...
最新文章
- 微信公众号开发的一些配置
- linux没有交换分区会怎样,linux – 服务器拒绝使用交换分区
- API接口调用里的QPS指什么?百度语音API里的QPS实例说明
- java中的%%%_JSP页面中%!%与%%与%=%
- sctp和tcp的区别
- 【App性能】:TraceView分析法
- 计算机基础:图形、图像相关知识笔记
- Linux系统查看系统硬件,linux怎么查看系统硬件信息
- mysql 整数类型_MySQL的数据类型
- 两种方法解决pip、conda安装库时慢的问题
- 中心极限与大数定理律的关系_多元函数的极限、连续性分析
- mongodb由于目标计算机积极拒绝无法连接失败
- 苹果为 macOS 重大漏洞道歉;迅雷内讧股价暴跌;小米百度在一起 | 一周业界事
- 二台S3928P堆叠的配置文档,大家可以参考
- A New Start
- DevOps技术学习路线图 初阶+中阶+高阶
- 1月17日云栖精选夜读:阿里云云数据库开了一个未来大会,谈了谈2038年的数据库趋势...
- php微信公众号登录
- 迅雷下载的种子文件后坠总是php,我的迅雷怎么不能下载呀,总是显示在连接种子文件...
- hcie lab 实验挂了怎么办?
热门文章
- div+css网页html成品学生作业包含10个html页面——动漫主题海贼王
- 《软件架构/架构师书库》读后感
- amd显卡风扇调节_AMD Crimson驱动程序导致显卡风扇速度过低,官方: 请尽快修复...
- 全志平台动态mac地址解决办法记录
- 南京大学俞扬博士AIDL演讲全文:强化学习前沿(上)
- 1001系列之案例0003如何对欧洲人口普查数据集整理挖掘
- 计算机专用英语1500词带音标,计算机专用英语词汇1500词音标版.pdf
- 软件工程__CMMCMMI
- 02142数据结构导论
- 一、Fiddler抓包工具 — Fiddler介绍与安装