在JavaOne 2008的会议上,著名社交网站LinkedIn的开发者做了2个关于LinkedIn网站的架构技术的演讲:
LinkedIn - A Professional Social Network Built with Java Technologies and Agile Practices
LinkedIn Communication Architecture
可以看一下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
2008架构变动
- WebApp不再任何事情都它自己做,把业务逻辑分成很多部分,通过server群来做。
- WebApp仍然提供用户界面给用户,但是,通过server群来管理用户资料,小组等等。
- 每个服务有自己的域数据库。
- 新的架构允许其他应用链接LinkedIn,比如增加的招聘和广告业务。
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绑定。
云缓存大小
- 22M nodes, 120M edges
- 需要12GB RAM
- 在生产环境要跑40个实例
- 从硬盘重建Cloud一个实例需要8个小时 ,启动开机。
- 缓存通过C++实现,用JNI调用。
Voldemort
- 应用在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 任务读取。
时间: 2024-10-27 10:50:12