其实微博是一个结构相对简单,但数据量却是很庞大的一种产品.标题所说的是千万级数据量也并不是一千万条微博信息而已,而是千万级订阅关系之间发布。在看 我这篇文章之前,大多数人都看过sina的杨卫华大牛的微博开发大会上的演讲.我这也不当复读机了,挑重点跟大家说一下。 大家都知道微博的难点在于明星会员问题,什么是明星会员问题了,就是刘德华来咱这开了微博,他有几百万的粉丝订阅者,他发一条微博信息,那得一下子把微博 信息发布到几百万的粉丝里去,如果黎明、郭富城等四大天王都来咱来开微博,那咱小站不是死翘翘了.所以这时消息队列上场了。在我的架构里 有一个异步publish集群,publish的任务都去zeromq队列读取队列.zeromq是目前已知开源的消息传递最快的一个。具体关于 zeromq可以自己google。zeromq有一个问题是不能持久化数据,这个自己做持久化存储.回过刚才那个话题, 把明星会员的粉丝按照"活跃度"进行分级。"活跃度"是根据登陆频度,时间,发布微博等因素大致分为铁杆粉丝、爱理不理、半死不活三大类分到不同的发布集 群中去. 铁杆粉丝类型的异步发布集群,发布速度肯定是最快的.微博的信息是用handler socket保存到mysql。这个信息ID,是用rdtsc+2位随机整数拼接而成的 64位整数唯一ID,防止出现自增ID出现的多服务器 id一致性的问题. 在publish的时候,集群只是把微博信息的ID发送给redis的订阅者。所以这个数据是很快的。而且订阅者的list里只保存的是ID.在内存的占 用率上也不是很高. 下面我给大家看一下我的mysql和redis数据结构 在我的结构中还有一个重要角色就是"Key GPS Server"(简称:KGS)简单来说,这个是分布式数据存储的中心索引服务器.一切数据的存储和获取,都通过KGS来定位. KGS支持多个服务器,多个机房多重备份存储。KGS是以Tokyo Cabinet的hash db为存储的socket server。记录key跟服务器之间的对应关系. KGS的任务就是告知key该存储在哪几台服务器上,或者告知该key存储在哪几台服务器上,并不做其他的服务.这样大大的减轻KGS的压力. 再说一下Redis集群,redis是以纯内存形式模式运行,关闭了热备的功能(redis的热备并不是那么好). 自己写了个backend server.在每台运行redis的机子上都运行着backend socket 进程, backend进程也是以tc的hash db为存储。备份着当前服务器的redis数据。当redis重启的时候,从本机的bakcend db 加载所有数据. Redis的集群是以用户水平切分法来分布的 现在该轮到mysql里, 在这个架构中,基本消除了这边缓存 那边缓存的问题。因为在这个集群中的每个服务都是高速运行的.唯一的一处的cache 就是在php端的eAccelerator local cache. eAccelerator是基于共享内存的,所有速度比基于socket类型的cache快多了. eAccelerator 缓存了用户top N条的微博信息还有从KGS查询的结果。 看到这里有人问了,你把用户信息和微博信息都放在mysql里,怎么能不用cache了.嘿嘿,因为我用了 handler socket。HS 是小日本写的一款mysql插件.HS避开了MySQL通讯协议,直接读取MySQL引擎。在多核、大内存、 InnoDB引擎环境,性能直超memcached.HS能以Key-Value方式直接读写mysql引擎 总结 Google首席科学家讲过一句话,就是一个大的复杂的系统,应该要分解成很多小的服务. 我的这个架构也是由一个个小的集群来共同处理大数据量发布数据。有的人为什么不用mongodb了,因为mongodb是一款大众性的分布式nosql db,我们有自己的key分布策略,不太适合用mongodb. 不理解redis的存储关系的同学,可以先参考一下 Retwis, Retwis是用纯redis实现的简单微博. 具体的架构图、流程图、ppt文件。请下载附件来阅读. http://code.google.com/p/php-tokyocabinet/downloads/detail?name=micro-blog-qiye.tar.bz2&can=2&q=#makechanges
- micro-blog-qiye.tar.bz2 (1.5 MB)
- 下载次数: 1
发表评论
-
四层和七层负载均衡的区别
2015-03-13 13:27 336(一) 简单理解四层和七层负载均衡: ① 所 ... -
Solr搜索服务架构图
2013-02-21 18:33 1322... -
Spring多数据源的配置和使用
2012-09-12 17:27 1036Spring多数据源的配置和使用 最近开 ... -
Java多播通讯框架 JGroups
2012-08-20 12:10 1261Java多播通讯框架 JGroups JGroups ... -
Terrocotta - 基于JVM的Java应用集群解决方案
2012-08-17 11:14 877Terrocotta - 基于JVM的Java ... -
MongoDB基本管理命令
2012-08-16 10:23 812MongoDB基本管理命令 MongoDB是一个NoSQ ... -
hessian demo和hessian与spring整合demo
2012-08-13 11:52 1601hessian demo和hessian与spring ... -
C++著名程序库的比较和学习经验
2012-07-25 10:35 655C++著名程序库的比较和学习经验 内容目录:1、C++各 ... -
Lucene和HBase的集成
2012-07-05 14:19 642Lucene和HBase的集成 ... -
可伸缩性最佳实践:来自eBay的经验
2012-07-05 08:53 654可伸缩性最佳实践: ... -
各种java序列化工具性能对比
2012-07-04 13:16 1698各种java序列化工具性能对比 看到一个很不错的工具ht ... -
深入探讨 Java 类加载器
2012-07-03 17:32 610深入探讨 Java 类加载 ... -
Servlet 工作原理解析
2012-06-27 15:05 666Servlet 工作原理解析 简介: Web 技 ... -
HTTP协议header头域
2012-06-27 10:04 877HTTP(HyperTextTransferPr ... -
深入研究Servlet线程安全性问题
2012-06-21 13:49 0摘 要:介绍了Servlet多 ... -
Java类加载原理解析
2012-06-12 13:33 548Java类加载原理解析 ... -
ffmpeg源码及相关开发资料下载,好文章积攒
2012-06-04 16:12 704FFMpeg0.6版源码下载:来自:http://sour ... -
分布式文件系统FastDFS架构剖析
2012-05-31 11:34 664FastDFS是一款类Google FS的开源分布式文件系 ... -
NoSQL数据库探讨
2012-05-24 09:16 496随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个 ...
相关推荐
完全用nosql轻松打造千万级数据量的微博系统
nosql打造千万级微博系统
nosql实验五-HBase数据迁移与数据备份&恢复
Couchbase Lite是一个Android嵌入式轻量级,面向文档(NoSQL),可同步的数据库引擎。
本书在紧贴实用的示例的引导下,介绍Oracle NoSQL数据库的安装、配置、应用程序开发、容量规划、容量调节以及与其他企业级数据中心产品的集成等主题。 本书主要内容 ● 了解Oracle NoSQL数据库架构及其底层数据...
本书由浅入深,全面系统地介绍了NoSQL系统。本书既对NoSQL系统的理论进行了深入浅出的分析,又介绍了每一种NoSQL数据库在业界广泛应用的一个具体系统,理论与实战并重。 本书共分5篇,12章。涵盖的内容有:NoSQL与...
为什么使用NoSQL? 为什么使用NoSQL? NoSQL的分类 NoSQL有什么特点? NoSQL有什么特点? NoSQL是否完美? NoSQL的一些概念——CAP NoSQL的一些概念——ACID NoSQL的一些概念——BASE NoSQL的一些概念——BASE NoSQL...
Nosql6种主流Nosql数据库系统对比-天盾数据恢复中心 6种主流Nosql数据库系统对比-天盾数据恢复中心
基于NoSQL的大数据处理的研究
对大数据管理的NoSQL系统最前沿的研究综述,最新的学术研究,广大爱好大数据的珍爱。
Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后,...
8种Nosql数据库系统对比 对各种NoSql进行比较
nosql生态系统 如果你正在考虑使用 NoSQL,你应该会马上发现你有很多种选择。 NoSQL系统舍弃了许了传统 关系型数据库的方便之处,而把一些通常由关系型数据库本身来完成的任务交给了应用层来完 成。这需要开发...
#资源达人分享计划#
当数据量达到TB或PB级的时候,传统关系型数据型已力不从心。在大数据热潮中,推出了NoSQL数据库,这种天生就为分布式存储而设计的技术,尤其以Apache HBase为代表,占领海量数据存储技术的大半壁江山。本教视从实战...
主要内容 大数据概述 大数据的定义 大数据的4V特征 大数据的系统要求 大数据的典型架构 大数据的应用 大数据的发展 大数据与NOSql概述全文共23页,当前为第2页。 主要内容 Nosql概述 什么是NoSQL NoSQL的优势和不足...
随着语义网的发展和RDF(resource description framework,资源描述框架)数据量的快速增长,利用NoSQL数据库存储和管理大规模RDF数据已经成为了当前的研究热点。介绍了NoSQL数据库的种类划分和各类型特点,阐述了...
nosqlbooster4mongo-4.5.4 NoSQL Manager for MongoDB Pro
#资源达人分享计划#