SlideShare uma empresa Scribd logo
1 de 115
Baixar para ler offline
http://danga.com/words/
LiveJournal: Behind The Scenes
Scaling Storytime
June 2007
USENIX
Brad Fitzpatrick
brad@danga.com
danga.com / livejournal.com / sixapart.com
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To
view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/1.0/ or send a letter to
Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
1
http://danga.com/words/
The plan...
 Refer to previous presentations for more
details...
 http://danga.com/words/
 Questions anytime! Yell. Interrupt.
 Part 0:
− show where talk will end up
 Part I:
− What is LiveJournal? Quick history.
− LJ’s scaling history
 Part II:
− explain all our software,
− explain all the moving parts
2
http://danga.com/words/
LiveJournal Backend: Today
(Roughly.)
User DB Cluster 1
uc1a uc1b
User DB Cluster 2
uc2a uc2b
User DB Cluster 3
uc3a uc3b
User DB Cluster N
ucNa ucNb
Job Queues (xN)
jqNa jqNb
Memcached
mc4
mc3
mc2
mcN
...
mc1
mod_perl
web4
web3
web2
webN
...
web1
BIG-IP
bigip2
bigip1
perlbal (httpd/proxy)
proxy4
proxy3
proxy2
proxy5
proxy1
Global Database
slave1
master_a master_b
slave2 ... slave5
MogileFS Database
mog_a mog_b
Mogile Trackers
tracker3tracker1
Mogile Storage Nodes
...
sto2
sto8
sto1
net.
djabberd
djabberd
djabberd
gearmand
gearmand1
gearmandN
“workers”
gearwrkN
theschwkN
slave1 slaveN
3
http://danga.com/words/
LiveJournal Overview
 college hobby project, Apr 1999
 4-in-1:
− blogging
− forums
− social-networking (“friends”)
− aggregator: “friends page”
− “friends” can be external RSS/Atom
 10M+ accounts
 Open Source!
− server,
− infrastructure,
− original clients,
4
http://danga.com/words/
 memcached
− distributed caching
 MogileFS
− distributed filesystem
 Perlbal
− HTTP load balancer, web
server, swiss-army knife
 gearman
− LB/HA/coalescing low-
latency function call
“router”
 TheSchwartz
− reliable, async job
dispatch system
 djabberd
− the super-extensible
everything-is-a-plugin
mod_perl/qpsmtpd/
Eclipse of XMPP/Jabber
servers
 .....
 OpenID
 federated identity
protocol
Stuff we've built...
(all production, open source)
5
http://danga.com/words/
“Uh, why?”
 NIH? (Not Invented Here?)
 Are we reinventing the wheel?
6
http://danga.com/words/
Yes.
 We build wheels.
− ... when existing suck,
− ... or don’t exist.
7
http://danga.com/words/
Yes.
 We build wheels.
− ... when existing suck,
− ... or don’t exist.
7
http://danga.com/words/
Yes.
 We build wheels.
− ... when existing suck,
− ... or don’t exist.
7
http://danga.com/words/
Yes.
 We build wheels.
− ... when existing suck,
− ... or don’t exist.
(yes, arguably tires. sshh..)
7
http://danga.com/words/
Part I
Quick Scaling History
8
http://danga.com/words/
Quick Scaling History
 1 server to hundreds...
 you can do all this with just 1 server!
− then you’re ready for tons of servers, without pain
− don’t repeat our scaling mistakes
9
http://danga.com/words/
Terminology
 Scaling:
− NOT: “How fast?”
− But: “When you add twice as many servers, are you
twice as fast (or have twice the capacity)?”
 Fast still matters,
− 2x faster: 50 servers instead of 100...
 that’s some good money
− but that’s not what scaling is.
10
http://danga.com/words/
Terminology
 “Cluster”
− varying definitions... basically:
− making a bunch of computers work together for
some purpose
− what purpose?
 load balancing (LB),
 high availablility (HA)
 Load Balancing?
 High Availability?
 Venn Diagram time!
− I love Venn Diagrams
11
http://danga.com/words/
LB vs. HA
Load Balancing High Availability
12
http://danga.com/words/
LB vs. HA
Load
Balancing
High
Availability
http
reverse proxy,
wackamole,
...
round-robin DNS,
data partitioning,
....
LVS heartbeat,
cold/warm/hot spare,
...
13
http://danga.com/words/
Favorite Venn Diagram
Times When
I’m Truly Happy
Times When I’m
Wearing Pants
14
http://danga.com/words/
One Server
 Simple:
mysql
apache
15
http://danga.com/words/
Two Servers
mysql
apache
16
http://danga.com/words/
Two Servers - Problems
 Two single points of failure!
 No hot or cold spares
 Site gets slow again.
− CPU-bound on web node
− need more web nodes...
17
http://danga.com/words/
Four Servers
 3 webs, 1 db
 Now we need to load-balance!
 LVS, mod_backhand, whackamole, BIG-IP,
Alteon, pound, Perlbal, etc, etc..
− ...
18
http://danga.com/words/
Four Servers - Problems
 Now I/O bound...
 ... how to use another database?
−
19
http://danga.com/words/
Five Servers
introducing MySQL replication
 We buy a new DB
 MySQL replication
 Writes to DB (master)
 Reads from both
20
http://danga.com/words/
More Servers
Chaos!
21
http://danga.com/words/
Where we're at....
mod_perl
web4
web3
web2
web12
...
web1
BIG-IP
bigip2
bigip1
mod_proxy
proxy3
proxy2
proxy1
Global Database
slave1 slave2 ... slave6
master
net.
22
http://danga.com/words/
Problems with Architecture
or,
“This don't scale...”
 DB master is SPOF
 Adding slaves doesn't scale
well...
− only spreads reads, not writes!
200 writes/s
200 write/s
500 reads/s
250 reads/s
200 write/s
250 reads/s
23
http://danga.com/words/
Eventually...
 databases eventual only writing
400 write/s
3 reads/s
400
write/s
3 r/s
400 write/s
3 reads/s
400
write/s
3 r/s
400 write/s
3 reads/s
400
write/s
3 r/s
400 write/s
3 reads/s
400
write/s
3 r/s
400 write/s
3 reads/s
400
write/s
3 r/s
400 write/s
3 reads/s
400
write/s
3 r/s
400 write/s
3 reads/s
400
write/s
3 r/s
24
http://danga.com/words/
Spreading Writes
 Our database machines already did RAID
 We did backups
 So why put user data on 6+ slave machines?
(~12+ disks)
− overkill redundancy
− wasting time writing everywhere!
25
http://danga.com/words/
Partition your data!
 Spread your databases out, into “roles”
− roles that you never need to join between
 different users
 or accept you'll have to join in app
 Each user assigned to a numbered HA cluster
 Each cluster has multiple machines
− writes self-contained in cluster (writing to 2-3 machines, not
6)
26
http://danga.com/words/
User Clusters
27
http://danga.com/words/
User Clusters
SELECT userid,
clusterid FROM
user WHERE
user='bob'
27
http://danga.com/words/
User Clusters
SELECT userid,
clusterid FROM
user WHERE
user='bob'
userid: 839
clusterid: 2
27
http://danga.com/words/
User Clusters
SELECT userid,
clusterid FROM
user WHERE
user='bob'
userid: 839
clusterid: 2
SELECT ....
FROM ...
WHERE
userid=839 ...
27
http://danga.com/words/
User Clusters
SELECT userid,
clusterid FROM
user WHERE
user='bob'
userid: 839
clusterid: 2
SELECT ....
FROM ...
WHERE
userid=839 ...
OMG i like
totally hate
my parents
they just
dont
understand me
and i h8 the
world omg lol
rofl *! :^-
^^;
add me as a
friend!!!
27
http://danga.com/words/
Details
 per-user numberspaces
