LinkedIn网站架构设计启示

本文是阅读<LinkeddIn: A Professional Social Network Built with JavaTM Technologies and Agile Practices>后的一些总结思考。 数据库


简介 服务器

LinkedIn建立于2003年,拥有(指发布那个PPT时的统计数字): 网络

  • 两千两百万注册会员
  • 每个月四百万UV(Unique Visitor)
  • 天天四千万PV(Page View)
  • 天天两百万次搜索
  • 天天25万次邀请
  • 天天一百万个答案被发布


工做流程 架构

  • 持续集成、持续发布,每一个版本的开发周期控制在2-4周,使用了Hudson结合SVN
  • 全部任务都被分割成小的可控的工程卡片,LinkedIn内部开发了一个系统支持这种工程卡片,有点相似敏捷开发中的CRC卡片
  • 注重测试:单元测试和集成测试,除了使用单元测试和集成测试工具外,还使用EasyMock来避免频繁集成测试耗时太长的缺点
  • 尽可能避免会议,站立式会议


总体架构演化 框架

2003年-2005年的架构以下: 分布式

    

特色: 工具

  • 结构简单,核心数据库只有一个
  • GUI层、业务逻辑层(BL Layer)和服务层(Services Layer)都放在同一个Web服务器上

2006年的架构以下: 单元测试

特色: 测试

  • 相比以前搜索模块被单独提出来
  • 最大的变化是数据访问层,增长了Databus这种分布式总线式数据处理管道,而且增长了多个从库(只用于读,写仍是走主库Core Database)

如今的架构(具体是哪一年?不清楚): 网站

特色:

  • 服务层被提出来并分化出多个服务:Profile Service、Comm Service、Groups Service、News Service,而且每一个服务都有本身的数据库(按业务分库)
  • 服务被抽取出来后有一个好处是可复用性极大加强,这样也致使依赖于这些服务的Web App的诞生:Public Profile Web App和Recruiter Web App
  • 增长广告服务


新闻服务架构


从上面能够看出几点:

  • 新闻主要来源是网络爬虫抓取:分布式爬虫、解析技术使用StAX和Rom
  • 爬取到的数据通过解析清洗后进入News DB,再由Lucene构建索引,以供News Service检索


99%代码都是Java编写的

LinkedIn组合使用各类Java开源框架,代码99%都是由Java编写的,各层用到的Java框架以下:

能够从上表看出LinkedIn使用都是一些Java界“喜闻乐见”的框架,但组合使用得当同样能够有效支撑起一个千万级别的网站架构。

相关文章
相关标签/搜索