阅读更多

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、手机等多种移动终端接入,以文字、图片、视频等多媒体形式,实现信息的即时分享、传播互动。微博基于公开平台架构,提供简单、前所未有的方式使用户能够公开...

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

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

  • 西门子S7-200SMART与V20变频器基于Modbus通讯的稳定控制及应用

    内容概要:本文详细介绍了西门子S7-200SMART PLC与V20变频器通过Modbus RTU协议进行通信的具体方法和技术要点。首先阐述了硬件连接方式,强调了正确的接线和参数设置对于稳定通信的重要性。接着深入讲解了PLC程序的设计,包括Modbus主站初始化、启停控制、频率设定以及断电自恢复等功能模块的实现。此外还分享了一些实用的经验技巧,如避免通讯冲突、处理浮点数转换等问题。最后提到该方案已在实际生产环境中成功应用,表现出良好的稳定性和可靠性。 适合人群:从事自动化控制系统集成的技术人员,特别是熟悉西门子PLC和变频器产品的工程师。 使用场景及目标:适用于需要将旧型号PLC与变频器进行高效集成的企业,在不影响原有设备的基础上提升系统的智能化水平,减少人工干预,提高生产效率。 其他说明:文中提供了大量具体的编程实例和参数配置指南,有助于读者快速掌握相关技能并应用于实际工作中。同时提醒读者注意一些常见的错误及其解决方案,帮助规避潜在的风险。

  • 西门子PLC电机控制程序:封装好的功能块助力高效工业自动化

    内容概要:本文详细介绍了西门子PLC中用于电机控制的封装功能块,涵盖正转、反转、变频控制等多种功能。通过简化底层代码,提高编程效率和系统可靠性。文章展示了如何使用功能块实现正转、反转、变频控制、模拟量处理、故障处理等功能,并结合用户自定义数据类型(UDT)和多重背景技术,实现对大量电机的高效管理。此外,还提供了具体的代码示例,帮助读者更好地理解和应用这些功能块。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些需要频繁处理电机控制任务的人群。 使用场景及目标:适用于需要简化电机控制编程、提高系统可靠性和可维护性的工业环境。主要目标是减少重复编码的工作量,提升开发效率,确保系统稳定运行。 其他说明:文中提供的代码示例和方法不仅有助于初学者快速入门,也为有经验的工程师提供了优化现有系统的思路。通过使用这些功能块,可以在短时间内完成复杂电机控制系统的搭建和调试。

  • 腐败感知指数(CPI)数据和各种治理指标数据集

    全球腐败感知数据(2000-2023)——3000行 33个指标 关于数据集 该数据集包含3000行和33列,涵盖了2000年至2023年的腐败感知指数(CPI)数据和各种治理指标。它包括国家排名、分数和其他指标,如公共部门腐败、司法腐败、贿赂指数、商业道德、民主指数、法治、政府效率、经济指标和人类发展指数。 这些数据可用于: 腐败趋势分析 腐败对GDP、人类发展指数和治理的影响 跨国比较 数据可视化和机器学习模型 该数据集对研究人员、数据分析师、政策制定者和对研究全球腐败趋势非常有用。

  • 朔州市-平鲁区-街道行政区划_140603_Shp数据-wgs84坐标系.rar

    街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用

  • 脑机接口基于贝叶斯优化的FBCCA参数自动调优系统设计与实现:EEG数据处理及优化流程详解

    内容概要:本文档详细介绍了将贝叶斯优化应用于FBCCA(滤波器组公共空间模式)参数调整的完整解决方案,包括代码实现和优化流程。首先,通过MNE库加载并预处理EEG数据,进行7-30Hz的预滤波处理,提取相关事件片段。接着,定义了FBCABayesianOptimizer类,该类包含创建动态滤波器组、获取模型参数以及定义优化目标函数的方法。其中,参数空间由离散和连续参数组成,涵盖了滤波器数量、CSP组件数、起始频率、带宽、交叠率等,并通过Optuna库进行多维搜索。优化过程中采用5折交叉验证机制,同时引入智能早停策略以提高效率。最后,提供了优化结果的可视化工具,如优化轨迹图、参数重要性图和滤波器组配置图,帮助用户更好地理解和分析优化过程。 适合人群:具有一定编程基础,尤其是对机器学习、脑电数据分析及贝叶斯优化感兴趣的科研人员和技术开发者。 使用场景及目标:①通过动态滤波器组生成算法,捕捉频段间的过渡特征;②利用混合参数空间设计,探索不同参数组合的效果;③借助高效交叉验证机制和智能早停策略,提高优化效率;④通过可视化工具,直观展示优化过程和结果。 阅读建议:此资源不仅展示了完整的代码实现,还深入探讨了FBCCA参数调整的理论基础和实际应用。建议读者在学习过程中结合理论知识与代码实践,逐步理解每个步骤的原理,并尝试调整参数以观察不同设置对优化效果的影响。同时,可根据自身硬件条件,考虑扩展建议中的GPU加速、分布式优化和在线学习等高级特性。

  • 临汾市-古县-街道行政区划_141025_Shp数据-wgs84坐标系.rar

    街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用

  • 邯郸市-成安县--街道行政区划_130424_Shp-wgs84坐标系.rar

    街道级行政区划shp数据,wgs84坐标系,直接使用。

  • 临汾市-大宁县-街道行政区划_141030_Shp数据-wgs84坐标系.rar

    街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用

  • 石家庄市-石家庄市-石家庄市-灵寿县-街道行政区划_130126_Shp数据wgs84坐标系.rar

    街道级行政区划shp数据,wgs84坐标系,直接下载使用。

Global site tag (gtag.js) - Google Analytics