− don't use AUTO_INCREMENT
− PRIMARY KEY (user_id, thing_id)
− so:
 Can move/upgrade users 1-at-a-time:
− per-user “readonly” flag
− per-user “schema_ver” property
− user-moving harness
 job server that coordinates, distributed long-
lived user-mover clients who ask for tasks
− balancing disk I/O, disk space
28
http://danga.com/words/
Shared Storage
(SAN, SCSI, DRBD...)
 Turn pair of InnoDB machines into a cluster
− looks like 1 box to outside world. floating IP.
 One machine at a time mounting fs, running MySQL
 Heartbeat to move IP, {un,}mount filesystem, {stop,start}
mysql
 filesystem repairs,
 innodb repairs,
 don’t lose any committed transactions.
 No special schema considerations
 MySQL 4.1 w/ binlog sync/flush options
− good
− The cluster can be a master or slave as well
29
http://danga.com/words/
Shared Storage: DRBD
 Linux block device driver
− “Network RAID 1”
− Shared storage without sharing!
− sits atop another block device
− syncs w/ another machine's
block device
 cross-over gigabit cable
ideal. network is faster than
random writes on your disks.
 InnoDB on DRBD: HA MySQL!
− can hang slaves off HA pair,
− and/or,
− HA pair can be slave of a
master
drbd
sda
ext3
mysql
floater ip
drbd
sda
ext3
mysql
30
http://danga.com/words/
MySQL Clustering Options:
Pros & Cons
 No magic bullet...
− Master/Slave
 doesn’t scale with writes
− Master/Master
 special schemas
− DRBD
 only HA, not LB
− MySQL Cluster
 special-purpose
− ....
 lots of options!
− :)
− :(
31
http://danga.com/words/
Part II
Our Software
32
http://danga.com/words/
Caching
 caching's key to performance
− store result of a computation or I/O for quicker future
access (classic space/time trade-off)
 Where to cache?
− mod_perl/php internal caching
 memory waste (address space per apache child)
− shared memory
 limited to single machine, same with Java/C#/
Mono
− MySQL query cache
 flushed per update, small max size
− HEAP tables
 fixed length rows, small max size
33
http://danga.com/words/
memcached
http://www.danga.com/memcached/
 our Open Source, distributed caching system
 implements a dictionary ADT, with network API
 run instances wherever free memory
 two-level hash
− client hashes* to server,
− server has internal dictionary (hash table)
 no “master node”, nodes aren’t aware of each
other
 protocol simple, XML-free
− clients: c, perl, java, c#, php, python, ruby, ...
 popular, fast
 scalable
34
http://danga.com/words/
Protocol Commands
 set, add, replace
 delete
 incr, decr
− atomic, returning new value
35
http://danga.com/words/
Picture
36
http://danga.com/words/
Picture
10.0.0.100:11211
1GB
10.0.0.101:11211
2GB
10.0.0.102:11211
1GB
36
http://danga.com/words/
Picture
10.0.0.100:11211
1GB
10.0.0.101:11211
2GB
10.0.0.102:11211
1GB
36
http://danga.com/words/
Picture
10.0.0.100:11211
1GB
10.0.0.101:11211
2GB
10.0.0.102:11211
1GB
0 1 2 3
36
http://danga.com/words/
Picture
10.0.0.100:11211
1GB
10.0.0.101:11211
2GB
10.0.0.102:11211
1GB
Client
0 1 2 3
36
http://danga.com/words/
Picture
10.0.0.100:11211
1GB
10.0.0.101:11211
2GB
10.0.0.102:11211
1GB
Client
0 1 2 3
$val = $client->get(“foo”)
36
http://danga.com/words/
Picture
10.0.0.100:11211
1GB
10.0.0.101:11211
2GB
10.0.0.102:11211
1GB
Client
0 1 2 3
$val = $client->get(“foo”)
CRC32(“foo”) % 4 = 2
36
http://danga.com/words/
Picture
10.0.0.100:11211
1GB
10.0.0.101:11211
2GB
10.0.0.102:11211
1GB
Client
0 1 2 3
$val = $client->get(“foo”)
CRC32(“foo”) % 4 = 2
connect to server[2] (“10.0.0.101:11211”)
36
http://danga.com/words/
Picture
10.0.0.100:11211
1GB
10.0.0.101:11211
2GB
10.0.0.102:11211
1GB
Client
0 1 2 3
$val = $client->get(“foo”)
CRC32(“foo”) % 4 = 2
connect to server[2] (“10.0.0.101:11211”)
GET foo
36
http://danga.com/words/
Picture
10.0.0.100:11211
1GB
10.0.0.101:11211
2GB
10.0.0.102:11211
1GB
Client
0 1 2 3
$val = $client->get(“foo”)
CRC32(“foo”) % 4 = 2
connect to server[2] (“10.0.0.101:11211”)
GET foo (response)
36
http://danga.com/words/
Client hashing onto a memcacached
node
 Up to client how to pick a memcached node
 Traditional way:
− CRC32(<key>) % <num_servers>
− (servers with more memory can own more slots)
− CRC32 was least common denominator for all
languages to implement, allowing cross-language
memcached sharing
− con: can’t add/remove servers without hit rate
crashing
 “Consistent hashing”
− can add/remove servers with minimal <key> to
<server> map changes
37
http://danga.com/words/
memcached internals
 libevent
− epoll, kqueue...
 event-based, non-blocking design
− optional multithreading, thread per CPU (not per
client)
 slab allocator
 referenced counted objects
− slow clients can’t block other clients from altering
namespace or data
 LRU
 all internal operations O(1)
38
http://danga.com/words/
Perlbal
39
http://danga.com/words/
Web Load Balancing
 BIG-IP, Alteon, Juniper, Foundry
− good for L4 or minimal L7
− not tricky / fun enough. :-)
 Tried a dozen reverse proxies
− none did what we wanted or were fast enough
 Wrote Perlbal
− fast, smart, manageable HTTP web server / reverse proxy / LB
− can do internal redirects
 and dozen other tricks
40
http://danga.com/words/
Perlbal
 Perl
 parts optionally in C with plugins
 single threaded, async event-based
− uses epoll, kqueue, etc.
 console / HTTP remote management
− live config changes
 handles dead nodes, smart balancing
 multiple modes
− static webserver
− reverse proxy
− plug-ins (Javascript message bus.....)
 plug-ins
− GIF/PNG altering, ....
41
http://danga.com/words/
Perlbal: Persistent Connections
42
http://danga.com/words/
Perlbal: Persistent Connections
 perlbal to backends (mod_perls)
− know exactly when a connection is ready for a new
request
 no complex load balancing logic: just use whatever's free.
beats managing “weighted round robin” hell.
 clients persistent; not tied to a specific backend
connection
42
http://danga.com/words/
Perlbal: Persistent Connections
 perlbal to backends (mod_perls)
− know exactly when a connection is ready for a new
request
 no complex load balancing logic: just use whatever's free.
beats managing “weighted round robin” hell.
 clients persistent; not tied to a specific backend
connection
PB
42
http://danga.com/words/
Perlbal: Persistent Connections
 perlbal to backends (mod_perls)
− know exactly when a connection is ready for a new
request
 no complex load balancing logic: just use whatever's free.
beats managing “weighted round robin” hell.
 clients persistent; not tied to a specific backend
connection
PB
Apache
Apache
Client
Client
42
http://danga.com/words/
Perlbal: Persistent Connections
 perlbal to backends (mod_perls)
− know exactly when a connection is ready for a new
request
 no complex load balancing logic: just use whatever's free.
beats managing “weighted round robin” hell.
 clients persistent; not tied to a specific backend
