阅读更多

45顶
0踩

编程语言

 

强烈推荐:著名社交网站LinkedIn的Java架构技术

JavaOne 2008的会议上,著名社交网站LinkedIn的开发者做了2个关于LinkedIn

网站的架构技术的演讲,目前这两个演讲的PPT已经可以下载了。下载地址如下:

需要注册才可以下载,能下载PDF版本。

可以看一下LinkedIn网站的基本情况:

1。2千2百万用户
2。每个月4百万独立用户访问
3。每天4千万page view
4。每天2百万搜索流量
5。每天25万邀请发送
6。每天1百万的回答提交
7。每天2百万的email消息发送

这是一个世界顶尖级别流量的网站了,看看LinkedIn的系统架构:

    * 操作系统:Solaris (running on Sun x86 platform and Sparc)
    * 应用服务器:Tomcat and Jetty as application servers
    * 数据库:Oracle and MySQL as DBs
    * 没有ORM,直接用JDBC No ORM (such as Hibernate); they use straight JDBC
    * 用ActiveMQ在发送JMS. (It’s partitioned by type of messages. Backed by MySQL.)
    * 用lucene做搜索Lucene as a foundation for search
    * Spring做逻辑架构Spring as glue

下面是随着流量增加,LinkedIn的架构演化:

2003-2005
1。一个整体的web程序,
2。一个核心数据库,
3。在Cloud中缓存所有network图,Cloud是用来做缓存的独立server。
4。用lucene做搜索,也跑在Cloud中。

2006年
1。复制另外一个数据库,减少直接load核心数据库,另外一个server来管理非只读数据库的数据更新。
2。把搜索从Cloud中移出来,单独一个server跑搜索
3。增加Databus数据总线来更新数据,这是通过分布式更新的核心组件,任何组件都需要Databus

2008年
1。WebApp不再任何事情都它自己做,把业务逻辑分成很多部分,通过server群来做。WebApp仍然提供用户界面给用户,但是,通过server群来管理用户资料,小组等等。
2。每个服务有自己的域数据库
3。新的架构允许其他应用链接LinkedIn,比如增加的招聘和广告业务。

The Cloud
1。Cloud是整个架构最重要的部分,整个LinkedIn的网络图都缓存在Cloud里面
2。Cloud大小:22M nodes, 120M edges
3。需要12GB RAM
4。在生产环境要跑40个实例
5。从硬盘重建Cloud一个实例需要8个小时
6。Cloud通过databus实时更新
7。关闭时持久化到硬盘
8。缓存通过C++实现,用JNI调用,LinkedIn选择C++而不是Java有两个原因:
   1)尽可能的减少RAM的使用
   2)垃圾收集暂停会杀死整个系统,LinkedIn用了最新的GC程序,也就是就是说java的的垃圾搜集性能不太好
9。将所有东西放在缓存里面是一种限制,但是LinkedIn指出,分割业务图将更麻烦
10。Sun提供了2TB的RAM


Communication Architecture交流架构包括:

Communication Service

Communication Service是用来提供永久信息的,比如收件箱里面的消息和email
1。整个系统通过JMS异步通讯
2。客户端用JMS发送消息
3。消息通过路径服务器来到达相应的邮箱或者直接放到email进程中
4。消息发送:同时使用Pull主动寻求信息(如用户需要信息)和Push发送信息(如发email)
5。使用Spring和LinkedIn专业Spring插件完成,使用HTTP-RPC

Scaling Techniques
1。通过功能来划分:发送,接受,文档等。
2。通过类别来划分:用户信箱,访问者信箱等
3。等级划分:用户ID等级,Email等级等
4。所有的操作都是异步的。

 

推荐阅读:LinkedIn架构图:99%都是用Java写的

 

45
0
评论 共 29 条 请登录后发表评论
29 楼 shuaiji 2011-12-23 09:55
高手都是自己写ORM ,从来不用什么HIBERNATE
28 楼 itlangqun 2009-01-05 19:56
我没经验,看不懂啊
27 楼 kooen.chen 2008-09-13 23:05
小小网站吧,没什么值得探讨的吧!
26 楼 kingwang520 2008-07-16 17:25
引用
我也只喜欢 Spring不喜欢Hibernate。Spring提供了很多方便的功能,侵入性却很小。Hibernate只能做做小型程序差不多。


spring跟hibernate有互相可替代性???

好逗     

25 楼 myreligion 2008-07-07 13:55
才4千万PV而已,有必要搞得那么复杂嘛!

我们有个系统每天高的时候也有2000万PV,主业务数据表也有近2000万数据,都是基本的架构,做作分库,做作负载均衡也就完了,没必要搞得恁复杂!到4千万加点机器估计也就行了,楼主介绍的东西太过了~~~,而且“5。从硬盘重建Cloud一个实例需要8个小时”,要是Cloud机器挂掉了,重启下都要8小时,还不疯了!


