`
sw1982
  • 浏览: 511484 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

阅读更多

原贴网址: http://www.jdon.com/jivejdon/thread/34214.html

推荐看原帖链接,文章下面的支付宝DBA和banq的回复讨论,也是体现了专业水准


DB不再是他们系统架构里的最后一层楼。出现了Cloud这个东东来代替关系数据库维护关系
网络图,不知道DB的春天是不是真的要过去了。。。
================================================================

 

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

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

LinkedIn - A Professional Social Network Built with Java™ Technologies and Agile Practices
LinkedIn Communication Architecture
需要注册才可以下载,能下载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的Java架构技术.doc

    总结,LinkedIn的Java架构技术展示了如何利用Java生态系统构建可扩展、高性能的社交网络平台。其技术栈包括Solaris、Tomcat/Jetty、Oracle/MySQL数据库、JDBC、ActiveMQ、Lucene、Spring以及自定义的C++缓存系统。这...

    linkedin社交网站的架构

    ### LinkedIn社交网站的架构 #### 一、LinkedIn简介 LinkedIn是一个全球最大的专业社交网络平台,其核心价值在于为用户提供了在网络空间中展示个人职业身份的机会。该网站自2003年上线以来,迅速发展成为业界领先...

    linkedin开发者javaone会议报告

    JavaOne会议是全球Java开发者的重要盛会,LinkedIn作为一家领先的社交媒体平台,其在技术领域的探索与实践备受关注。这篇“LinkedIn开发者JavaOne会议报告”详细揭示了LinkedIn的技术架构路线图,对于理解大规模Web...

    Java架构师 一个月跳槽计划.pdf

    6. **网络拓展**:利用LinkedIn、GitHub等社交媒体平台,积极参与技术讨论,与同行交流,扩大人脉,这将有助于寻找新的机会。 7. **面试准备**:研究目标公司的技术栈和业务需求,准备面试常见问题,包括技术面试和...

    剖析SalesForce的多租户架构(PAAS\SAAS\云计算)

    - **2010年**:发布企业级在线社交网络服务“Chatter”,类似于企业内部的LinkedIn;CRM应用更名为“SalesCloud”。 #### Salesforce的整体架构与核心价值 Salesforce的产品线看似多样,但实质上是一个高度集成的...

    contacts-sync:将LinkedIn同步到Google联系人

    【标题】"contacts-sync:将LinkedIn同步到Google联系人"是一个项目,它的主要目标是实现LinkedIn社交平台的联系人数据与Google的Gmail通讯录之间的同步功能。这个项目对于那些需要在不同平台间统一管理人脉资源的...

    java工程师简历模版多套合集(包含具体项目经验、责任描述等)

    1. **个人信息**:包括全名、联系方式(电话、邮箱)、个人网站(如果有)以及LinkedIn或其他专业社交网络的链接。 2. **职业目标**:清晰地表述求职者期望的职位类型,例如初级、中级或高级Java开发工程师,以及...

    JAVA上百实例源码以及开源项目源代码

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

    java开源包4

    github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...

    java开源包101

    github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...

    java开源包6

    github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...

    java开源包9

    github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...

    java开源包8

    github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...

    java开源包10

    github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...

    java开源包5

    github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...

    java开源包1

    github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...

    java开源包3

    github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...

    Java资源包01

    github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对...

    LinkedinAndroidApplication:Linkedin android 应用程序,它获取所有连接、共享帖子、在linkedin 连接之间发送消息

    领英(LinkedIn)是全球知名的职业社交平台,其Android应用程序为用户提供了一个方便的途径来管理他们的职业网络,发现职业机会,以及与同行交流。在这个"LinkedinAndroidApplication"项目中,我们聚焦于如何构建一...

Global site tag (gtag.js) - Google Analytics