connection
PB
Apache
Apache
Client
Client
reqA1, B2
reqB1, A2
reqA1, A2
reqB1, B2
42
http://danga.com/words/
Perlbal: can verify new backend
connections
 connects to backends are often fast, but...
 are you talking to the kernel’s listen queue?
 or apache? (did apache accept() yet?)
 send OPTIONs request to see if apache is
there
− Apache can reply to OPTIONS request quickly,
− then Perlbal knows that conn is bound to an
apache process, not waiting in a kernel queue
 Huge improvement to user-visible latency!
 (and more fair/even load balancing)
#include <sys/socket.h>
int listen(int sockfd, int backlog);
43
http://danga.com/words/
Perlbal: multiple queues
 high, normal, low priority queues
 paid users -> high queue
 bots/spiders/suspect traffic -> low queue
44
http://danga.com/words/
Perlbal: cooperative large file serving
 large file serving w/ mod_perl bad...
− mod_perl has better things to do than spoon-feed
clients bytes
45
http://danga.com/words/
Perlbal: cooperative large file serving
 internal redirects
− mod_perl can pass off serving a big file to Perlbal
 either from disk, or from other URL(s)
− client sees no HTTP redirect
− “Friends-only” images
 one, clean URL
 mod_perl does auth, and is done.
 perlbal serves.
46
http://danga.com/words/
Internal redirect picture
47
http://danga.com/words/
And the reverse...
 Now Perlbal can buffer uploads as well..
− Problems:
 LifeBlog uploading
−cellphones are slow
 LiveJournal/Friendster photo uploads
−cable/DSL uploads still slow
− decide to buffer to “disk” (tmpfs, likely)
 on any of: rate, size, time
 blast at backend, only when full request is in
48
http://danga.com/words/
Palette Altering GIF/PNGs
 based on palette indexes, colors in URL,
dynamically alter GIF/PNG palette table, then
sendfile(2) the rest.
49
http://danga.com/words/
MogileFS
50
http://danga.com/words/
oMgFileS
51
http://danga.com/words/
MogileFS
 our distributed file system
 open source
 userspace
 based all around HTTP (NFS support now removed)
 hardly unique
− Google GFS
− Nutch Distributed File System (NDFS)
 production-quality
− lot of users
− lot of big installs
52
http://danga.com/words/
MogileFS: Why
 alternatives at time were either:
− closed, non-existent, expensive, in development,
complicated, ...
− scary/impossible when it came to data recovery
 new/uncommon/ unstudied on-disk formats
 because it was easy
− initial version = 1 weekend! :)
− current version = many, many weekends :)
53
http://danga.com/words/
MogileFS: Main Ideas
 files belong to classes,
which dictate:
− replication policy, min
replicas, ...
 tracks what disks files
are on
− set disk's state (up,
temp_down, dead)
and host
 keep replicas on devices
on different hosts
− (default class policy)
− No RAID!
− multiple tracker
databases
− all share same
database cluster
(MySQL, etc..)
 big, cheap disks
− dumb storage nodes
w/ 12, 16 disks, no
RAID
54
http://danga.com/words/
MogileFS components
 clients
 mogilefsd (does all real work)
 database(s) (MySQL, .... abstract)
 storage nodes
55
http://danga.com/words/
MogileFS: Clients
 tiny text-based protocol
 Libraries available for:
− Perl
 tied filehandles
 MogileFS::Client
− my $fh = $mogc->new_file(“key”, [[$class], ...])
− Java
− PHP
− Python?
− porting to $LANG is be trivial
− future: no custom protocol. only HTTP
 clients don't do database access
56
http://danga.com/words/
MogileFS: Tracker
(mogilefsd)
 The Meat
 event-based message bus
 load balances client requests, world info
 process manager
− heartbeats/watchdog, respawner, ...
 Child processes:
− ~30x client interface (“query” process)
 interfaces client protocol w/ db(s), etc
− ~5x replicate
− ~2x delete
− ~1x fsck, reap, monitor, ..., ...
57
http://danga.com/words/
Trackers' Database(s)
 Abstract as of Mogile 2.x
− MySQL
− SQLite (joke/demo)
− Pg/Oracle coming soon?
− Also future:
 wrapper driver, partitioning any above
− small metadata in one driver (MySQL Cluster?),
− large tables partitioned over 2-node HA pairs
 Recommend config:
− 2xMySQL InnoDB on DRBD
− 2 slaves underneath HA VIP
 1 for backups
 read-only slave for during master failover window
58
http://danga.com/words/
MogileFS storage nodes
(mogstored)
 HTTP transport
− GET
− PUT
− DELETE
 mogstored listens on 2 ports...
 HTTP. --server={perlbal,lighttpd,...}
 configs/manages your webserver of choice.
 perlbal is default. some people like apache, etc
− management/status:
 iostat interface, AIO control, multi-stat() (for faster
fsck)
 files on filesystem, not DB
− sendfile()! future: splice()
− filesystem can be any filesystem
59
http://danga.com/words/
Large file
GET
request
60
http://danga.com/words/
Large file
GET
request
Auth: complex, but quick
60
http://danga.com/words/
Large file
GET
request
Auth: complex, but quick
Spoonfeeding:
slow, but event-
based
60
http://danga.com/words/
Gearman
61
http://danga.com/words/
manaGer
62
http://danga.com/words/
Manager
dispatches work,
but doesn't do anything useful itself. :)
63
http://danga.com/words/
Gearman
 system to load balance function calls...
 scatter/gather bunch of calls in parallel,
 different languages,
 db connection pooling,
 spread CPU usage around your network,
 keep heavy libraries out of caller code,
 ...
 ...
64
http://danga.com/words/
Gearman Pieces
 gearmand
− the function call router
− event-loop (epoll, kqueue, etc)
 workers.
− Gearman::Worker – perl/ruby
− register/heartbeat/grab jobs
 clients
− Gearman::Client[::Async] -- perl
− also Ruby Gearman::Client
− submit jobs to gearmand
− opaque (to server) “funcname” string
− optional opaque (to server) “args” string
− opt coallescing key
65
http://danga.com/words/
Gearman Picture
66
http://danga.com/words/
Gearman Picture
gearmand gearmand gearmand
66
http://danga.com/words/
Gearman Picture
Worker Worker
gearmand gearmand gearmand
66
http://danga.com/words/
Gearman Picture
Worker Worker
gearmand gearmand gearmand
can_do(“funcA”)
can_do(“funcA”)
can_do(“funcB”)
66
http://danga.com/words/
Gearman Picture
Client Worker Worker
gearmand gearmand gearmand
can_do(“funcA”)
can_do(“funcA”)
can_do(“funcB”)
66
http://danga.com/words/
Gearman Picture
Client Worker Worker
gearmand gearmand gearmand
call(“funcA”)
can_do(“funcA”)
can_do(“funcA”)
can_do(“funcB”)
66
http://danga.com/words/
Gearman Picture
Client Client Worker Worker
gearmand gearmand gearmand
call(“funcA”)
can_do(“funcA”)
can_do(“funcA”)
can_do(“funcB”)
66
http://danga.com/words/
Gearman Picture
Client Client Worker Worker
gearmand gearmand gearmand
call(“funcA”)
call(“funcB”)
can_do(“funcA”)
can_do(“funcA”)
can_do(“funcB”)
66
http://danga.com/words/
Gearman Protocol
 efficient binary protocol
 No XML
 but also line-based text protocol for admin
commands
−telnet to gearmand and get status
−useful for Nagios plugins, etc
67
http://danga.com/words/
Gearman Uses
 Image::Magick outside of your mod_perls!
 DBI connection pooling (DBD::Gofer +
Gearman)
 reducing load, improving visibility
 “services”
