FreeOZ论坛

标题: Linkedin网站技术架构简介 [打印本页]

作者: flyspirit    时间: 14-5-2009 12:14
标题: Linkedin网站技术架构简介
在JavaOne 2008的会议上,著名社交网站LinkedIn的开发者做了2个关于LinkedIn网站的架构技术的演讲

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); th** 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程序
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 所有的操作都是异步的。

PPT分享:

   1. LinkedIn Communication Architecture http://www.slideshare.net/linked ... m?type=presentation
   2. LinkedIn - A Professional Network built with Java Technologies and Agile Practices http://www.slideshare.net/linked ... ure?type=powerpoint

原文地址: http://www.liyingfei.com/read.php/9.htm
作者: yuba    时间: 14-5-2009 12:36
从知名网站的发展史可以看出

最初的技术路线并不重要

你可以用任何技术写出明天的flickr,linkedin和ebay

如果有明天的话
作者: flyspirit    时间: 14-5-2009 12:38
用微软的技术是个例外,不是说技术达不到,而是规模扩大,费用承受不起。
作者: yuba    时间: 14-5-2009 12:51
标题: 回复 #3 flyspirit 的帖子
有可能

不过规模大了以后,数据可以迁移,应用可以重写

赢家通吃,大了机会就多了

明天的linkedin们,先用微软的架构也未尝不可
作者: flyspirit    时间: 14-5-2009 14:34
有不少网站大了并不一定赚钱,资源紧张的时候重写就比较伤筋动骨。
作者: yuba    时间: 14-5-2009 15:52
标题: 回复 #5 flyspirit 的帖子
大了不一定赚钱,没错

但是,大了却没有想赚钱的人给你钱的话,需要反思的就不只是技术问题了
作者: klux    时间: 14-5-2009 17:19
tomcat这么牛啊
作者: key    时间: 14-5-2009 18:15
标题: 说系统支撑架构可能最强还是中国的ICP
腾讯、网易之流,我相信在这方面,他们是世界一流的,无他,
中国的用户真的多。

所以我一直对腾讯的服务架构很认可,无论如何,
你很难在别的公司找到这样的规模应用。
作者: coredump    时间: 14-5-2009 18:22
标题: 回复 #8 key 的帖子
是,才能都是bee出来的
作者: ritz    时间: 14-5-2009 18:33
LinkedIn的domain和QQ/网易是不同的

其实每家的情况不一样(现金,用户规模,投资者压力), 光比较规模没什么意义
作者: key    时间: 14-5-2009 18:35
原帖由 coredump 于 14-5-2009 18:22 发表
是,才能都是bee出来的


core同学,快去帮我看看那个Allocator啦,有部分内容我可能搞不清楚。
作者: justinli79    时间: 14-5-2009 18:51
我刚注册了一个账户




欢迎光临 FreeOZ论坛 (https://www.freeoz.org/ibbs/) Powered by Discuz! X3.2