`

LiveJournal Architecture

阅读更多

LiveJournal Architecture

A fascinating and detailed story of how LiveJournal evolved their system to scale. LiveJournal was an early player in the free blog service race and faced issues from quickly adding a large number of users. Blog posts come fast and furious which causes a lot of writes and writes are particularly hard to scale. Understanding how LiveJournal faced their scaling problems will help any aspiring website builder.

Site: http://www.livejournal.com/

Information Sources

  • LiveJournal - Behind The Scenes Scaling Storytime
  • Google Video
  • Tokyo Video
  • 2005 version

    Platform

  • Linux
  • MySql
  • Perl
  • Memcached
  • MogileFS
  • Apache

    What's Inside?

  • Scaling from 1, 2, and 4 hosts to cluster of servers.
  • Avoid single points of failure.
  • Using MySQL replication only takes you so far.
  • Becoming IO bound kills scaling.
  • Spread out writes and reads for more parallelism.
  • You can't keep adding read slaves and scale.
  • Shard storage approach, using DRBD , for maximal throughput. Allocate shards based on roles.
  • Caching to improve performance with memcached. Two-level hashing to distributed RAM.
  • Perlbal for web load balancing.
  • MogileFS, a distributed file system, for parallelism.
  • TheSchwartz and Gearman for distributed job queuing to do more work in parallel.
  • Solving persistent connection problems.

    Lessons Learned

  • Don't be afraid to write your own software to solve your own problems. LiveJournal as provided incredible value to the community through their efforts.
  • Sites can evolve from small 1, 2 machine setups to larger systems as they learn about their users and what their system really needs to do.
  • Parallelization is key to scaling. Remove choke points by caching, load balancing, sharding, clustering file systems, and making use of more disk spindles.
  • Replication has a cost. You can't just keep adding more and more read slaves and expect to scale.
  • Low level issues like which OS event notification mechanism to use, file system and disk interactions, threading and even models, and connection types, matter at scale.
  • Large sites eventually turn to a distributed queuing and scheduling mechanism to distribute large work loads across a grid.
  • 分享到:
    评论

    相关推荐

      从LiveJournal后台发展看大规模网站性能优化方法

      从LiveJournal后台发展看大规模网站性能优化方法 一、LiveJournal发展历程与背景 LiveJournal,一个始于1999年的校园项目,最初是由一群技术爱好者为了实现博客、论坛、社交网络以及文章聚合等功能而创立的。它的...

      LiveJournal架构现状概况

      LiveJournal架构现状概况,网上收集的,但是来源忘记了!

      LiveJournal:LiveJournal数据库

      【LiveJournal:深入理解LiveJournal数据库】 LiveJournal,作为一个历史悠久的在线日记和社交网络平台,其背后的数据存储和管理机制是构建大规模社交网络的关键部分。本文将深入探讨LiveJournal数据库的相关知识点...

      LiveJournal Backend(ppt)

      Inside LiveJournal\'s Backend. or,. “holy hell that\'s a lot of hits!” April 2004. Brad Fitzpatrick. brad@danga....

      livejournal:LiveJournal 服务器源代码(封闭源代码之前的陈旧历史)

      LiveJournal 源存档 这是背后的代码库,从存储库的创建到官方存储库在 2014 年被LiveJournal.com, Inc关闭。 尽管官方存储库不再公开,但在此之前的源代码仍然根据 GNU GPL 获得许可,并由各种不同的版权所有者提供...

      LiveJournal iPhoto Exporter-开源

      iPhoto的插件,可将图像上传到LiveJournal Scrapbook(Fotobilder)照片托管服务。

      LiveJournal's Backend A history of scaling.PDF

      LiveJournal's Backend A history of scaling.PDF

      livejournal API-开源

      LiveJournal的Java API:XML-RPC服务,http客户端,*。bml客户端。 需要Java 1.5+

      node-livejournal:LiveJournal API

      LiveJournal API npm install livejournal 该软件包提供对LiveJournal的XMLRPC和JSONRPC API的访问。XMLRPC 例子// get posts inside the journal using XMLRPCLiveJournal . xmlrpc . getevents ( { journal : '...

      Livejournal Narrow-crx插件

      《Livejournal Narrow-crx插件:提升Livejournal用户体验的利器》 Livejournal Narrow-crx插件,是一款专为英语环境下的Livejournal.com用户设计的扩展程序。它的主要功能是优化网站的阅读体验,特别是针对那些内容...

      Java LiveJournal Client-开源

      Java LiveJournal Client是一款基于Java 2 SE 5.0开发的开源软件,它为用户提供了一个方便的工具,能够与LiveJournal服务进行交互,实现日志的更新和其他相关操作。这款客户端利用了LiveJournal协议,使得Java开发者...

      Python Livejournal Backup-开源

      【Python Livejournal Backup 开源项目】是一个专门针对Livejournal博客平台的备份工具,它由Python编程语言编写,旨在帮助用户方便地保存他们在Livejournal上的个人日志。该项目的核心功能是根据用户提供的用户名和...

      Karaife Livejournal Client-开源

      Karaife Livejournal Client是一款开源的网络日志客户端,专为KDE桌面环境设计,它由Python编程语言实现。这款应用的核心目标是提供一个便捷、功能丰富的工具,让用户能够轻松地与基于Livejournal服务的社交网络进行...

      Livejournal狭窄「Livejournal Narrow」-crx插件

      简单的用户脚本使livejournal.com变得更好。 缩小太大的实时新闻主题。 Сужаетслишкомширокиетемыlivejournal.com。 支持语言:English

      LiveJournal的-IPS「Livejournal-IPs」-crx插件

      在Livejournal页面(国家、城市)上显示地理知识信息 Chrome扩展程序可在Livejournal页面上显示geo-ip信息Livejournal可以记录评论者的IP。 该工具基于记录的IP添加geo-ip信息。 您可以立即查看评论从世界的哪个地方...

      blogga:博客 LiveJournal 客户端

      博客LiveJournal客户端是一款基于JavaScript开发的应用程序,专为使用LiveJournal平台的用户设计。LiveJournal是一个流行的在线日记和社交网络服务,它允许用户创建和维护个人博客,与朋友和社区分享想法、故事和...

      高性能高并发服务器架构大全

       从LiveJournal后台发展看大规模网站性能优化方法 70 一、LiveJournal发展历程 70 二、LiveJournal架构现状概况 70 三、从LiveJournal发展中学习 71 1、一台服务器 71 2、两台服务器 72 3、四台服务器 73 4...

      Pepys LiveJournal Client-开源

      Pepys是完全用Java编写的LiveJournal的客户端。 它可以插入希望添加LiveJournal功能的任何Java程序中,并且可以在GPL下免费使用。

    Global site tag (gtag.js) - Google Analytics