Terry.Li-彬
虚其心,可解天下之问;专其心,可治天下之学;静其心,可悟天下之理;恒其心,可成天下之业。
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
143 随笔 :: 344 文章 :: 130 评论 :: 0 Trackbacks
<
2024年12月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(19)
给我留言
查看公开留言
查看私人留言
随笔分类
(107)
CA(16)
(rss)
Extremecomponents (1)
(rss)
ibatis(4)
(rss)
Jakarta(9)
(rss)
Java(19)
(rss)
Liferay(21)
(rss)
maven2(15)
(rss)
postgresql(2)
(rss)
sitemesh
(rss)
spring2.0
(rss)
struts2.0
(rss)
struts-menu(1)
(rss)
webservice(17)
(rss)
设计模式(2)
(rss)
随笔档案
(141)
2017年4月 (1)
2013年3月 (1)
2013年1月 (1)
2009年12月 (1)
2009年9月 (3)
2009年2月 (1)
2008年12月 (2)
2008年11月 (1)
2008年9月 (2)
2008年8月 (2)
2008年5月 (1)
2008年3月 (22)
2008年2月 (34)
2008年1月 (14)
2007年12月 (7)
2007年11月 (34)
2007年10月 (1)
2007年9月 (13)
文章分类
(284)
ActiveMQ(7)
(rss)
Ajax(5)
(rss)
Axis(21)
(rss)
BootStrap(4)
(rss)
cache(7)
(rss)
chat(1)
(rss)
css
(rss)
DataBase(5)
(rss)
Dwr(3)
(rss)
ejb3.0(4)
(rss)
ESB(3)
(rss)
ESB(4)
(rss)
flex3(1)
(rss)
Freemarker(2)
(rss)
Hibernate Search(2)
(rss)
ibatis + spring (11)
(rss)
java(44)
(rss)
javascript(8)
(rss)
JBoss(5)
(rss)
Jbpm(18)
(rss)
JBPM4(6)
(rss)
jetty
(rss)
JMS(6)
(rss)
JMX(1)
(rss)
JPA(1)
(rss)
jquery(7)
(rss)
Jsp(5)
(rss)
Liferay(5)
(rss)
Linux(12)
(rss)
Log(6)
(rss)
Maven2(10)
(rss)
MyBatis
(rss)
mysql(4)
(rss)
soa(1)
(rss)
soap(5)
(rss)
spring(7)
(rss)
Spring Security(2)
(rss)
SSH(3)
(rss)
struts2.0(7)
(rss)
svn(2)
(rss)
web service(20)
(rss)
WebWork(1)
(rss)
Web前端(2)
(rss)
wireless(1)
(rss)
wsdl(1)
(rss)
yav(1)
(rss)
报表(3)
(rss)
推荐引擎(2)
(rss)
模板(5)
(rss)
设计模式(2)
(rss)
通信(1)
(rss)
文章档案
(342)
2015年9月 (2)
2013年12月 (1)
2013年11月 (2)
2013年10月 (2)
2013年9月 (1)
2013年8月 (1)
2013年3月 (3)
2013年2月 (1)
2013年1月 (17)
2011年8月 (4)
2011年7月 (1)
2011年6月 (6)
2011年5月 (2)
2011年4月 (2)
2011年3月 (4)
2011年2月 (2)
2011年1月 (3)
2010年12月 (8)
2010年11月 (10)
2010年10月 (7)
2010年9月 (32)
2010年8月 (6)
2010年7月 (1)
2010年6月 (2)
2010年5月 (1)
2010年4月 (1)
2010年3月 (1)
2010年2月 (1)
2010年1月 (2)
2009年12月 (1)
2009年11月 (1)
2009年10月 (5)
2009年9月 (23)
2009年8月 (6)
2009年7月 (18)
2009年6月 (2)
2009年5月 (5)
2009年4月 (5)
2009年2月 (9)
2009年1月 (19)
2008年12月 (13)
2008年10月 (1)
2008年9月 (3)
2008年8月 (2)
2008年7月 (5)
2008年6月 (5)
2008年5月 (3)
2008年4月 (6)
2007年12月 (9)
2007年11月 (32)
2007年10月 (2)
2007年9月 (41)
相册
北京建工测试数据库脚本
我的相册
收藏夹
(58)
我的收藏(58)
(rss)
家装
★榻榻米卡座衣帽间★田园暖家硬装完毕上软装咯
淘金币韩版短款小棉袄甜美棉服拉链厚外套面包棉衣秋冬装女装新款
最新随笔
1. 身份证JS校验
2. MySQL导入.sql文件及常用命令
3. ERROR 2006 (HY000) at line xx: MySQL server has gone away 解决方法
4. Ajax Session Timeout 超时 处理
5. 忘掉jQuery,使用JavaScript原生API
6. Ehcache详细解读
7. How can I print SQL query result log with log4j?
8. repositories
9. ehcache 配置参数说明
10. OSChina架构中,依照“管理重于配置”的思路使用Servlet设计的MVC
11. class卸载、热替换和Tomcat的热部署的分析
12. 个性化推荐技术漫谈
13. 探索推荐引擎内部的秘密,第 1 部分: 推荐引擎初探
14. 一个类引发的回忆
15. 配置_Druid和Spring关联监控配置
16. AtomicInteger
17. spring通过annotation注册MBean到JMX
18. BootStrap入门教程 (四)
19. BootStrap入门教程 (三)
20. BootStrap入门教程 (二)
21. BootStrap入门教程 (一)
22. Linux centos 6.3 Tomcat Install
23. Linux centos 6.3 Nginx Install
24. Linux centos 6.3 Python Install
25. Linux centos 6.3 Redis Install
26. Linux centos 6.3 Mysql Install
27. Linux centos 6.3 Mysql slave Install
28. Linux centos 6.3 Lua Install
29. Linux centos 6.3 Memcached Install
30. Linux centos 6.3 Erlang Install
31. Linux centos 6.3 Graphicsmagick Install
32. Linux centos 6.3 Ejabberd Install
33. Linux centos 6.3 JDK Install
34. flex摄像头拍照 java上传到数据库 .
35. Nginx+Tomcat+Memcached共享session集群配置
36. 基于词典的正向最大匹配中文分词算法,能实现中英文数字混合分词
37. linux下Nginx+tomcat整合的安装与配置
38. 从 iBatis 到 MyBatis - MyBatis 简明学习教程
39. Apache Http Server与Tomcat实现负载均衡和集群
40. linux+nginx+tomcat负载均衡,实现session同步
搜索
积分与排名
积分 - 740101
排名 - 61
最新评论
1. re: 配置_Druid和Spring关联监控配置
fchgvhbjnkmll
--hb
2. re: eclipse 属性文件,自动转为Unicode编码[未登录]
哈哈
--哈哈
3. re: Ehcache详细解读[未登录]
话说都是这一篇文章,有意思
--啊
4. re: Maven使用deploy命令部署构建
感谢!我也碰到这个问题了!
--曲奇饼
5. re: Apache Http Server与Tomcat实现负载均衡和集群[未登录]
讲的很详细,受教了
--林
6. re: 转载 高负载系统架构设计
顶,但是,在数据分离方面好像写的很模糊!
--nqfang
7. re: Ajax Session Timeout 超时 处理
sads
--11
8. 354554
684854986
--3498665
9. re: 将任意格式转换为JSON数据格式的工具类
["d":“气而去”]
--人
10. re: FreeMarker 自定义标签
评论内容较长,点击标题查看
--zuidaima
11. re: Maven使用deploy命令部署构建[未登录]
好,写的比较详细,按此配置成功。
--Anderson
12. re: BootStrap入门教程 (三)
评论内容较长,点击标题查看
--zuidaima
13. re: (转载)页面静态化(JSP动态页面转静态化)
@静态化
伪静态化,应该使用模板生成HTML
--libin2722
14. re: (转载)页面静态化(JSP动态页面转静态化)
这个不是静态化,就不要用静态化的标题吓人!!!
--静态化
15. re: BootStrap入门教程 (二)
评论内容较长,点击标题查看
--zuidaima
16. re: 权限控制:spring 3.0 security配置例子
谢谢,遇到了最后的问题,还好找到答案解决了~
--ZL
17. re: BootStrap入门教程 (一)
评论内容较长,点击标题查看
--zuidaima
18. re: BootStrap入门教程 (三)
评论内容较长,点击标题查看
--zuidaima
19. re: 配置_Druid和Spring关联监控配置[未登录]
sasa
--aaa
20. re: JAVA解析纯真IP地址库
你这个有多线程并发问题
--苏秦
21. re: flex摄像头拍照 java上传到数据库 .
评论内容较长,点击标题查看
--123yedddd
22. re: 在基于Spring及Hibernate应用程序中使用ETags降低带宽占用和服务器压力
评论内容较长,点击标题查看
--最代码
23. re: Apache Http Server与Tomcat实现负载均衡和集群
集群后,创建的 test1.jsp 放在哪儿?
--秦真
24. re: BootStrap入门教程 (一)
作为入门教程,连需要包含的css都不提。。。
--作为入门教程,连需要包含的css都不提。。。
25. re: BootStrap入门教程 (一)[未登录]
作为入门教程,连需要包含的css都不提。。。
--bluefield
26. re: url加密参数 (java版)
asd飞
--是电饭锅
27. re: 将JBoss启动做成Windows的系统服务
我的服务也起不来
--23
28. re: 测试-答对5道题的人是天才,答对4道的是帅才,答对3道的是将才,答对2道的是奇才,答对1道的是人才
3、冲
4、“亼”或者“亽”
5、129
--byl
29. re: JBPM数据库表说明
这些表全部手工创建吗?
--轻描淡写
30. re: 将JBoss启动做成Windows的系统服务
为什么我做的服务起不来呢?
--吴江
31. re: 利用开源组件制作验证码 Captcha
ggg
--ssss
32. re: 基于词典的正向最大匹配中文分词算法,能实现中英文数字混合分词
麻烦 博主把dictionary.txt发给我吧,让我学习学习
1182787467@qq.com
谢谢
--love code
33. re: 权限控制:spring 3.0 security配置例子[未登录]
楼主真的很细心 我是在国外论坛上发现了同样的问题
--tommy
34. re: 基于词典的正向最大匹配中文分词算法,能实现中英文数字混合分词
这是全的么,楼主?我导入到MyEclipse里好多错误呀,除了import包之外还有好多错,看不懂。。。
--yi
35. re: FreeMarker 自定义标签
感谢!
--四海
36. re: WebWork 2.2 + Tomcat 5.0 + Jdk 1.6 出现Provider org.apache.xalan.processor.TransformerFactoryImpl not found错误
我tomcat1.60+jdk1.60也出现这个问题,网上度了下,加个xalan.jar包就好了
--liuruliu
37. re: FreeMarker 自定义标签[未登录]
copy 别人文章也不带个链接.
--selina
38. re: 权限控制:spring 3.0 security配置例子[未登录]
最后那点确实坑爹啊。。
--123
39. re: 图片加载错误,显示默认图片
奋斗奋斗
--分段
40. re: JBPM数据库表说明[未登录]
非常感谢
--nicol
阅读排行榜
1. 打印出Ibatis最终的SQL语句(8709)
2. server-config.wsdd配置一例(8457)
3. 编写你自己的单点登录(SSO)服务 (8388)
4. Axis1.4 利用 deploy.wsdd 发布 server-config.wsdd文件(6980)
5. HashMap 、HashTable、HashSet的区别 (4906)
6. ClassNotFoundException: org.hibernate.hql.ast.HqlToken(4663)
7. Axis1.4 开发笔记(3720)
8. Liferay Portal二次开发指南(3648)
9. ibatis中文与like的问题 (3466)
10. 一个服务返回一个ArrayList,如何使用Axis序列化/反序列化啊(3447)
11. Maven2 常用命令(3340)
12. 使用maven2 打ear包(3216)
13. Apache Maven 2 简介(最全的文档)(3201)
14. httpclient中MultipartPostMethod类上传文件(2909)
15. Double:双精度类型(2454)
16. 使用Java实现CA(一)(2350)
17. JAVA中SSL证书认证通讯-Client(2330)
18. 深入了解Java ClassLoader、Bytecode 、ASM、cglib (2266)
19. 在Struts2.0中如何得到绝对路径(2212)
20. 将JBoss启动做成Windows的系统服务(2048)
21. 一个可以在页面上随意画线、多边形、圆,填充等功能的js (1967)
22. Struts2.0 中配置 Struts-Menu(1925)
23. JSF最佳入门(1882)
24. 深入浅出Liferay Portal (4) (1806)
25. 教程--开始使用Maven下(1726)
26. portal专题(一)用liferay server简单开发portlet快速上手(1594)
27. 深入浅出Liferay Portal (10) (1587)
28. 用axis发布webservices(一) (1531)
29. 深入浅出Liferay Portal (12) (1502)
30. 深入浅出Liferay Portal (3) (1472)
31. mvn功能简介 (1446)
32. Liferay Portal学习笔记之(五):开发主题风格theme(1431)
33. 使用Java实现CA(二)(1403)
34. Postgresql 不能远程连接(1396)
35. Liferay Portal学习笔记(三):自定义页面布局Template(1393)
36. liferay 部署(1382)
37. 深入浅出Liferay Portal (8) (1364)
38. 深入浅出Liferay Portal (2) (1361)
39. Problem with Sybase, PostgreSQL and Timestamp columns(1361)
40. 调用IE内部的打印控件来实现打印功能(1344)
评论排行榜
1. ClassNotFoundException: org.hibernate.hql.ast.HqlToken(8)
2. 测试-答对5道题的人是天才,答对4道的是帅才,答对3道的是将才,答对2道的是奇才,答对1道的是人才(5)
3. 用axis发布webservices(一) (3)
4. Liferay Portal学习笔记(一):安装(3)
5. JAVA中SSL证书认证通讯-Client(3)
6. Tomcat 5.5.2 下部署 Liferay 4.4.1(2)
7. 将JBoss启动做成Windows的系统服务(2)
8. 深入浅出Liferay Portal (12) (2)
9. 打印出Ibatis最终的SQL语句(2)
10. HashMap 、HashTable、HashSet的区别 (2)
11. java线程综述 (2)
12. Axis1.4 开发笔记(2)
13. 深入了解Java ClassLoader、Bytecode 、ASM、cglib (1)
14. 代理模式(1)
15. java对word、excel、pdf等操作综合文章(1)
16. Axis1.4 利用 deploy.wsdd 发布 server-config.wsdd文件(1)
17. 使用maven2 打ear包(1)
18. 深入浅出Liferay Portal (11) (1)
19. 深入浅出Liferay Portal (10) (1)
20. 转载 高负载系统架构设计(1)
21. 论坛灌水机 -- HTTPClient(1)
22. Apache Maven 2 简介(最全的文档)(1)
23. maven2完全使用手册(1)
24. 在Struts2.0中如何得到绝对路径(1)
25. Java深入:在Eclipse中如何利用Maven (0)
26. 教程--开始使用Maven下(0)
27. Maven2快速入门教程 (0)
28. 调用IE内部的打印控件来实现打印功能(0)
29. ibatis中文与like的问题 (0)
30. Chapter 1. Maven2(0)
31. Maven2 体验(0)
32. 1.1. Maven2 体验(0)
33. Maven2.0:编译、测试、部署、运行(0)
34. Maven2 常用命令(0)
35. Struts2.0 中配置 Struts-Menu(0)
36. maven2.0学习笔记 (0)
37. mvn功能简介 (0)
38. Maven中文手册 (0)
39. Maven使用手册(0)
40. maven翻译一结 (0)
做SNS的,一起来猜猜新浪微博的核心Feed系统是怎么设计的吧
要是不清楚什么是feed,google之。
Feed是sns类应用的核心和最复杂的部分,就是sina微博中看到的“我关注的人”的消息。像人人网中的“新鲜事”等等,都是一个东西。你想啊,你关注了几千人,又被几千人关注,你发了一个消息,另外几千人怎么看到哪?拿数据库做join和in操作肯定立刻挂。而且像sina weibo,数据和访问量庞大,怎么实现哪?这其实就是传说中的推和拉的选择,人人网写过一篇文章:
http://news.csdn.net/a/20100726/277273.html
,简单来说以推为主体。我猜测可能在某些情况下会使用拉,例如这个账号很久不登录,太不活跃,给他推东西纯属浪费。嗯。。。,这方面也欢迎一起来猜猜。
基于这些,我猜测的第1版架构图(我们现在就是这样做的,规模比较小,还看不出问题):
整个架构基于memcached + mysql,图中分了ABC三个区域。所有的消息存储在mysql中,无论推送给多少人,只存储一份。另外有一个索引表,用来记录推送关系,推送给1000个人,就增加1000条记录,也就是图中的A。当发生查询时,从索引表中根据用户编号进行一次简单查询(基于用户编号为索引和条件的select),拿到索引结果后,进入B,从memcached中读取实际信息。如果不存在或者不全,进入C,根据索引信息读取网友实际发表或者转载的内容,用模板生成消息并存储到memcached中,然后返回来。
在整个过程中,B是memcached集群,性能应该问题不大。C是cache后面的东西,其中的数据库查询也是基于索引表中给的对象主键,分表条件等进行的分库分表基于主键的查询,性能问题应该也不大。关键是A区。我们现在的方案是用guzz框架把索引表分到单独的一组数据库中,然后根据用户id进行切表,每个人保留最多200条最新消息的索引。总的来说,每张表的大小还在控制内。对于像#话题#等也是一样的,建立索引表分发。无论怎样,实际的消息只有一份。
我猜测,sina微博第一版系统应该就是这样。架构简单实用。
但随着规模的扩大,A区索引表肯定会逐步出现大量性能问题。要升级到第二,第三版。这两个之间或许是一步到位的。
第二第三版架构猜测:
A区的性能问题不是mysql能够解决的,但幸好A区的数据结构非常简单。就是以 用户id+某个动态功能 为key下的一个固定大小的索引集合。最简单的办法就是把mysql换成nosql,这个数据结构用nosql应该非常容易实施。我没有用过nosql,但通过资料来看,相比mysql肯定是一大性能提升。我们暂且推测其为第二版方案吧。欢迎实际用过nosql的来谈谈行不行。
我们假设,第二版方案也解决不了问题。A区的性能问题太大了,怎么办?如果这样,我想索引系统只能是自己做了,谁也靠不住。我有个猜测,欢迎讨论。看下图。
这个架构是完全为feed定制的,我们为每个 用户id+某个动态功能 分配一个磁盘block。在索引表中,我们知道每条索引记录的大小是固定的(假设每条1k大小),而为用户提供的最多最新动态数也是固定的(假设200条)。那么我们这个block就分配固定的201K,前面的1k是头信息,后面的200k存储最多200条的索引记录。
在头信息中,记录这个块操作的系统版本号(升级使用),用户信息,操作的偏移量,总动态数等等。当插入一条新索引时,根据操作偏移量直接定位位置,写入;如果已经写到第200条,回到第一条覆盖写。读取的时候,根据偏移量数据直接读。因为记录大小固定,block维护简单,顺序读写,效率肯定不差。而这些block文件块,将存储在一套分布式文件系统中,依靠还算成熟的hadoop技术,无限扩展这个大集群。
相比数据库的优势,还省去了清理过期数据的问题。
这里面没有讨论block块缓存的问题,这是分布式文件系统的工作。对于不同的动态,可能block的大小会不一样,这都是可以的。
不知道猜的对不对。
posted on 2011-03-09 21:45
礼物
阅读(966)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
Powered by:
BlogJava
Copyright © 礼物