-
操作系统: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作为集成测试框架
-
读写分离:复制另外一个数据库,减少直接load核心数据库,另外一个server来管理非只读数据库的数据更新。
-
把搜索从Cloud中移出来,单独一个server跑搜索
-
增加Databus数据总线来更新数据,这是通过分布式更新的核心组件,任何组件都需要Databus
-
WebApp不再任何事情都它自己做,把业务逻辑分成很多部分,通过server群来做。
-
WebApp仍然提供用户界面给用户,但是,通过server群来管理用户资料,小组等等。
-
每个服务有自己的域数据库。
-
新的架构允许其他应用链接LinkedIn,比如增加的招聘和广告业务。
-
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绑定。
-
22M nodes, 120M edges
-
需要12GB RAM
-
在生产环境要跑40个实例
-
从硬盘重建Cloud一个实例需要8个小时 ,启动开机。
-
缓存通过C++实现,用JNI调用。
-
应用在LinkedIn ,不是关系数据库。
-
是一种带有存储系统的内存缓存。这样就不需要单独缓存了。
-
云存储:使用Voldemort实现只读 read-only index,使用Hadoop作为数据文件。建立TB级别数据处理 。
-
紧凑的, 压缩的二进制数据
-
类型是 int, double, float, String, Map, List, Date, etc.
-
会员数据格式如:
-
{
-
'member_id': 'int32',
-
‘first_name': 'string',
-
’last_name': ’string’,
-
‘age’ : ‘int32’
-
…
-
}
-
数据作为一个顺序被序列化的文件保存在 Hadoop
-
数据格式也作为一个顺序文件保存,
-
数据schema只读, 动态由Java/Pig 任务读取。
LinkedIn系统架构演进
本文介绍了LinkedIn从2003年至2008年的系统架构发展过程,包括操作系统的选用、应用服务器、数据库的选择,以及架构上的重大变更,如读写分离、业务逻辑分解和服务化等。此外还详细说明了其性能指标、云缓存和数据模型的设计。




2万+

被折叠的 条评论
为什么被折叠?



