著名社交网站LinkedIn的Java架构技术,在JavaOne大会上,LinkIn开发者做了介绍,并有PPT下载,现在有更详细的架构图下载,LinkIn开发者透露LinkedIn 99%都是用java写的,除了缓存通过C++实现。
下面是详细架构图:
在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。所有的操作都是异步的。
分享到:
相关推荐
这个库的目标是用一个更小、更快、更高效的 javalinkedin 库替换linkedin-j。 使用 scribe 进行 oauth-heavy 提升和 gson 进行 json 解析。 另一个目标是避免大多数这些库的一个常见问题,即它们关闭或使自定义类或...
LinkedIn系统的架构设计和架构描述,详细分析了LinkedIn的大数据处理流程和模式。给大数据架构设计和开发工程师一个很好的参考。
介绍著名社交网站LinkedIn的Java架构技术
angular-linkedin-connect : 一个非常简单的 angular 模块,它使用linkedin 处理登录 安装 1)下载包:使用zip文件下载 2) 在你的应用中添加 angular-the-linkedin.js 并更改 api_key // Initialization of ...
使用此扩展程序,您只需单击一下即可隐藏/显示您的LinkedIn Feed。 LinkedIn:registered:(nffls)的任何供稿都不会关心您的隐私:不会收集,存储或发送任何数据到外部服务器。 ___________________________________...
他需要审视美国的经济史(从1970到2000年,跳槽率增加了将近一倍,平均每十年换3.1个工作)、简历小贴士(求职者过度使用“经证实的工作记录”一句)以及关于命运的冥思(高管名字一般都很简短,如杰克(Jack)、...
linkedin社交网站的架构
它们可能会将发出未经身份验证或异常请求的ip列入黑名单目录Python包个人资料公司介绍配置平行刮例子配置问题 安装 用pip安装运行pip install git+git://github.com/austinoboyle/scrape-linkedin-selenium.git ...
graphql_linkedin:https://www.linkedin.comlearninggraphql-data-fetching-with-relay
现在,您可以维护您的 Linkedin 配置文件,并保证您可以使用 Google Chrome 中的“Safe to PDF”打印机将其打印或导出为 PDF 文件。 此 Google Chrome 扩展程序将在浏览器地址栏(Omnibar)的右侧添加一个小的 ...
使用拥有很多联系的帐户,否则您将获得糟糕的结果。 在目标公司添加几个连接应该会有所帮助-此工具将可以用于三级连接。 请注意, 最多可为1000名员工。 您可以使用功能--geoblast或--keywords来绕过此限制。 有关...
Linkedin刮板机 清除Linkedin用户数据 安装 pip3 install --user linkedin_scraper 2.0.0版及pip3 install --user linkedin_user_scraper版本称为linkedin_user_scraper ,可通过pip3 install --user linkedin_user...
内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行...
内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行...
linkedin_login 用于 OAuth 2.0 API的Flutter库。 该库正在上使用新的授权方式 :star: :star: :star: :star: 星星 :star: :star: :star: :star: 如果您喜欢项目,请进行回购。 您的支持对我们很重要。 :star: :...
linkedin-back:Roberto后端合作
OmniAuth LinkedIn OAuth2 策略 OmniAuth 的 LinkedIn OAuth2 策略。 有关更多详细信息,请阅读 LinkedIn 文档: : 安装 将此 gem 添加到您的应用程序的 Gemfile 中: bundle add omniauth-linkedin-oauth2 ...
Linkedin铲运机 脚本在Linkedin上抓取用户的Linkedin连接(第一个)数据 它在“所有连接”上抓取以下数据 姓名 Linkedin_URL Latest_JOB_Position 技能专长 要求 Linkedin个人资料 系统上的Python设置 Chrome ...
您可以使用此工具从您的LinkedIn个人资料生成Markdown格式的简历。 编辑输出的Markdown文件并将其转换为PDF, 因此您可以使用纯文本简历(也许将其放在支持Markdown格式的个人网站上) 和PDF CV同时显示。为什么要...