完全用nosql轻松打造千万级数据量的微博系统

上传人:飞*** 文档编号:51694723 上传时间:2018-08-15 格式:PPT 页数:10 大小:2.43MB
返回 下载 相关 举报
完全用nosql轻松打造千万级数据量的微博系统_第1页
第1页 / 共10页
完全用nosql轻松打造千万级数据量的微博系统_第2页
第2页 / 共10页
完全用nosql轻松打造千万级数据量的微博系统_第3页
第3页 / 共10页
完全用nosql轻松打造千万级数据量的微博系统_第4页
第4页 / 共10页
完全用nosql轻松打造千万级数据量的微博系统_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《完全用nosql轻松打造千万级数据量的微博系统》由会员分享,可在线阅读,更多相关《完全用nosql轻松打造千万级数据量的微博系统(10页珍藏版)》请在金锄头文库上搜索。

1、完全用完全用nosqlnosql轻松打造千万级轻松打造千万级 数据量的数据量的微博系统微博系统七夜七夜( (李锦星李锦星) ) 2010.12.17Your company sloganYour company slogan重要小提示 架构说明架构说明 本架构只是起着抛砖引玉的作用本架构只是起着抛砖引玉的作用, ,只介绍大概的架构只介绍大概的架构. .本架构注重的是可以动本架构注重的是可以动 态扩展集群种的服务器。关于图片附件态扩展集群种的服务器。关于图片附件, ,数据备份等架构数据备份等架构, ,今天不作介绍今天不作介绍. . 有兴趣的话可以找我讨论有兴趣的话可以找我讨论. .已有类似本架构

2、的微博系统已经在实际运用已有类似本架构的微博系统已经在实际运用 IDID一致性的一致性的问题问题问题问题通常通常IDID是由是由mysqlmysql自增来产生的自增来产生的. .但是在分布式集群里这样的自增但是在分布式集群里这样的自增IDID就带来各就带来各 个服务器之间的一致性的问题。在本架构中的唯一个服务器之间的一致性的问题。在本架构中的唯一IDID是由是由rdtsc+rdtsc+两位随机两位随机 整数拼接而成的整数拼接而成的6464位整数位整数 唯一唯一IDID Key GPS ServerKey GPS ServerKGSKGS是本架构重要组成部分是本架构重要组成部分.GPS.GPS大

3、家都知道是定位的意思大家都知道是定位的意思. .发送一条数据的发送一条数据的IDID 过去。过去。KGSKGS就会告诉你该就会告诉你该IDID所对应的数据存放在哪几台服务器上所对应的数据存放在哪几台服务器上.KGS.KGS是基是基 于于TokyoCabinetTokyoCabinet存储存储, epoll , epoll 事件驱动的单进程事件驱动的单进程socketsocket serverserverYour company sloganYour company slogan所使用的开源工具LVS+NGINX + PHPNGINX + PHP1 1MySQL + handlersocketM

4、ySQL + handlersocket2 2RedisRedis、 Tokyo Cabinet Tokyo Cabinet 3 3zeromq (zeromq (消息队列消息队列) )4 4Your company sloganYour company slogan整体的架构图整体的架构图架构图图原图请见 架构.pngYour company sloganYour company slogan架构具体讲解访问流程图看了架构图,到处都是线, 是不是觉的很乱,眼花缭乱 的.不要着急,现在我要以 流程图慢慢的引领大家看 清楚这个框架Your company sloganYour company s

5、logan名词解说 Handler socketHandler socket 大家刚才可能比较奇怪大家刚才可能比较奇怪, ,我的主题讲的是完全用我的主题讲的是完全用nosqlnosql打造微博系统打造微博系统, ,怎么会又出现怎么会又出现 了了mysqlmysql了了? ?现在给大家介绍现在给大家介绍 Handler socketHandler socket。HS HS 是小日本写的一款是小日本写的一款mysqlmysql插件插件 .HS.HS避开了避开了MySQLMySQL通讯协议通讯协议, ,直接读取直接读取MySQLMySQL引擎。在多核、大内存、引擎。在多核、大内存、 InnoDB I

6、nnoDB引擎引擎 环境环境, ,性能直超性能直超memcached.HSmemcached.HS能以能以Key-ValueKey-Value方式直接读写方式直接读写mysqlmysql引擎引擎 ZeroMQZeroMQZMQZMQ是高性能的消息队列服务器是高性能的消息队列服务器. .单纯的发简单的小文本消息和单纯的发简单的小文本消息和pythonpython的函数调用的函数调用 一样快一样快.publish.publish操作是个很耗时的操作操作是个很耗时的操作. .所以让所以让publishpublish集群从集群从ZMQZMQ取发布信息,取发布信息, 在后台并行在后台并行publish,

