Upload
warwithin
View
195
Download
0
Tags:
Embed Size (px)
Citation preview
1Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Designing and ImplementingScalable Applications with Memcached and MySQL
Farhan "Frank" MashraqiDirector of Business Operations and Technical Strategy - Fotolog Inc
Monty TaylorSenior Consultant - Sun Microsystems
Jimmy GuerreroSr Product Marketing Manager - Sun Microsystems, Database Group
2Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
• Sun – MySQL Overview
• Technical Introduction
• Architectures
• Use Cases
• Solutions
• Next Steps plus Q & A
3Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
MySQL Helps Sun...
• Grow in a $15B database market
• Reach new customers
• Position its offerings for Web companies
• Deliver innovation to community & customers
• Complete its software platform offerings
Sun Helps MySQL…
• Expand market reach and revenue opportunities
• Enhance enterprise appeal with global services
• Enhance performance and integration
• Resources for accelerated growth
Sun Acquires MySQL
4Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
About MySQL
Leadership * Innovation * Open * Ubiquitous
• 12 years old
• 400+ employees
• 750 partners
• 60K downloads/day
• Customers across every major
operating system, hardware
vendor, geography, industry,
and application type
5Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Established & Emerging Companies
craigslist
Web 2.0
Enterprise 2.0
SaaS
Telecom
OEM & ISV
6Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Technical Introduction
Monty TaylorSenior Consultant - Sun Microsystems
7Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
“Cache is King”
• Browser Cache
• Web Server Cache
• Memcached Cache
• MySQL Database Cache
• Disk Storage
ms
8Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
What is Memcached?
“A high-performance, distributed memory object caching
system, generic in nature, but intended for use in speeding up
dynamic web applications by alleviating database load” *
* http://www.socialtext.net/memcached/index.cgi?faq
• Created by Danga Interactive to speed up LiveJournal’s 20
million+ dynamic page views per day for 1 million+ users
• Significantly dropped database load, delivering faster page
loads, better resource utilization, and faster access to
databases
• Perfect for dynamic sites that generate high database load
• Used by Facebook, YouTube, Wikipedia, others!
9Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
What is Memcached?
• Runs wherever RAM is available
– Application, Web, Database or dedicated memcached servers
– Low CPU utilization
– Multiple operating systems and architectures supported
• Open Source - Community Driven
• Memcached Server is licensed under BSD
• Current version is 1.2.x series
– http://www.danga.com/memcached/download.bml
• Various Client APIs and libraries available
– Perl, Python, Ruby, Java, C#, C, Lua, MySQL, more….
– http://www.danga.com/memcached/apis.bml
10Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Why Use Memcached With MySQL?
• Enables massive scale-out of dynamic web-sites
• Faster page loads
• Allows for more efficient use of existing database resources
• Can easily utilize idle computing resources
• Dozens to hundreds of nodes can be supported in a
memcached cluster
• No interconnect or proprietary networking required
• Extensible and customizable
11Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
How Does Memcached Work?
Hash Function
• A hash is a procedure for turning data into a small integer that serves as an index into an array
• Speeds up table lookup or data comparison tasks
Memcached
• Two-stage hash, like a giant hash table looking up key = value pairs
• Client hashes the key against a list of servers
• When the server is identified, the client sends its request
• Server performs a hash key lookup for the actual data
12Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Memcached Server
• Slab allocator
– Memory permanently allocated
– Classes created by chunk size
– Cannot reassign slab pages
• Libevent based
• Simple protocol (no xml)
• Server has internal hash table
• Servers know nothing about each other
13Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Memcached Server• Limits
– Key size (250 bytes)
– Data size (under 1 MB)
– 32bit/64bit (maximum size of process)
– Maxbytes (limits item cache)
• LRU
– Least recently accessed items are cycled out
– One LRU exists per “slab class”
– LRU “evictions” need not be common
• Threads
– New in version 1.2
– Big instances (16 GB+)
– Large multiget requests
14Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Memcached Commands
• set/get/replace
• append/prepend
• increment/decrement
• cas (compare and swap atomic)
• stats (detail)
15Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Memcached Clients
• Client hashes key to server list (distribution)
• Serializes the object
• Compresses data
• “Consistent hashing” client
• Other things to know about memcached…
– Dumping and loading data
– Redundancy
– Failover
– Authentication
16Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Basic Memcached Example
mc
ms
Client X
1) set key “foo” with value “seattle”
2) hashes the key against server list
3) Server B is selected
4) connects to Server B and sets key
Client Z
5) get key “foo”
6) connects to Server B
7) requests “foo” and gets value “seattle”
mc mc
X Y Z
ms ms
A B C
hash server list
select server
connect
set key value
get key
connect
get value
key = valuefoo = seattle
17Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Memcached vs MySQL Query Cache
• Distributed• Unlimited Size• Generic Data Storage• No Direct Invalidation• Maximum 1 MB
• Centralized (Single Server)• Limited by maximum addressable space of mysqld• Database data only• Invalidated by any write on tables used in SELECT• Configurable per item
ms ms ms
18Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Memcached vs MySQL Cluster
• Distributed• Unlimited Size• Generic Data Storage• No Direct Invalidation• Maximum 1 MB
• Distributed• Limited Size• Datatype storage limits• No invalidation (DELETE instead)• HA and Redundant• SQL and NDB API support
ms ms ms
Application Nodes(NDB API and/or MySQL Server)
Data Nodes
ManagementNode
NDB Storage Engine
19Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Architectures
20Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Memcached & MySQL
Web Servers
Application Servers
MemcachedServers
MySQL Server
MemcachedClients mc mc
ms
read write
mc
ms ms
cache update
21Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
On-Demand Read Scalability for MySQL
MySQL Replication
• Designed for on-demand read scalability
• Cost-effective alternative to Scale-Up
• Asynchronous replication
• Statement or row-level replication support
• No special networking components
• Fully-supported via MySQL Enterprise subscription
• Enterprise Monitor discovers and monitors replication
topologies
22Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
MySQL Replication – Scale-Out
reads
reads
MySQLReplication
writes
MySQL ReplicationWeb/AppServers
23Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Memcached & MySQL Replication
Application Servers &
Memcached Clients
MySQLSlaves
MySQLMaster
read from cache write
mc
MemcachedServers ms
mc
cache update
MySQLReplication
mc
read from slave
ms ms
24Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Sharding - Application Partitioning
Cust_id 1-999
Cust_id 1000-1999
Cust_id 2000-2999
Web/AppServers
Sharding Architecture
25Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Memcached, Sharding & MySQL Replication
msms
cache update
MySQLReplication
msms msms msms
cache update
MySQLReplication
msms msms
shard 1 (cust 1-999) shard 2 (cust 1000-1999)
read from cache
write
mc mc mc
read from slave
write
read from slave
read from cache
read from slave
write
read from cache
26Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Use Cases
Farhan "Frank" MashraqiDirector of Business Operations and Technical Strategy
Fotolog Inc
27Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Fotolog Introduction• World’s largest photo blogging community
– > 18 million members
– > 155 million page views
• Ranked top 57 site
– 13th before Alexa changed ranking algorithm
28Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Memcached @ Fotolog
• 51 instances on 21 servers
• ~254G available to memcached servers
• ~175G in use
• Cache everything that is slow to query, fetch or
calculate
29Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Memcached Use Cases
• Non-deterministic cache: Classic memcached model
• “State” cache
• Deterministic cache
• Proactive cache
• Replacement/add-on for file system cache
• Partial page cache
• Application-based memcached replication
30Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Non-Deterministic Cache:
Classic Memcached Model
• Check memcached, check database, then populate memcached
• Previously using classic implementation: – App servers running memcached on “spare” memory
• 90% CPU usage
• Memory garbage collected nearly once a minute
• Experienced blocking on memcached on app servers
• 45 memcached instances dedicated to non-deterministic cache– Each instance (on average):
• ~440 gets per second
• ~40 sets per second
• ~11 gets/set
31Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Non-Deterministic Cache:
Classic Memcached Model
• Ideal for:
– Caching objects that are to be queried several times
– Replacement for MySQL’s query cache
– Caching relationships and other lists
– Slow data that’s used across many pages
– Don’t cache if its more taxing to cache than you’ll save
– Tag clouds and auto-suggest lists
32Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
State Caching
• “Who’s online?”
• ~9G dedicated
• Multiple instances
• Ideal for caching:
– Sessions
– Current state of users
• Especially for IM applications
33Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Deterministic Cache
• Memcached has what database has…read scalability
• Multiple dedicated cache pools
• Cache has to be populated when the site “starts”– Maintained by application from that point onwards
– ~ 90,000 gets / second across cache cluster
– ~ 300 sets / second
– get/set ratio of ~ 300
• Ideal for caching:– Heavily accessed data/objects/lists
– User credentials
– User profiles
– User preferences
– Active media belonging to users
– Outsourcing logins to memcached
34Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Proactive Caching
• “It’s magically there”
• Fun with binlogs
– Easier to implement for UPDATEs
– A little bit of extra logic required for INSERTs
– DELETEs can be honored easily
• Ideal for
– Pre-Populating Cache: Keeping memcached updated
minimizes calls to database if object not present
– “Warm up” cache in cases of cross data-center replication
35Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Proactive Caching
• Fun with UDFs
• Memcached UDFs for MySQL
– Major contributing author: Patrick Galbraith
– Allows you to manage memcached when used with triggers.
– Implemented using libmemcached
– Compatible with all versions of MySQL
– Examples:
• memc_servers_set()
• memc_set()
• memc_get()
• memc_delete()
• memc_increment()
• memc_decrement()
• memc_replace()
• Complete list available at
– http://tangent.org/586/Memcached_Functions_for_MySQL.html
36Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Proactive Caching
• Fun with blackhole– thanks to Brian Aker
• Create a blackhole table– CREATE TABLE blackhole_table … ENGINE=blackhole;
• Replicate this table
• Add triggers at right places.
• Example: Make multiple INSERTs– INSERT <real_insert>;
– INSERT INTO blackhole_table VALUES (memc_set(id));
• Benefits– Actual data is not sent to slave disks
– Not CPU intensive for slaves
37Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Add-on/Replacement for NFS File System Cache
• NFS has a significant overhead
– File system cache for NFS systems not enough
• Ideal for caching:
– XML files
– Small size media stored on NFS mounts
38Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Partial Page Caching
• Certain partial page elements are…
– Very costly to generate
– Shared among many pages
– Viewed several times
• Examples:
– Top users within a region
– Popular photo lists
– Featured users
• Once generated these can be shared
39Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Application-Based Memcached Replication
• Ideal for deterministic cache cluster
• Redundancy
– Application writes to multiple memcached pools
• High availability
– Take node out of rotation
40Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Memcached Wishlist
• “Built-in” replication
• Integration with binary logs
• A “hybrid” storage engine?
• Production support
– Now fulfilled thanks to Sun/MySQL
41Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Solutions
Jimmy GuerreroSr Product Marketing Manager
Sun Microsystems - Database Group
42Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Memcached for MySQL
• Support is built into your MySQL Enterprise subscription
http://www.mysql.com/products/enterprise/memcached.html
• MySQL Enterprise– 24x7 Production Support
– Enterprise Monitor
– MySQL Enterprise Server
– Additional Add-ons Available
• MySQL Professional Services– MySQL Scale, High-Availability and Replication Jumpstart
43Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
MySQL Enterprise
Deploy and monitor an unlimited number of servers for the
price of a single CPU of Oracle
MySQL Enterprise
MySQLEnterpriseServer
MySQLEnterpriseMonitor
24x7ProductionSupport
MySQLEnterpriseUnlimited
Enterprise database and monitoring software, plus
production support delivered in an annual subscription
44Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Why MySQL Enterprise?
• Deliver on SLAs
• Increase availability
• Optimize performance
• Effectively monitor scale-out environments
• Faster time to launch
• Develop & deliver on proven open source components
• Keep costs predictable
45Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
MySQL Enterprise Monitor
• Consolidated view of entire MySQL environment
• Auto discovery of MySQL Servers & replication topologies
• Over 100 customizable rules for monitoring and alerting
• Identifies problems before they occur
• Reduces risk of downtime
• Improve delivery of SLAs
• Scale-out with less DBAs
46Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Why Memcached with MySQL?
• Enables massive scale-out of dynamic web-sites
• Faster page loads
• Allows for more efficient use of existing database resources
• Can easily utilize idle computing resources
• Dozens to hundreds of nodes can be supported in a
memcached cluster
• No interconnect or proprietary networking required
• Extensible and customizable
47Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Next Steps
Memcached for MySQL -
http://www.mysql.com/products/enterprise/memcached.html
Whitepapers - http://www.mysql.com/why-mysql/white-papers/
• “Designing and Implementing Scalable Applications with Memcached and MySQL”
• “How MySQL Powers Web 2.0”• “Enabling Enterprise 2.0 with MySQL”
Documentation -
http://dev.mysql.com/doc/refman/5.1/en/ha-memcached.html
Discussion Forum - http://forums.mysql.com/list.php?150
Miscellaneous Resources -
http://www.mysql.com/products/enterprise/memcached.html
48Copyright 2008 MySQL AB The World’s Most Popular Open Source Database
Questions?
Farhan "Frank" MashraqiDirector of Business Operations and Technical Strategy - Fotolog Inc
Monty TaylorSenior Consultant - Sun Microsystems
Jimmy GuerreroSr Product Marketing Manager - Sun Microsystems, Database Group