− can all be in different languages, too!
68
http://danga.com/words/
Gearman Uses, cont..
 running code in parallel
− query ten databases at once
 running blocking code from event loops
− DBI from POE/Danga::Socket apps
 spreading CPU from ev loop daemons
 calling between different languages,
 ...
69
http://danga.com/words/
Gearman Misc
 Guarantees:
− none! hah! :)
 please wait for your results.
 if client goes away, no promises
− all retries on failures are done by client
 but server will notify client(s) if working worker
goes away.
 No policy/conventions in gearmand
− all policy/meaning between clients <-> workers
 ...
70
http://danga.com/words/
Sick Gearman Demo
 Don’t actually use it like this... but:
use strict;
use DMap qw(dmap);
DMap->set_job_servers("sammy", "papag");
my @foo = dmap { "$_ = " . `hostname` } (1..10);
print "dmap says:n @foo";
$ ./dmap.pl
dmap says:
1 = sammy
2 = papag
3 = sammy
4 = papag
5 = sammy
6 = papag
7 = sammy
8 = papag
9 = sammy
10 = papag
71
http://danga.com/words/
Gearman Summary
 Gearman is sexy.
− especially the coalescing
 Check it out!
− it's kinda our little unadvertised secret
 oh crap, did I leak the secret?
72
http://danga.com/words/
TheSchwartz
73
http://danga.com/words/
TheSchwartz
 Like gearman:
− job queuing system
− opaque function name
− opaque “args” blob
− clients are either:
 submitting jobs
 workers
 But unlike gearman:
− Reliable job queueing system
− not low latency
− fire & forget (as opposed to gearman, where you wait for
result)
 currently library, not network service
74
http://danga.com/words/
TheSchwartz Primitives
 insert job
 “grab” job (atomic grab)
− for 'n' seconds.
 mark job done
 temp fail job for future
− optional notes, rescheduling details..
 replace job with 1+ other jobs
− atomic.
 ...
75
http://danga.com/words/
TheSchwartz
 backing store:
− a database
− uses Data::ObjectDriver
 MySQL,
 Postgres,
 SQLite,
 ....
 but HA: you tell it @dbs, and it finds one to
insert job into
− likewise, workers foreach (@dbs) to do work
76
http://danga.com/words/
TheSchwartz uses
 outgoing email (SMTP client)
− millions of emails per day
− TheSchwartz::Worker::SendEmail
− Email::Send::TheSchwartz
 LJ notifications
− ESN: event, subscription, notification
 one event (new post, etc) -> thousands of emails, SMSes,
XMPP messages, etc...
 pinging external services
 atomstream injection
 .....
 dozens of users
 shared farm for TypePad, Vox, LJ
77
http://danga.com/words/
gearmand + TheSchwartz
 gearmand: not reliable, low-latency, no disks
 TheSchwartz: latency, reliable, disks
 In TypePad:
− TheSchwartz, with gearman to fire off TheSchwartz
workers.
 disks, but low-latency
 future: no disks, SSD/Flash, MySQL Cluster
78
http://danga.com/words/
djabberd
79
http://danga.com/words/
djabberd
 Our Jabber/XMPP server
 powers our “LJ Talk” service
 S2S: works with GoogleTalk, etc
 perl, event-based (epoll, etc)
 done 300,000+ conns
 tiny per-conn memory overhead
− release XML parser state if possible
80
http://danga.com/words/
djabberd hooks
 everything is a hook
− not just auth! like, everything.
− auth,
− roster,
− vcard info (avatars),
− presence,
− delivery,
− inter-node cluster delivery,
− ala mod_perl, qpsmtpd, etc.
 async hooks
− hooks phases can take as long as they want before
they answer, or decline to next phase in hook chain...
− we use Gearman::Client::Async
81
http://danga.com/words/
Thank you!
Questions to:
brad@danga.com
Software:
http://danga.com/
http://code.sixapart.com/
82
http://danga.com/words/
Questions?
User DB Cluster 1
uc1a uc1b
User DB Cluster 2
uc2a uc2b
User DB Cluster 3
uc3a uc3b
User DB Cluster N
ucNa ucNb
Job Queues (xN)
jqNa jqNb
Memcached
mc4
mc3
mc2
mcN
...
mc1
mod_perl
web4
web3
web2
webN
...
web1
BIG-IP
bigip2
bigip1
perlbal (httpd/proxy)
proxy4
proxy3
proxy2
proxy5
proxy1
Global Database
slave1
master_a master_b
slave2 ... slave5
MogileFS Database
mog_a mog_b
Mogile Trackers
tracker3tracker1
Mogile Storage Nodes
...
sto2
sto8
sto1
net.
djabberd
djabberd
djabberd
gearmand
gearmand1
gearmandN
“workers”
gearwrkN
theschwkN
slave1 slaveN
83
http://danga.com/words/
Bonus Slides
 if extra time
84
http://danga.com/words/
Data Integrity
 Databases depend on fsync()
− but databases can't send raw SCSI/ATA commands
to flush controller caches, etc
 fsync() almost never works work
− Linux, FS' (lack of) barriers, raid cards, controllers,
disks, ....
 Solution: test! & fix
− disk-checker.pl
 client/server
 spew writes/fsyncs, record intentions on alive machine,
yank power, checks.
85
http://danga.com/words/
Persistent Connection Woes
 connections == threads == memory
− My pet peeve:
 want connection/thread distinction in MySQL!
 w/ max-runnable-threads tunable
 max threads
− limit max memory/concurrency
 DBD::Gofer + Gearman
− Ask
 Data::ObjectDriver + Gearman
86

Mais conteúdo relacionado

Mais procurados

Debugging Network Issues
Debugging Network IssuesDebugging Network Issues
Debugging Network IssuesApcera
 
Python Deployment with Fabric
Python Deployment with FabricPython Deployment with Fabric
Python Deployment with Fabricandymccurdy
 
OSv at Cassandra Summit
OSv at Cassandra SummitOSv at Cassandra Summit
OSv at Cassandra SummitDon Marti
 
Testing Wi-Fi with OSS Tools
Testing Wi-Fi with OSS ToolsTesting Wi-Fi with OSS Tools
Testing Wi-Fi with OSS ToolsAll Things Open
 
Nuvola: a tale of migration to AWS
Nuvola: a tale of migration to AWSNuvola: a tale of migration to AWS
Nuvola: a tale of migration to AWSMatteo Moretti
 
Australian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackAustralian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackMatt Ray
 
Performance all teh things
Performance all teh thingsPerformance all teh things
Performance all teh thingsMarcus Deglos
 
Apache Traffic Server & Lua
Apache Traffic Server & LuaApache Traffic Server & Lua
Apache Traffic Server & LuaKit Chan
 
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014Amazon Web Services
 
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014Amazon Web Services
 
Openstack study-nova-02
Openstack study-nova-02Openstack study-nova-02
Openstack study-nova-02Jinho Shin
 
How we setup Rsync-powered Incremental Backups
How we setup Rsync-powered Incremental BackupsHow we setup Rsync-powered Incremental Backups
How we setup Rsync-powered Incremental Backupsnicholaspaun
 
Apache hadoop 3.x state of the union and upgrade guidance - Strata 2019 NY
Apache hadoop 3.x state of the union and upgrade guidance - Strata 2019 NYApache hadoop 3.x state of the union and upgrade guidance - Strata 2019 NY
Apache hadoop 3.x state of the union and upgrade guidance - Strata 2019 NYWangda Tan
 
Getting Started with Docker
Getting Started with DockerGetting Started with Docker
Getting Started with DockerGeeta Vinnakota
 
