
这个功能,你可以参考微博的推送思路。
比如你关注了很多明星(千万级大V),他们发的每条微博会进入到“我的首页”。比如某个明星发了条微博abc,你在“我的首页”里看到的"abc"并不是读自明星微博个人的数据库,而是来自“我的首页”里一个专门的数据集合。
通俗的讲,这个数据集合是完全属于你个人的,你所关注的每个人,当他们发微博时,会同步“推送”到你自己个人的这个“数据集合”里。
那么问题来了,千万级大V,每发一条微博,就要同步推给千万个粉丝,生成千万条数据吗?NO,微博根据用户活跃度等一系列算法,将用户分成不同梯队,一批一批的推送,例如一个近30天都没登录过的用户,自然就会被划到较迟推送的那一批里。这样做是为了分流服务器负担。
但不同产品对于数据设计有不同的思路,你这个公用一条站内信,我的建议是,建个公共站内信统一变量(例如letter=20160514),可以保存到用户的cookies里。
当用户访问页面时,程序首先将这个变量值和cookies里保存的变量对比,相同则略过,不同则进行读取相应的公共站内信,保存到自己的“收件箱”里。
这样可以使原本需要同步推给千万用户一条站内信的工作,由主动推送变成被动发送。用户上线访问了,对比、发送,这种工作显然要大大减小了服务器压力。
读取消息也是,反馈生成一条数据写到数据库里就好了。
jsp, 数据库是mysql其实很容易知道,看看人人的招聘条件:
WEB开发工程师
技能要求:
对面向对象和设计模式有较清晰的认识;
熟悉JAVA编程,熟悉JSP;
了解Linux开发环境。
再看数据库招聘需求:
数据库研发工程师
技能要求:
熟悉Linux *** 作系统
熟练掌握SQL语言
熟练掌握MySQL的配置与优化
熟悉Shell编程(或Python/Perl/Ruby其中之一也可)
也可以从其他网站对人人网的架构介绍看出来:
人人网在初期,由于用户的数目不多,技术不强,经济不足,人人网的架构也非常的简单,和普通小网站没什么区别,数据库也是采用简单的主外键关联的表,由于技术上面的不足,造成人人网的访问效率很低。但是由于网站的不断壮大,就需要不断增强网站的技术,以解决网站高负载带来的问题。看过一个校内网CTO的采访,简单了解了现在校内网某些方面的技术架构,本着共享的精神,希望共同学习。
1、前端web层采用框架技术,主要采用Struts作为展示框架。同时对于富有表现力的富客户端,我认为应该使用了AJAX框架和灵活的css模板和修改功能。
2、图片采用专门的文件服务器。这也是一些大型的门户网站采用一种方式,通过建立独立的文件服务器,对数据流量比较大的图片文件进行分流,有效的减轻了主服务器的承载压力。
3、Mysql集群。随着用户的增多和访问量的增大,数据库的承载能力也要不断的增强,现在校内网采用分布式的数据库管理,利用mysql庞大的机群,对数据库的访问压力进行分流,即减轻了数据库的访问压力,由提高了数据的访问效率,这也是为什么现在校内网比以前访问速度快的原因
同时,人人网广泛的采用基于内存的数据库缓存。利用缓存的确可以提高数据的访问速度,但是人人网比一般的网站做的更加的彻底,通过硬件的支持,几乎把用户要广泛用到的所有数据进行了缓存处理,这也是现在人人网为什么数据访问比以前快很多的原因。
4、人人网现在广泛的采用数据挖掘技术,通过对数据的分析,深刻的了解用户的习惯和需求,并进行相应的调整,增强了用户体验。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)