在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程序,也就是就是说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。所有的操作都是异步的。
目前这两个演讲的PPT已经可以下载了。下载地址如下:
LinkedIn - A Professional Social Network Built with Java™ Technologies and Agile Practices
LinkedIn Communication Architecture
原文地址http://www.liyingfei.com/read.php/9.htm |
分享到:
相关推荐
【LinkedIn的Java架构技术详解】 LinkedIn是全球知名的社交网络平台,尤其在专业领域具有广泛的影响力。该平台在2008年的JavaOne会议上展示了其基于Java技术构建的架构设计。以下是对LinkedIn架构技术的深入解析: ...
本分析基于公开的演讲资料及LinkedIn技术架构设计。 首先,LinkedIn产品的数据处理需求表现在几个方面:用户档案、通讯、人脉推荐等,这些服务要求系统能够处理大数据量(Large dataset)、中到高写入(Medium ...
### LinkedIn社交网站的架构 #### 一、LinkedIn简介 LinkedIn是一个全球最大的专业社交网络平台,其核心价值在于为用户提供了在网络空间中展示个人职业身份的机会。该网站自2003年上线以来,迅速发展成为业界领先...
LinkedIn Java 库 这个库的目标是用一个更小、更快、更高效的 javalinkedin 库替换linkedin-j。 使用 scribe 进行 oauth-heavy 提升和 gson 进行 json 解析。 另一个目标是避免大多数这些库的一个常见问题,即它们...
WikiPedia 技术架构学习分享 Tailrank 网站架构 LinkedIn 架构笔记 Yahoo!社区架构 Craigslist 的数据库架构 Fotolog.com 的技术信息拾零 Digg 网站架构 Amazon 的 Dynamo 架构 财帮子(caibangzi.com)网站架构
Samza是由LinkedIn开源的一个分布式流...近日,LinkedIn资深SRE(网站可靠性工程师)JonBringhurst发表了这篇博文,阐述LinkedIn是如何利用Samza与Yarn、Kafka进行扩展的。ApacheSamza是一个开源框架,可以帮助开发者
2. **深入理解低代码开发**:虽然目前的工作主要涉及低代码平台,但了解其底层工作原理和技术架构对于提升架构设计能力至关重要。研究不同的低代码平台,如OutSystems、Mendix、Power Apps等,理解它们如何抽象化...
这篇“LinkedIn开发者JavaOne会议报告”详细揭示了LinkedIn的技术架构路线图,对于理解大规模Web站点的开发策略有着深远的意义。下面将深入探讨报告中的关键知识点。 首先,LinkedIn的技术架构围绕着高可用、可扩展...
2018 ArchSummit大会现场分析材料 胡新-Dec4-ArchSummit+2018_+Platformize+LinkedIn+Feed+To+Improve+Product+Iteration+Velocity
LinkedIn Spider 是一个开源项目,专为爬取LinkedIn网站上的公开信息而设计,特别是针对特定公司的员工资料。这个爬虫能够帮助研究人员、数据分析师或者招聘人员批量获取与指定公司相关的LinkedIn用户资料,以便进行...
SNS网站的兴起始于对美国的成功案例,如LinkedIn和Friendster的模仿。随着MySpace、YouTube、Facebook等在美国的迅速崛起,SNS成为了全球互联网的焦点。 2006年是SNS的标志性年份,不仅有LinkedIn获得高额融资,...
**LinkedIn社交媒体网站模板详解** LinkedIn社交媒体网站模板是专为企业打造的一款风格鲜明的在线交流和招聘平台模板。这款模板设计简洁而专业,旨在提供一个高效、直观的环境,让企业和求职者能够有效地进行互动和...
在IT行业中,SNS(Social Networking Service)社交网站源码是构建类似Facebook、Twitter或LinkedIn等社交网络平台的基础。源码是指编程语言编写的原始代码,它定义了软件的功能、结构和逻辑。对于SNS社交网站,源码...
LinkedIn接口API调用实例是一个关于如何与LinkedIn的开发平台交互的实际应用示例。LinkedIn API允许开发者访问LinkedIn的数据,包括用户信息、公司数据、职位发布等,以便构建与LinkedIn相关的应用程序和服务。下面...
总结来说,LinkedIn的通信架构是一个复杂且高度优化的系统,结合了分布式计算、微服务、实时通信、安全性、数据一致性、可扩展性和高可用性等多个方面的技术。这些技术的巧妙组合使得LinkedIn能够为全球用户提供了...
`linkedin_scraper` 是一个Python库,专门用于从LinkedIn网站上抓取数据。在Python的生态系统中,PyPI(Python Package Index)是官方的第三方库分发平台,开发者可以在这里发布他们的开源软件包,方便其他用户下载...
LinkedIn API for PHP是一个用于与LinkedIn平台进行数据交互的PHP库,它允许开发者通过编程方式访问LinkedIn的公开或授权用户的数据,如个人资料、职位、公司信息等。在使用这个API时,开发者可以创建各种应用程序,...