Zero-downtime Hadoop/HBase Cross-datacenter Migration
Zero-downtime Hadoop/HBase Cross-datacenter MigrationZero-downtime Hadoop/HBase Cross-datacenter Migration
Zero-downtime Hadoop/HBase Cross-datacenter MigrationScott Miao
 
Integrated Cache on Netscaler
Integrated Cache on NetscalerIntegrated Cache on Netscaler
Integrated Cache on NetscalerMark Hillick
 
Varnish http accelerator
Varnish http acceleratorVarnish http accelerator
Varnish http acceleratorno no
 
Reusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modulesReusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modulesYevgeniy Brikman
 
Advanced Apache Cassandra Operations with JMX
Advanced Apache Cassandra Operations with JMXAdvanced Apache Cassandra Operations with JMX
Advanced Apache Cassandra Operations with JMXzznate
 
Using Terraform.io (Human Talks Montpellier, Epitech, 2014/09/09)
Using Terraform.io (Human Talks Montpellier, Epitech, 2014/09/09)Using Terraform.io (Human Talks Montpellier, Epitech, 2014/09/09)
Using Terraform.io (Human Talks Montpellier, Epitech, 2014/09/09)Stephane Jourdan
 

Mais procurados (20)

Debugging Network Issues
Debugging Network IssuesDebugging Network Issues
Debugging Network Issues
 
Python Deployment with Fabric
Python Deployment with FabricPython Deployment with Fabric
Python Deployment with Fabric
 
OSv at Cassandra Summit
OSv at Cassandra SummitOSv at Cassandra Summit
OSv at Cassandra Summit
 
Testing Wi-Fi with OSS Tools
Testing Wi-Fi with OSS ToolsTesting Wi-Fi with OSS Tools
Testing Wi-Fi with OSS Tools
 
Nuvola: a tale of migration to AWS
Nuvola: a tale of migration to AWSNuvola: a tale of migration to AWS
Nuvola: a tale of migration to AWS
 
Australian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackAustralian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStack
 
Performance all teh things
Performance all teh thingsPerformance all teh things
Performance all teh things
 
Apache Traffic Server & Lua
Apache Traffic Server & LuaApache Traffic Server & Lua
Apache Traffic Server & Lua
 
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
(PFC306) Performance Tuning Amazon EC2 Instances | AWS re:Invent 2014
 
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014
 
Openstack study-nova-02
Openstack study-nova-02Openstack study-nova-02
Openstack study-nova-02
 
How we setup Rsync-powered Incremental Backups
How we setup Rsync-powered Incremental BackupsHow we setup Rsync-powered Incremental Backups
How we setup Rsync-powered Incremental Backups
 
Apache hadoop 3.x state of the union and upgrade guidance - Strata 2019 NY
Apache hadoop 3.x state of the union and upgrade guidance - Strata 2019 NYApache hadoop 3.x state of the union and upgrade guidance - Strata 2019 NY
Apache hadoop 3.x state of the union and upgrade guidance - Strata 2019 NY
 
Getting Started with Docker
Getting Started with DockerGetting Started with Docker
Getting Started with Docker
 
Zero-downtime Hadoop/HBase Cross-datacenter Migration
Zero-downtime Hadoop/HBase Cross-datacenter MigrationZero-downtime Hadoop/HBase Cross-datacenter Migration
Zero-downtime Hadoop/HBase Cross-datacenter Migration
 
Integrated Cache on Netscaler
Integrated Cache on NetscalerIntegrated Cache on Netscaler
Integrated Cache on Netscaler
 
Varnish http accelerator
Varnish http acceleratorVarnish http accelerator
Varnish http accelerator
 
Reusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modulesReusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modules
 
Advanced Apache Cassandra Operations with JMX
Advanced Apache Cassandra Operations with JMXAdvanced Apache Cassandra Operations with JMX
Advanced Apache Cassandra Operations with JMX
 
Using Terraform.io (Human Talks Montpellier, Epitech, 2014/09/09)
Using Terraform.io (Human Talks Montpellier, Epitech, 2014/09/09)Using Terraform.io (Human Talks Montpellier, Epitech, 2014/09/09)
Using Terraform.io (Human Talks Montpellier, Epitech, 2014/09/09)
 

Destaque

Optimizing Drupal Performance Zend Acquia Whitepaper Feb2010
Optimizing Drupal Performance Zend Acquia Whitepaper Feb2010Optimizing Drupal Performance Zend Acquia Whitepaper Feb2010
Optimizing Drupal Performance Zend Acquia Whitepaper Feb2010xlight
 
openid-pres
openid-presopenid-pres
openid-presxlight
 
http://www.hfadeel.com/Blog/?p=151
http://www.hfadeel.com/Blog/?p=151http://www.hfadeel.com/Blog/?p=151
http://www.hfadeel.com/Blog/?p=151xlight
 
Oracle ha
Oracle haOracle ha
Oracle haxlight
 
淘宝无线电子商务数据报告
淘宝无线电子商务数据报告淘宝无线电子商务数据报告
淘宝无线电子商务数据报告xlight
 
SpeedGeeks
SpeedGeeksSpeedGeeks
SpeedGeeksxlight
 
Google: The Chubby Lock Service for Loosely-Coupled Distributed Systems
Google: The Chubby Lock Service for Loosely-Coupled Distributed SystemsGoogle: The Chubby Lock Service for Loosely-Coupled Distributed Systems
Google: The Chubby Lock Service for Loosely-Coupled Distributed Systemsxlight
 
What does it take to make google work at scale
What does it take to make google work at scale What does it take to make google work at scale
What does it take to make google work at scale xlight
 

Destaque (8)

Optimizing Drupal Performance Zend Acquia Whitepaper Feb2010
Optimizing Drupal Performance Zend Acquia Whitepaper Feb2010Optimizing Drupal Performance Zend Acquia Whitepaper Feb2010
Optimizing Drupal Performance Zend Acquia Whitepaper Feb2010
 
openid-pres
openid-presopenid-pres
openid-pres
 
http://www.hfadeel.com/Blog/?p=151
http://www.hfadeel.com/Blog/?p=151http://www.hfadeel.com/Blog/?p=151
http://www.hfadeel.com/Blog/?p=151
 
Oracle ha
Oracle haOracle ha
Oracle ha
 
淘宝无线电子商务数据报告
淘宝无线电子商务数据报告淘宝无线电子商务数据报告
淘宝无线电子商务数据报告
 
SpeedGeeks
SpeedGeeksSpeedGeeks
SpeedGeeks
 
Google: The Chubby Lock Service for Loosely-Coupled Distributed Systems
Google: The Chubby Lock Service for Loosely-Coupled Distributed SystemsGoogle: The Chubby Lock Service for Loosely-Coupled Distributed Systems
Google: The Chubby Lock Service for Loosely-Coupled Distributed Systems
 
What does it take to make google work at scale
What does it take to make google work at scale What does it take to make google work at scale
What does it take to make google work at scale
 

Semelhante a usenix

Data processing at the speed of 100 Gbps@Apache Crail (Incubating)
Data processing at the speed of 100 Gbps@Apache Crail (Incubating)Data processing at the speed of 100 Gbps@Apache Crail (Incubating)
Data processing at the speed of 100 Gbps@Apache Crail (Incubating)DataWorks Summit
 
Knowledge share about scalable application architecture
Knowledge share about scalable application architectureKnowledge share about scalable application architecture
Knowledge share about scalable application architectureAHM Pervej Kabir
 
HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011Alessandro Nadalin
 
Scalable Web Architectures: Common Patterns and Approaches - Web 2.0 Expo NYC
Scalable Web Architectures: Common Patterns and Approaches - Web 2.0 Expo NYCScalable Web Architectures: Common Patterns and Approaches - Web 2.0 Expo NYC
Scalable Web Architectures: Common Patterns and Approaches - Web 2.0 Expo NYCCal Henderson
 