7、publish,大大的提高发布效率大大的提高发布效率. .当当publishpublish速度跟不上的时候速度跟不上的时候, ,只要增只要增 加加publishpublish服务器就行服务器就行. . Key GPS ServerKey GPS Server刚才简单的介绍过刚才简单的介绍过KGS,KGS,我再稍微深入一点介绍一下我再稍微深入一点介绍一下KGS.KGSKGS.KGS是用是用TCTC来做物理存储来做物理存储 的的. .把把KeyKey跟服务器的关系记录在跟服务器的关系记录在TCTC的的 hashdbhashdb里里. .这样做到多个服务器备份存储这样做到多个服务器备份存储 、权重、

8、最小存储量优先级等一系列操作、权重、最小存储量优先级等一系列操作. .Your company sloganYour company slogan数据分布结构Redis RedisRedis主要存储的是发布者和订阅者之间的关系。关系结构主要是以队列主要存储的是发布者和订阅者之间的关系。关系结构主要是以队列+ +各种信各种信 息的息的6464位唯一位唯一IDID组成组成, ,所以存储量是很小的所以存储量是很小的. .虽然存储量很小虽然存储量很小, ,但是操作量很大但是操作量很大. . 所以放在所以放在redisredis上上,redis,redis以纯内存的方式运行以纯内存的方式运行, ,不启用

9、不启用redisredis自身的热备份自身的热备份. .在运在运 行行RedisRedis服务器上,同时运行着服务器上,同时运行着backend backend 同步进程。同步进程。BackendBackend的用的用TCTC来存储的来存储的. .在在 信息发送给信息发送给RedisRedis的同时的同时, ,也发送给也发送给backendbackend进行存储进行存储. .当当redisredis重启的时候重启的时候, ,从从 backendbackend加载用户的结构关系加载用户的结构关系.Redis.Redis的集群方式是以水平方式切换的集群方式是以水平方式切换. .简单来说就简单来说就

10、 是每台是每台RedisRedis服务器存储着各自服务器存储着各自5w5w用户量用户量. .这个数值可以根据各自的情况定义这个数值可以根据各自的情况定义 MySQLMySQLmysqlmysql存储的是实际信息内容存储的是实际信息内容, ,比如微博信息,和用户信息比如微博信息,和用户信息. .把操作很密集的数据把操作很密集的数据, , 放在放在RedisRedis里里, ,相对小一点的就放在相对小一点的就放在mysqlmysql里里Your company sloganYour company sloganMySQLMySQL表结构表结构Your company sloganYour comp

11、any sloganRedis list数据结构example4example4Redis 数据结构 list1. Following (有多少人订阅我的微博的列表)2. Followers (我订阅谁的微博的列表)3. Publish (我发布的微博消息列表)4. Subscribe (我订阅的消息包括我发布的信息)Your company sloganYour company slogan总结 明星会员问题明星会员问题 所谓的明星会员问题所谓的明星会员问题, ,就是刘德华来咱微博开了个微博。他有成千上万个订阅就是刘德华来咱微博开了个微博。他有成千上万个订阅 者者. .他发布一条微博消息。那

12、得一下子发布到成千上万个订阅者那。多来他发布一条微博消息。那得一下子发布到成千上万个订阅者那。多来 几个刘德华这样的明星微博几个刘德华这样的明星微博, ,咱们服务器不是要死翘翘了。所以我这里有咱们服务器不是要死翘翘了。所以我这里有 个个publishpublish集群集群, ,根据订阅者分为活跃用户,一般用户,半死不活用户根据订阅者分为活跃用户,一般用户,半死不活用户. .根根 据活跃度分到不同的快速据活跃度分到不同的快速publishpublish服务器或慢速服务器或慢速publishpublish服务器里去服务器里去. .因为因为 是纯内存的只是在是纯内存的只是在redis listredis list里加个信息里加个信息IDID。还是很快的。还是很快的 理解不了本架构理解不了本架构对于本架构理解的同学对于本架构理解的同学, ,请先阅读一下请先阅读一下Retwis. RetwisRetwis. Retwis是完全用是完全用redisredis写的简写的简 单微博系统单微博系统, ,再结合本架构,多看几次就懂了。很快的再结合本架构,多看几次就懂了。很快的 集群集群本架构讲究的是高可用本架构讲究的是高可用, ,稳定,可动态扩展的架构稳定,可动态扩展的架构. . 谢谢大家谢谢大家

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号