LinkedIn架构

 

LinkedIn世界顶尖级别流量

  • 2千2百万用户
    每个月4百万独立用户访问
    每天4千万page view
    每天2百万搜索流量
    每天25万邀请发送
    每天1百万的回答提交
    每天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
  • Hudson作为集成测试框架

2003-2005

  • 一个整体的web程序
  • 一个核心数据库
  • 在Cloud中缓存所有network图,Cloud是用来做缓存的独立server。
  • 用lucene做搜索,也跑在Cloud中。

2006架构变动

  • 读写分离:复制另外一个数据库,减少直接load核心数据库,另外一个server来管理非只读数据库的数据更新。
  • 把搜索从Cloud中移出来,单独一个server跑搜索
  • 增加Databus数据总线来更新数据,这是通过分布式更新的核心组件,任何组件都需要Databus

linkedin 2006

2008架构变动

  • WebApp不再任何事情都它自己做,把业务逻辑分成很多部分,通过server群来做。
  • WebApp仍然提供用户界面给用户,但是,通过server群来管理用户资料,小组等等。
  • 每个服务有自己的域数据库。
  • 新的架构允许其他应用链接LinkedIn,比如增加的招聘和广告业务。

linkedin2008年架构


Linked性能指标

  • LinkedIn 集群: web事件跟踪记录和在线寻找
  • 6 nodes, 400 GB of data, 12 clients
  • mixed load (67 % Get , 33 % Put)
  • Throughput 吞吐量
  • 1433 QPS (node)
  • 4299 QPS (cluster)

 

  • Latency延迟
  • GET
  • 50 % percentile 0.05 ms
  • 95 % percentile 36.07 ms
  • 99 % percentile 60.65 ms
  • PUT
  • 50 % percentile 0.09 ms
  • 95 % percentile 0.41 ms
  • 99 % percentile 1.22 ms

云缓存

  • 图缓存:通过databus更新,关机时持久化到硬盘。
  • 原子型的网络关系缓存:通过云计算构建;与会员用户session绑定。

lined in cache

云缓存大小

  • 22M nodes, 120M edges
  • 需要12GB RAM
  • 在生产环境要跑40个实例
  • 从硬盘重建Cloud一个实例需要8个小时 ,启动开机。
  • 缓存通过C++实现,用JNI调用。

Voldemort

  • 应用在LinkedIn ,不是关系数据库。
  • 是一种带有存储系统的内存缓存。这样就不需要单独缓存了。
  • 云存储:使用Voldemort实现只读 read-only index,使用Hadoop作为数据文件。建立TB级别数据处理 。

voldemort


数据模型

  • 紧凑的, 压缩的二进制数据
  • 类型是 int, double, float, String, Map, List, Date, etc.
  • 会员数据格式如:
  • {
  •         'member_id': 'int32',
  •       ‘first_name': 'string',
  •       ’last_name': ’string’,
  •       ‘age’      : ‘int32’
  •        …
  •      }
  • 数据作为一个顺序被序列化的文件保存在 Hadoop
  • 数据格式也作为一个顺序文件保存,
  • 数据schema只读, 动态由Java/Pig 任务读取。

 

 

开源Apache Kafka

使用Apache Samza对数据库进行彻底的"调教" 

Netflix的亚马逊云计算平台使用

Twitter大数据

EBAY架构