Samba Optimization and Speed Tuning f...
Samba Optimization and Speed Tuning f...Samba Optimization and Speed Tuning f...
Samba Optimization and Speed Tuning f...wensheng wei
 
9 DevOps Tips for Going in Production with Galera Cluster for MySQL - Slides
9 DevOps Tips for Going in Production with Galera Cluster for MySQL - Slides9 DevOps Tips for Going in Production with Galera Cluster for MySQL - Slides
9 DevOps Tips for Going in Production with Galera Cluster for MySQL - SlidesSeveralnines
 
Storage and performance- Batch processing, Whiptail
Storage and performance- Batch processing, WhiptailStorage and performance- Batch processing, Whiptail
Storage and performance- Batch processing, WhiptailInternet World
 
DrupalCampLA 2011: Drupal backend-performance
DrupalCampLA 2011: Drupal backend-performanceDrupalCampLA 2011: Drupal backend-performance
DrupalCampLA 2011: Drupal backend-performanceAshok Modi
 
Apache Hadoop 3.0 Community Update
Apache Hadoop 3.0 Community UpdateApache Hadoop 3.0 Community Update
Apache Hadoop 3.0 Community UpdateDataWorks Summit
 
Azure + DataStax Enterprise (DSE) Powers Office365 Per User Store
Azure + DataStax Enterprise (DSE) Powers Office365 Per User StoreAzure + DataStax Enterprise (DSE) Powers Office365 Per User Store
Azure + DataStax Enterprise (DSE) Powers Office365 Per User StoreDataStax Academy
 
Cache all the things #DCLondon
Cache all the things #DCLondonCache all the things #DCLondon
Cache all the things #DCLondondigital006
 
Clustered Architecture Patterns Delivering Scalability And Availability
Clustered Architecture Patterns Delivering Scalability And AvailabilityClustered Architecture Patterns Delivering Scalability And Availability
Clustered Architecture Patterns Delivering Scalability And AvailabilityConSanFrancisco123
 
Migrating and living on rds aurora
Migrating and living on rds auroraMigrating and living on rds aurora
Migrating and living on rds auroraBalazs Pocze
 
Spark Summit EU 2015: Lessons from 300+ production users
Spark Summit EU 2015: Lessons from 300+ production usersSpark Summit EU 2015: Lessons from 300+ production users
Spark Summit EU 2015: Lessons from 300+ production usersDatabricks
 
Optimizing Big Data to run in the Public Cloud
Optimizing Big Data to run in the Public CloudOptimizing Big Data to run in the Public Cloud
Optimizing Big Data to run in the Public CloudQubole
 
Hadoop Interview Questions and Answers by rohit kapa
Hadoop Interview Questions and Answers by rohit kapaHadoop Interview Questions and Answers by rohit kapa
Hadoop Interview Questions and Answers by rohit kapakapa rohit
 
Scalable Architecture 101
Scalable Architecture 101Scalable Architecture 101
Scalable Architecture 101Mike Willbanks
 
Web20expo Scalable Web Arch
Web20expo Scalable Web ArchWeb20expo Scalable Web Arch
Web20expo Scalable Web Archroyans
 

Semelhante a usenix (20)

Data processing at the speed of 100 Gbps@Apache Crail (Incubating)
Data processing at the speed of 100 Gbps@Apache Crail (Incubating)Data processing at the speed of 100 Gbps@Apache Crail (Incubating)
Data processing at the speed of 100 Gbps@Apache Crail (Incubating)
 
Scaling PHP apps
Scaling PHP appsScaling PHP apps
Scaling PHP apps
 
Knowledge share about scalable application architecture
Knowledge share about scalable application architectureKnowledge share about scalable application architecture
Knowledge share about scalable application architecture
 
HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011
 
Scalable Web Architectures: Common Patterns and Approaches - Web 2.0 Expo NYC
Scalable Web Architectures: Common Patterns and Approaches - Web 2.0 Expo NYCScalable Web Architectures: Common Patterns and Approaches - Web 2.0 Expo NYC
Scalable Web Architectures: Common Patterns and Approaches - Web 2.0 Expo NYC
 
Samba Optimization and Speed Tuning f...
Samba Optimization and Speed Tuning f...Samba Optimization and Speed Tuning f...
Samba Optimization and Speed Tuning f...
 
9 DevOps Tips for Going in Production with Galera Cluster for MySQL - Slides
9 DevOps Tips for Going in Production with Galera Cluster for MySQL - Slides9 DevOps Tips for Going in Production with Galera Cluster for MySQL - Slides
9 DevOps Tips for Going in Production with Galera Cluster for MySQL - Slides
 
Storage and performance- Batch processing, Whiptail
Storage and performance- Batch processing, WhiptailStorage and performance- Batch processing, Whiptail
Storage and performance- Batch processing, Whiptail
 
DrupalCampLA 2011: Drupal backend-performance
DrupalCampLA 2011: Drupal backend-performanceDrupalCampLA 2011: Drupal backend-performance
DrupalCampLA 2011: Drupal backend-performance
 
Apache Hadoop 3.0 Community Update
Apache Hadoop 3.0 Community UpdateApache Hadoop 3.0 Community Update
Apache Hadoop 3.0 Community Update
 
Azure + DataStax Enterprise (DSE) Powers Office365 Per User Store
Azure + DataStax Enterprise (DSE) Powers Office365 Per User StoreAzure + DataStax Enterprise (DSE) Powers Office365 Per User Store
Azure + DataStax Enterprise (DSE) Powers Office365 Per User Store
 
Demo 0.9.4
Demo 0.9.4Demo 0.9.4
Demo 0.9.4
 
Cache all the things #DCLondon
Cache all the things #DCLondonCache all the things #DCLondon
Cache all the things #DCLondon
 
Clustered Architecture Patterns Delivering Scalability And Availability
Clustered Architecture Patterns Delivering Scalability And AvailabilityClustered Architecture Patterns Delivering Scalability And Availability
Clustered Architecture Patterns Delivering Scalability And Availability
 
Migrating and living on rds aurora
Migrating and living on rds auroraMigrating and living on rds aurora
Migrating and living on rds aurora
 
Spark Summit EU 2015: Lessons from 300+ production users
Spark Summit EU 2015: Lessons from 300+ production usersSpark Summit EU 2015: Lessons from 300+ production users
Spark Summit EU 2015: Lessons from 300+ production users
 
Optimizing Big Data to run in the Public Cloud
Optimizing Big Data to run in the Public CloudOptimizing Big Data to run in the Public Cloud
Optimizing Big Data to run in the Public Cloud
 
Hadoop Interview Questions and Answers by rohit kapa
Hadoop Interview Questions and Answers by rohit kapaHadoop Interview Questions and Answers by rohit kapa
Hadoop Interview Questions and Answers by rohit kapa
 
Scalable Architecture 101
Scalable Architecture 101Scalable Architecture 101
Scalable Architecture 101
 
Web20expo Scalable Web Arch
Web20expo Scalable Web ArchWeb20expo Scalable Web Arch
Web20expo Scalable Web Arch
 

Mais de xlight

New zealand bloom filter
New zealand bloom filterNew zealand bloom filter
New zealand bloom filterxlight
 
Product manager-chrissyuan v1.0
Product manager-chrissyuan v1.0Product manager-chrissyuan v1.0
Product manager-chrissyuan v1.0xlight
 
Oracle 高可用概述
Oracle 高可用概述Oracle 高可用概述
Oracle 高可用概述xlight
 
Stats partitioned table
Stats partitioned tableStats partitioned table
Stats partitioned tablexlight
 