24 楼 davidcen 2008-07-05 19:00
8。缓存通过C++实现,用JNI调用,LinkedIn选择C++而不是Java有两个原因:
   1)尽可能的减少RAM的使用
   2)垃圾收集暂停会杀死整个系统,LinkedIn用了最新的GC程序,也就是就是说java的的垃圾搜集性能不太好
9。将所有东西放在缓存里面是一种限制,但是LinkedIn指出,分割业务图将更麻烦

系统庞大到一定程度之后,着重考虑的就是性能问题,开发效率问题,倾向工厂化生产的趋势,代码产品要够简单,以遵循已经优化的策略,架构上呈现扁平化才能提高数据的加工效率.仅仅使用jdbc可以减少调优的方案,尤其是如此庞大的系统,使用orm那绝对要再头疼一次,结果肯定也是可以的,但是会很繁杂,花钱也会更多.这也说明了技术上长江后浪推前浪,不过还是姜是老的辣,沉淀的会更多.而从成本考虑,这个网站玩java估计成本会比php要高很多,不过谁让他有2kw有钱人用户呢,还是烧得起.

引用
再次证明了,java不适合做大型互联网程序,用户一多竟然要耗费12G多的RAM!


抨击一门语言是否要需要解决所有问题,如同使用低级语言来写网页一样可笑.
23 楼 kaituozhe6666 2008-07-05 16:04
22 楼 xo_tobacoo 2008-06-19 08:51
直接用JDBC No ORM (such as Hibernate); they use straight JDBC
-------这个应该非常关键吧!这么大的系统!无论用其他什么技术都是无比复杂的事。
21 楼 Wallian_hua 2008-06-18 11:00
是为了打造JAVA制做互联网应用的颠峰???
20 楼 neaton 2008-06-16 18:18
网速太慢,哪位有空传一下,coosuu@gmail.com
19 楼 ganyu21 2008-06-15 13:12
hibernate再加一个分布式二级cache,暴强无比!
18 楼 ganyu21 2008-06-15 13:11
12G怎么了?不就是多了几根内存条吗?总比用C的开发费用小很多吧,可维护性也好很多吧
17 楼 wym0291 2008-06-15 01:06
引用
再次证明了,java不适合做大型互联网程序,用户一多竟然要耗费12G多的RAM!用这么多内存,GC起来确实很可怕,不死才怪!另外,我也只喜欢Spring不喜欢Hibernate。Spring提供了很多方便的功能,侵入性却很小。Hibernate只能做做小型程序差不多。


.....相当经典的java盲人评论.....完全不懂GC的调优....
16 楼 vdgame 2008-06-08 16:48
引用
试试能不能直接下载

不能直接下载,但是放到迅雷里可以
15 楼 fxbird 2008-06-08 14:04
试试能不能直接下载:
http://s3.amazonaws.com/ppt-download/linkedinjavaone2008techsessioncomm-1211223608637383-9.pdf?Signature=bq3zR1KBX72YUJBtcR1J3zPFt9Y%3D&Expires=1212911935&AWSAccessKeyId=1Z5T9H8PQ39V6F79V8G2

http://s3.amazonaws.com/ppt-download/linkedinbofjavaone2008-1210975769299886-8.pdf?Signature=7mtRpPrZrBbz%2BgOjJcsJNOhyOOI%3D&Expires=1212911913&AWSAccessKeyId=1Z5T9H8PQ39V6F79V8G2
14 楼 fight_bird 2008-06-08 12:09
太复杂了,大型网站的架构一定要这么复杂吗?应该简化一点。
13 楼 galaxystar 2008-06-07 18:42
大型网站,复杂的业务,上亿PV的,谁会用ORM。搞笑
12 楼 runjia1987 2008-06-07 12:38
不用ORM,  仔细揣摩中。。。。。
11 楼 ahuaxuan 2008-06-07 10:29
引用

再次证明了,java不适合做大型互联网程序,用户一多竟然要耗费12G多的RAM!

结论太搞笑了,而且用户一多需要12g得内存也很正常得,2200w得用户信息随便放在什么地方都很占内存,而且人家也没有说这12g内存是放在什么地方的,一般都会放在memcached中或者其他什么地方,我还没有见过把这么多应用放在app中的呢
10 楼 allenny 2008-06-07 02:06
引用
再次证明了,java不适合做大型互联网程序