C/C++与Lua混合编程
C/C++与Lua混合编程C/C++与Lua混合编程
C/C++与Lua混合编程xlight
 
Google: The Chubby Lock Service for Loosely-Coupled Distributed Systems
Google: The Chubby Lock Service for Loosely-Coupled Distributed SystemsGoogle: The Chubby Lock Service for Loosely-Coupled Distributed Systems
Google: The Chubby Lock Service for Loosely-Coupled Distributed Systemsxlight
 
High Availability MySQL with DRBD and Heartbeat MTV Japan Mobile Service
High Availability MySQL with DRBD and Heartbeat MTV Japan Mobile ServiceHigh Availability MySQL with DRBD and Heartbeat MTV Japan Mobile Service
High Availability MySQL with DRBD and Heartbeat MTV Japan Mobile Servicexlight
 
PgSQL vs MySQL
PgSQL vs MySQLPgSQL vs MySQL
PgSQL vs MySQLxlight
 
GOOGLE: Designs, Lessons and Advice from Building Large Distributed Systems
GOOGLE: Designs, Lessons and Advice from Building Large   Distributed Systems GOOGLE: Designs, Lessons and Advice from Building Large   Distributed Systems
GOOGLE: Designs, Lessons and Advice from Building Large Distributed Systems xlight
 
sector-sphere
sector-spheresector-sphere
sector-spherexlight
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...xlight
 
Gfarm Fs Tatebe Tip2004
Gfarm Fs Tatebe Tip2004Gfarm Fs Tatebe Tip2004
Gfarm Fs Tatebe Tip2004xlight
 
Make Your web Work
Make Your web WorkMake Your web Work
Make Your web Workxlight
 
mogpres
mogpresmogpres
mogpresxlight
 
moscow_developer_day
moscow_developer_daymoscow_developer_day
moscow_developer_dayxlight
 

Mais de xlight (17)

New zealand bloom filter
New zealand bloom filterNew zealand bloom filter
New zealand bloom filter
 
Product manager-chrissyuan v1.0
Product manager-chrissyuan v1.0Product manager-chrissyuan v1.0
Product manager-chrissyuan v1.0
 
Oracle 高可用概述
Oracle 高可用概述Oracle 高可用概述
Oracle 高可用概述
 
Stats partitioned table
Stats partitioned tableStats partitioned table
Stats partitioned table
 
C/C++与Lua混合编程
C/C++与Lua混合编程C/C++与Lua混合编程
C/C++与Lua混合编程
 
Google: The Chubby Lock Service for Loosely-Coupled Distributed Systems
Google: The Chubby Lock Service for Loosely-Coupled Distributed SystemsGoogle: The Chubby Lock Service for Loosely-Coupled Distributed Systems
Google: The Chubby Lock Service for Loosely-Coupled Distributed Systems
 
High Availability MySQL with DRBD and Heartbeat MTV Japan Mobile Service
High Availability MySQL with DRBD and Heartbeat MTV Japan Mobile ServiceHigh Availability MySQL with DRBD and Heartbeat MTV Japan Mobile Service
High Availability MySQL with DRBD and Heartbeat MTV Japan Mobile Service
 
PgSQL vs MySQL
PgSQL vs MySQLPgSQL vs MySQL
PgSQL vs MySQL
 
GOOGLE: Designs, Lessons and Advice from Building Large Distributed Systems
GOOGLE: Designs, Lessons and Advice from Building Large   Distributed Systems GOOGLE: Designs, Lessons and Advice from Building Large   Distributed Systems
GOOGLE: Designs, Lessons and Advice from Building Large Distributed Systems
 
UDT
UDTUDT
UDT
 
sector-sphere
sector-spheresector-sphere
sector-sphere
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
 
Gfarm Fs Tatebe Tip2004
Gfarm Fs Tatebe Tip2004Gfarm Fs Tatebe Tip2004
Gfarm Fs Tatebe Tip2004
 
Make Your web Work
Make Your web WorkMake Your web Work
Make Your web Work
 
mogpres
mogpresmogpres
mogpres
 
moscow_developer_day
moscow_developer_daymoscow_developer_day
moscow_developer_day
 
OSGi
OSGiOSGi
OSGi
 

Último

What Could Cause Your Subaru's Touch Screen To Stop Working
What Could Cause Your Subaru's Touch Screen To Stop WorkingWhat Could Cause Your Subaru's Touch Screen To Stop Working
What Could Cause Your Subaru's Touch Screen To Stop WorkingBruce Cox Imports
 
Call Girls in Malviya Nagar Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts Ser...
Call Girls in Malviya Nagar Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts Ser...Call Girls in Malviya Nagar Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts Ser...
Call Girls in Malviya Nagar Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts Ser...Delhi Call girls
 
定制多伦多大学毕业证(UofT毕业证)成绩单(学位证)原版一比一
定制多伦多大学毕业证(UofT毕业证)成绩单(学位证)原版一比一定制多伦多大学毕业证(UofT毕业证)成绩单(学位证)原版一比一
定制多伦多大学毕业证(UofT毕业证)成绩单(学位证)原版一比一meq5nzfnk
 
Hot Modals Call Girls (Delhi) Dwarka9711199171✔️ High Class Service 100% Saf...
Hot Modals Call Girls (Delhi) Dwarka9711199171✔️ High Class  Service 100% Saf...Hot Modals Call Girls (Delhi) Dwarka9711199171✔️ High Class  Service 100% Saf...
Hot Modals Call Girls (Delhi) Dwarka9711199171✔️ High Class Service 100% Saf...shivangimorya083
 
Call me @ 9892124323 Call Girl in Andheri East With Free Home Delivery
Call me @ 9892124323 Call Girl in Andheri East With Free Home DeliveryCall me @ 9892124323 Call Girl in Andheri East With Free Home Delivery
Call me @ 9892124323 Call Girl in Andheri East With Free Home DeliveryPooja Nehwal
 
Hauz Khas Call Girls ☎ 7042364481 independent Escorts Service in delhi
Hauz Khas Call Girls ☎ 7042364481 independent Escorts Service in delhiHauz Khas Call Girls ☎ 7042364481 independent Escorts Service in delhi
Hauz Khas Call Girls ☎ 7042364481 independent Escorts Service in delhiHot Call Girls In Sector 58 (Noida)
 
83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar
83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar
83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagardollysharma2066
 
如何办理美国西雅图大学毕业证(Seattle毕业证书)成绩单(学位证)原版一比一
如何办理美国西雅图大学毕业证(Seattle毕业证书)成绩单(学位证)原版一比一如何办理美国西雅图大学毕业证(Seattle毕业证书)成绩单(学位证)原版一比一
如何办理美国西雅图大学毕业证(Seattle毕业证书)成绩单(学位证)原版一比一meq5nzfnk
 
꧁ ୨ Call Girls In Radisson Blu Plaza Delhi Airport, New Delhi ❀7042364481❀ Es...
꧁ ୨ Call Girls In Radisson Blu Plaza Delhi Airport, New Delhi ❀7042364481❀ Es...꧁ ୨ Call Girls In Radisson Blu Plaza Delhi Airport, New Delhi ❀7042364481❀ Es...
꧁ ୨ Call Girls In Radisson Blu Plaza Delhi Airport, New Delhi ❀7042364481❀ Es...Hot Call Girls In Sector 58 (Noida)
 
Bandra Escorts, (*Pooja 09892124323), Bandra Call Girls Services
Bandra Escorts, (*Pooja 09892124323), Bandra Call Girls ServicesBandra Escorts, (*Pooja 09892124323), Bandra Call Girls Services
Bandra Escorts, (*Pooja 09892124323), Bandra Call Girls ServicesPooja Nehwal
 
Lucknow 💋 (Genuine) Escort Service Lucknow | Service-oriented sexy call girls...
Lucknow 💋 (Genuine) Escort Service Lucknow | Service-oriented sexy call girls...Lucknow 💋 (Genuine) Escort Service Lucknow | Service-oriented sexy call girls...
Lucknow 💋 (Genuine) Escort Service Lucknow | Service-oriented sexy call girls...anilsa9823
 
Delhi Call Girls Vikaspuri 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Vikaspuri 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Vikaspuri 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Vikaspuri 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂
꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂
꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂Hot Call Girls In Sector 58 (Noida)
 
Hyundai World Rally Team in action at 2024 WRC
Hyundai World Rally Team in action at 2024 WRCHyundai World Rally Team in action at 2024 WRC
Hyundai World Rally Team in action at 2024 WRCHyundai Motor Group
 
Delhi Call Girls Safdarjung 9711199171 ☎✔👌✔Body to body massage with sex
Delhi Call Girls Safdarjung 9711199171 ☎✔👌✔Body to body massage with sexDelhi Call Girls Safdarjung 9711199171 ☎✔👌✔Body to body massage with sex
Delhi Call Girls Safdarjung 9711199171 ☎✔👌✔Body to body massage with sexshivangimorya083
 
Vip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp Number
Vip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp NumberVip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp Number
Vip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp Numberkumarajju5765
 
Delhi Call Girls Mayur Vihar 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Mayur Vihar 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Mayur Vihar 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Mayur Vihar 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
audience feedback draft 3.pptxxxxxxxxxxx
audience feedback draft 3.pptxxxxxxxxxxxaudience feedback draft 3.pptxxxxxxxxxxx
audience feedback draft 3.pptxxxxxxxxxxxMollyBrown86
 

Último (20)

What Could Cause Your Subaru's Touch Screen To Stop Working
What Could Cause Your Subaru's Touch Screen To Stop WorkingWhat Could Cause Your Subaru's Touch Screen To Stop Working
What Could Cause Your Subaru's Touch Screen To Stop Working
 
Call Girls in Malviya Nagar Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts Ser...
Call Girls in Malviya Nagar Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts Ser...Call Girls in Malviya Nagar Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts Ser...
Call Girls in Malviya Nagar Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts Ser...
 
定制多伦多大学毕业证(UofT毕业证)成绩单(学位证)原版一比一
定制多伦多大学毕业证(UofT毕业证)成绩单(学位证)原版一比一定制多伦多大学毕业证(UofT毕业证)成绩单(学位证)原版一比一
定制多伦多大学毕业证(UofT毕业证)成绩单(学位证)原版一比一
 
Stay Cool and Compliant: Know Your Window Tint Laws Before You Tint
Stay Cool and Compliant: Know Your Window Tint Laws Before You TintStay Cool and Compliant: Know Your Window Tint Laws Before You Tint
Stay Cool and Compliant: Know Your Window Tint Laws Before You Tint
 
Hot Modals Call Girls (Delhi) Dwarka9711199171✔️ High Class Service 100% Saf...
Hot Modals Call Girls (Delhi) Dwarka9711199171✔️ High Class  Service 100% Saf...Hot Modals Call Girls (Delhi) Dwarka9711199171✔️ High Class  Service 100% Saf...
Hot Modals Call Girls (Delhi) Dwarka9711199171✔️ High Class Service 100% Saf...
 
Call me @ 9892124323 Call Girl in Andheri East With Free Home Delivery
Call me @ 9892124323 Call Girl in Andheri East With Free Home DeliveryCall me @ 9892124323 Call Girl in Andheri East With Free Home Delivery
Call me @ 9892124323 Call Girl in Andheri East With Free Home Delivery
 
Hauz Khas Call Girls ☎ 7042364481 independent Escorts Service in delhi
Hauz Khas Call Girls ☎ 7042364481 independent Escorts Service in delhiHauz Khas Call Girls ☎ 7042364481 independent Escorts Service in delhi
Hauz Khas Call Girls ☎ 7042364481 independent Escorts Service in delhi
 
83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar
83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar
83778-77756 ( HER.SELF ) Brings Call Girls In Laxmi Nagar
 
如何办理美国西雅图大学毕业证(Seattle毕业证书)成绩单(学位证)原版一比一
如何办理美国西雅图大学毕业证(Seattle毕业证书)成绩单(学位证)原版一比一如何办理美国西雅图大学毕业证(Seattle毕业证书)成绩单(学位证)原版一比一
如何办理美国西雅图大学毕业证(Seattle毕业证书)成绩单(学位证)原版一比一
 
꧁ ୨ Call Girls In Radisson Blu Plaza Delhi Airport, New Delhi ❀7042364481❀ Es...
꧁ ୨ Call Girls In Radisson Blu Plaza Delhi Airport, New Delhi ❀7042364481❀ Es...꧁ ୨ Call Girls In Radisson Blu Plaza Delhi Airport, New Delhi ❀7042364481❀ Es...
꧁ ୨ Call Girls In Radisson Blu Plaza Delhi Airport, New Delhi ❀7042364481❀ Es...
 
Call Girls in Shri Niwas Puri Delhi 💯Call Us 🔝9953056974🔝
Call Girls in  Shri Niwas Puri  Delhi 💯Call Us 🔝9953056974🔝Call Girls in  Shri Niwas Puri  Delhi 💯Call Us 🔝9953056974🔝
Call Girls in Shri Niwas Puri Delhi 💯Call Us 🔝9953056974🔝
 
Bandra Escorts, (*Pooja 09892124323), Bandra Call Girls Services
Bandra Escorts, (*Pooja 09892124323), Bandra Call Girls ServicesBandra Escorts, (*Pooja 09892124323), Bandra Call Girls Services
Bandra Escorts, (*Pooja 09892124323), Bandra Call Girls Services
 
Lucknow 💋 (Genuine) Escort Service Lucknow | Service-oriented sexy call girls...
Lucknow 💋 (Genuine) Escort Service Lucknow | Service-oriented sexy call girls...Lucknow 💋 (Genuine) Escort Service Lucknow | Service-oriented sexy call girls...
Lucknow 💋 (Genuine) Escort Service Lucknow | Service-oriented sexy call girls...
 
Delhi Call Girls Vikaspuri 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Vikaspuri 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Vikaspuri 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Vikaspuri 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂
꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂
꧁༒☬ 7042364481 (Call Girl) In Dwarka Delhi Escort Service In Delhi Ncr☬༒꧂
 
Hyundai World Rally Team in action at 2024 WRC
Hyundai World Rally Team in action at 2024 WRCHyundai World Rally Team in action at 2024 WRC
Hyundai World Rally Team in action at 2024 WRC
 
Delhi Call Girls Safdarjung 9711199171 ☎✔👌✔Body to body massage with sex
Delhi Call Girls Safdarjung 9711199171 ☎✔👌✔Body to body massage with sexDelhi Call Girls Safdarjung 9711199171 ☎✔👌✔Body to body massage with sex
Delhi Call Girls Safdarjung 9711199171 ☎✔👌✔Body to body massage with sex
 
Vip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp Number
Vip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp NumberVip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp Number
Vip Hot Call Girls 🫤 Mahipalpur ➡️ 9711199171 ➡️ Delhi 🫦 Whatsapp Number
 
Delhi Call Girls Mayur Vihar 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Mayur Vihar 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Mayur Vihar 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Mayur Vihar 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
audience feedback draft 3.pptxxxxxxxxxxx
audience feedback draft 3.pptxxxxxxxxxxxaudience feedback draft 3.pptxxxxxxxxxxx
audience feedback draft 3.pptxxxxxxxxxxx
 

usenix