你倒是给介绍一种适合大型互联网程序的来看看。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 著名社交网站LinkedIn的Java架构技术.doc

    介绍著名社交网站LinkedIn的Java架构技术

  • java开发社交网站_(转)强烈推荐:著名社交网站LinkedIn的Java架构技术

    强烈推荐:著名社交网站LinkedIn的Java架构技术在JavaOne 2008的会议上,著名社交网站LinkedIn的开发者做了2个关于LinkedIn网站的架构技术的演讲,目前这两个演讲的PPT已经可以下载了。下载地址如下:LinkedIn - A ...

  • java 社交平台 架构_(转)强烈推荐:著名社交网站LinkedIn的Java架构技术 - 第4页...

    http://www.infoq.com/cn/interviews/MySpace-Architecture-Dan-Farino-cn#MySpace首席系统架构师Dan Farino谈论了超大线上社区的系统架构,以及构建这样一个系统所面临的各种挑战。由于MySpace几乎完全基于.NET ...

  • java 社交平台 架构_[转贴] 著名社交网站LinkedIn的Java架构技术

    在JavaOne 2008的会议上,著名社交网站LinkedIn的开发者作了2个关于LinkedIn网站的架构技术的演讲,目前这两个演讲的PPT已经能够下载了。下载地址以下:java须要注册才能够下载,能下载PDF版本。nodeLinkIn开发者...

  • 著名社交网站LinkedIn的Java架构技术

    在JavaOne 2008的会议上,著名社交网站LinkedIn的开发者做了2个关于LinkedIn 网站的架构技术的演讲,目前这两个演讲的PPT已经可以下载了。下载地址如下: LinkedIn - A Professional Social Network Built...

  • 社交网站LinkedIn的Java架构技术

    强烈推荐:著名社交网站LinkedIn的Java架构技术在JavaOne 2008的会议上,著名社交网站LinkedIn的开发者做了2个关于LinkedIn网站的架构技术的演讲,目前这两个演讲的PPT已经可以下载了。下载地址如下:LinkedIn - A ...

  • linkedin 架构_投票:您如何使用LinkedIn?

    linkedin 架构Business social network LinkedIn announced that they’ve turned on their OpenSocial-powered web applications platform. The site is keeping the focus strictly on business and productivity ...

  • SNS网站LinkedIn的Java架构技术

    在JavaOne 2008的会议上,著名社交网站LinkedIn的开发者做了2个关于LinkedIn网站的架构技术的演讲可以看一下LinkedIn网站的基本情况:1.2千2百万用户2.每个月4百万独立用户访问3.每天4千万page view4.每天2百万搜索...

  • 系统架构演进路线及战术分析(微博、LinkedIn)

    微博,是基于用户关系的社交媒体平台,用户可以通过PC、手机等多种移动终端接入,以文字、图片、视频等多媒体形式,实现信息的即时分享、传播互动。微博基于公开平台架构,提供简单、前所未有的方式使用户能够公开...

  • 云计算:从基础架构原理到最佳实践之:云计算大数据分析与处理

    笔者认为,《云计算:从基础架构原理到最佳实践之:云计算大数据分析与处理》一书可以作为云计算从基础原理到最佳实践的一本专业技术书籍,系统阐述了云计算大数据分析与处理的技术原理、方法论、核心组件,并且以...

  • ysoserial-master.zip

    ysoserial是一个用于生成利用不安全的Java对象反序列化的有效负载的概念验证工具。它包含一系列在常见Java库中发现的"gadget chains",可以在特定条件下利用执行不安全的反序列化操作的Java应用程序。ysoserial项目最初在2015年AppSecCali会议上提出,包含针对Apache Commons Collections(3.x和4.x版本)、Spring Beans/Core(4.x版本)和Groovy(2.3.x版本)的利用链

  • zigbee CC2530无线自组网协议栈系统代码实现协调器与终端的TI Sensor实验和Monitor使用.zip

    1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2530上运行,如果是其他型号芯片,请自行移植。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、例程具有一定专业性,非专业人士请谨慎操作。

  • YOLO算法-自卸卡车-挖掘机-轮式装载机数据集-2644张图像带标签-自卸卡车-挖掘机-轮式装载机.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

  • Oracle10gDBA学习手册中文PDF清晰版最新版本

    **Oracle 10g DBA学习手册:安装Oracle和构建数据库** **目的:** 本章节旨在指导您完成Oracle数据库软件的安装和数据库的创建。您将通过Oracle Universal Installer (OUI)了解软件安装过程,并学习如何利用Database Configuration Assistant (DBCA)创建附加数据库。 **主题概览:** 1. 利用Oracle Universal Installer (OUI)安装软件 2. 利用Database Configuration Assistant (DBCA)创建数据库 **第2章:Oracle软件的安装与数据库构建** **Oracle Universal Installer (OUI)的运用:** Oracle Universal Installer (OUI)是一个图形用户界面(GUI)工具,它允许您查看、安装和卸载机器上的Oracle软件。通过OUI,您可以轻松地管理Oracle软件的安装和维护。 **安装步骤:** 以下是使用OUI安装Oracle软件并创建数据库的具体步骤:

  • 消防验收过程服务--现场记录表.doc

    消防验收过程服务--现场记录表.doc

  • (4655036)数据库 管理与应用 期末考试题 数据库试题

    数据库管理\09-10年第1学期数据库期末考试试卷A(改卷参考).doc。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

  • YOLO算法-瓶纸盒合并数据集-3161张图像带标签-纸张-纸箱-瓶子.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

  • 职业暴露后的处理流程.docx

    职业暴露后的处理流程.docx

  • Java Web开发短消息系统

    Java Web开发短消息系统

Global site tag (gtag.js) - Google Analytics