: Flexible Database Clustering Middleware

37
ix Annual Conference, Freenix track – June 2004 – [email protected] 1 : Flexible Database Clustering Middleware Emmanuel Cecchet – INRIA Julie Marguerite – ObjectWeb Willy Zwaenepoel – EPFL

description

Emmanuel Cecchet – INRIA Julie Marguerite – ObjectWeb Willy Zwaenepoel – EPFL. : Flexible Database Clustering Middleware. JDBC. JDBC. Motivations. Database tier should be scalable highly available without modifying the client application database vendor independent - PowerPoint PPT Presentation

Transcript of : Flexible Database Clustering Middleware

Page 1: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 1

: Flexible

Database Clustering Middleware

Emmanuel Cecchet – INRIA Julie Marguerite – ObjectWeb

Willy Zwaenepoel – EPFL

Page 2: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 2

Internet

Database tier should be– scalable

– highly available

– without modifying the client application

– database vendor independent

– on commodity hardware

Motivations

JDBC

JDBCJDBC

Page 3: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 3

Scaling the database tier – Alternative 1 (master-slave)

Internet

Web frontend

App. server

Cons– failover time on master failure– scalability

Master

Page 4: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 4

Scaling the database tier – Alternative 2 (SMP)

Internet

Web frontend

App. server

Well-known database

vendor here

Database

Well-known hardware +database vendors here

Cons– Cost

– Scalability limit

Page 5: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 5

Scaling the database tier – Alternative 3 (shared disks)

Internet

Web frontend

App. server Database Disks

Another well-knowndatabase vendor

Cons– still expensive hardware– availability

Page 6: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 6

Outline

C-JDBC architectureHigh availabilityUse casesConclusion

Page 7: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 7

architectural overview

JVM

Applicationserver

MySQL JDBC driver

MySQLdatabase

C-JDBC JDBC driver

C-JDBCcontroller

JVM

Page 8: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 8

basic concepts

2 components– C-JDBC driver– C-JDBC controller– 100% Java implementation

Read-one, Write all approachTunable replication

– full partitioning– full replication– partial replication

Page 9: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 9

C-JDBC Controller

MySQL

C-JDBC driver

MySQL

Virtual database 1

Database Backend

Connection Manager

Database Backend

Connection Manager

Request Manager

Query result cache

Scheduler

Load balancer

MySQL JDBC driver

MySQL JDBC driver

Recovery Log

Authentication Manager

MySQL

Database Backend

Connection Manager

MySQL JDBC driver

C-JDBC driver

Client application (Servlet, EJB, ...)

Client application (Servlet, EJB, ...)

Functional overview

connect myDBconnect login, passwordexecute SELECT * FROM t

Page 10: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 10

C-JDBC Controller

MySQL

C-JDBC driver

MySQL

Virtual database 1

Database Backend

Connection Manager

Database Backend

Connection Manager

Request Manager

Query result cache

Scheduler

Load balancer

MySQL JDBC driver

MySQL JDBC driver

Recovery Log

Authentication Manager

MySQL

Database Backend

Connection Manager

MySQL JDBC driver

C-JDBC driver

Client application (Servlet, EJB, ...)

Client application (Servlet, EJB, ...)

Functional overview

execute INSERT INTO t …

Page 11: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 11

Outline

C-JDBC architectureHigh availabilityUse casesConclusion

Page 12: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 12

C-JDBC Controller

MySQL

C-JDBC driver

MySQL

Virtual database 1

Database Backend

Connection Manager

Database Backend

Connection Manager

Request Manager

Query result cache

Scheduler

Load balancer

MySQL JDBC driver

MySQL JDBC driver

Recovery Log

Authentication Manager

MySQL

Database Backend

Connection Manager

MySQL JDBC driver

C-JDBC driver

Client application (Servlet, EJB, ...)

Client application (Servlet, EJB, ...)

Failures

No 2 phase-commit– parallel

transactions– failed nodes are

automatically disabled

execute INSERT INTO t …

Page 13: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 13

Restoring a backend

Updates stored in the recovery log

Database dumps associated to checkpoints

...

dump for last

checkpoint

PostgreSQL

C-JDBC Controller

PostgreSQL JDBC driver

C-JDBC driver

JVM

EJB Container JOnAS, WebLogic,

JBoss, WebSphere, ...

dump for last

checkpoint

Recovery Log

Octopus

PostgreSQL PostgreSQLenabled

enabled

JDBC Recovery Log

enabledrestoring

dump for initial

checkpoint

Page 14: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 14

Synchronization

Replay missing updates from log

dump for

checkpoint

Octopus...

dump for last

checkpoint

dump for last

checkpoint

dump for initial

checkpoint

PostgreSQL

C-JDBC Controller

PostgreSQL JDBC driver

C-JDBC driver

JVM

EJB Container JOnAS, WebLogic,

JBoss, WebSphere, ...

Recovery Log

PostgreSQL PostgreSQLenabled

enabled

JDBC Recovery Log

synchronizing enabled

Page 15: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 15

Healed Cluster

Re-enable backend when done

PostgreSQL

C-JDBC Controller

PostgreSQL JDBC driver

C-JDBC driver

JVM

EJB Container JOnAS, WebLogic,

JBoss, WebSphere, ...

dump for

checkpoint

Recovery Log

Octopus

PostgreSQL PostgreSQLenabled

enabled

JDBC Recovery Log

enabledenabled

...

dump for last

checkpoint

dump for last

checkpoint

dump for initial

checkpoint

Page 16: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 16

Vertical scalability

Addresses JVM scalability issues

Distributing large number of connections on many backends

DB 4DB 3

DB native JDBC driver

DB 5

C-JDBC driver

DB 1 DB 2

DB native JDBC driver

DB 6

DB native JDBC driver

DB7

C-JDBC controller Partial replication

C-JDBC controller Partial replication

C-JDBC controller Partial replication

C-JDBC controller Partial replication

C-JDBC driverJVM

Client program C-JDBC

driver

JVM

Client program

C-JDBC driver

JVM

Client program

Page 17: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 17

Controller replication

Prevent the controller from being a single point of failure

Group communication for controller synchronization

MySQL PostgreSQL

C-JDBC Controller

MySQL JDBC driver

PostgreSQL JDBC driver

C-JDBC driver

JVM

Java client program

C-JDBC driver

JVM

Java client program

C-JDBC driver

JVM

Java client program

C-JDBC driver

JVM

Java client program

C-JDBC Controller

JGroups

MySQLPostgreSQL

MySQL JDBC driver

PostgreSQL JDBC driver

Page 18: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 18

Controller replication

C-JDBC Controller

Distributed Request Manager

C-JDBC Controller

Distributed Request Manager

MySQL

C-JDBC driver

MySQL

Virtual database 1

Database Backend

Connection Manager

Database Backend

Connection Manager

MySQL JDBC driver

MySQL JDBC driver

Virtual database 2

Database Backend

Connection Manager

Database Backend

Connection Manager

Request Manager

Query result cache

Scheduler

Load balancer

Authentication Manager

Oracle JDBC driver

OracleMySQL

MySQL JDBC driver

C-JDBC driver

Client application (Servlet, EJB, ...)

C-JDBC driver

Client application (Servlet, EJB, ...)

Client application (Servlet, EJB, ...)

Request Manager

Query result cache

Scheduler

Load balancer

Authentication Manager

jdbc:cjdbc://node1,node2/myDB

Total order reliable multicast

Page 19: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 19

Mixing horizontal & vertical scalability

DB 6DB 5

DB native JDBC driver

DB 7

C-JDBC driver

DB 1 DB 2

DB native JDBC driver

DB 3

DB native JDBC driver

DB 4

C-JDBC controller Full replication

C-JDBC controller Full replication

C-JDBC controller Full replication

C-JDBC controller Full replication

C-JDBC driverJVM

Client program

C-JDBC driver

JVM

Client program

C-JDBC driver

JVM

Client program

C-JDBC driver

C-JDBC driver

Page 20: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 20

Current limitations

Replication granularity is tableNo distributed joinsNetwork partition with replicated

controllersJDBC only

– support of PHP, Perl, ODBC through wrappers or bridges– partial support of JDBC 3.0

Page 21: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 21

Other features

SSL supportSupport for heterogeneous databasesSQL monitoringJMX based administration consoleRequest player

Page 22: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 22

Outline

C-JDBC architectureHigh availabilityUse casesConclusion

Page 23: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 23

Budget High Availability

High availability infrastructure “on a budget”

Typical eCommercesetup

http://www.budget-ha.com

Page 24: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 24

OpenUSS: University Support System

eLearningHigh availabilityPortability

– Linux, HP-UX, Windows

– InterBase, Firebird, PostgreSQL, HypersonicSQL

http://openuss.sourceforge.net

Firebird

C-JDBC Controller Full replication

Firebird JDBC driver

Firebird

C-JDBC driver

JVM

C-JDBC driver

JVM

C-JDBC Controller Full replication

Firebird JDBC driver

C-JDBC driver

JVM

JOnAS J2EE server

C-JDBC driver

JVM

Enhydra server

OpenUSS OpenUSS OpenUSS OpenUSS

Enhydra Director

Apache

JOnAS J2EE server

Enhydra server

JOnAS J2EE server

Enhydra server

JOnAS J2EE server

Enhydra server

Enhydra Director

Apache

Enhydra Director

Apache

Page 25: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 25

Flood alert system

Disaster recovery Independent nodes synchronized with C-JDBC VPN for security issues

http://floodalert.org

MySQL

C-JDBC Controller Full replication

MySQL JDBC driver

C-JDBC driver

JBoss J2EE server

Flood alert system

MySQL

C-JDBC Controller Full replication

MySQL JDBC driver

C-JDBC driver

JBoss J2EE server

Flood alert system

MySQL

C-JDBC Controller Full replication

MySQL JDBC driver

C-JDBC driver

JBoss J2EE server

Flood alert system

> 1000 miles

Page 26: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 26

J2EE benchmarking

Large scaleJ2EE clusters

http://jmob.objectweb.org

Internet

emulated users

Page 27: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 27

Outline

C-JDBC architectureHigh availabilityUse casesConclusion

Page 28: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 28

Conclusion

C-JDBC: Flexible Database Clustering Middleware

–scalable–highly available –without modifying the client application–database vendor neutral–on commodity hardware

LPGL software hosted by ObjectWeb

Page 29: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 29

Q&A_________

Thanks to all users and contributors ...

http://c-jdbc.objectweb.org

Page 30: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 30

TPC-W benchmark(Amazon.com)

Nearly linear speedups with the shopping mix

0

200

400

600

800

1000

1200

1400

1600

0 1 2 3 4 5 6

Number of nodes

Th

rou

gh

pu

t in

req

ues

ts p

er m

inu

te

Single Database

Full replication

Partial replication

Page 31: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 31

Result cache

Cache contains a list of SQL->ResultSetPolicy defined by queryPattern->Policy3 policies

– EagerCaching: variable granularities for invalidations– RelaxedCaching: invalidations based on timeout– NoCaching: never cached

RUBiS bidding mixwith 450 clients

No cache Coherentcache

Relaxedcache

Throughput (rq/min) 3892 4184 4215

Avg response time 801 ms 284 ms 134 ms

Database CPU load 100% 85% 20%

C-JDBC CPU load - 15% 7%

Page 32: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 32

Recovery log

All updates are stored in the recovery log

Database dumps associated to checkpoints

PostgreSQL

C-JDBC Controller

PostgreSQL JDBC driver

C-JDBC driver

JVM

EJB Container JOnAS, WebLogic,

JBoss, WebSphere, ...

dump for initial

checkpoint

Recovery Log

Octopus

PostgreSQL PostgreSQLenabled

enabled

JDBC Recovery Log

enabledenabled

Page 33: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 33

Making new checkpoints

Disable one backend to have a coherent snapshot

Mark the new checkpoint entry in the log

Use Octopus to store the dump

...

dump for last

checkpoint

PostgreSQL

C-JDBC Controller

PostgreSQL JDBC driver

C-JDBC driver

JVM

EJB Container JOnAS, WebLogic,

JBoss, WebSphere, ...

dump for last

checkpoint

Recovery Log

Octopus

PostgreSQL PostgreSQLenabled

enabled

JDBC Recovery Log

enabledcheckpointing

dump for initial

checkpoint

Page 34: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 34

Making new checkpoints

Replay missing updates from log

dump for

checkpoint

Octopus...

dump for last

checkpoint

dump for last

checkpoint

dump for initial

checkpoint

PostgreSQL

C-JDBC Controller

PostgreSQL JDBC driver

C-JDBC driver

JVM

EJB Container JOnAS, WebLogic,

JBoss, WebSphere, ...

Recovery Log

PostgreSQL PostgreSQLenabled

enabled

JDBC Recovery Log

synchronizing enabled

Page 35: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 35

Making new checkpoints

Re-enable backend when done

PostgreSQL

C-JDBC Controller

PostgreSQL JDBC driver

C-JDBC driver

JVM

EJB Container JOnAS, WebLogic,

JBoss, WebSphere, ...

dump for

checkpoint

Recovery Log

Octopus

PostgreSQL PostgreSQLenabled

enabled

JDBC Recovery Log

enabledenabled

...

dump for last

checkpoint

dump for last

checkpoint

dump for initial

checkpoint

Page 36: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 36

Handling a backend failure

A node fails!Automatically

disabled but should be fixed or changed by administrator

PostgreSQL

C-JDBC Controller

PostgreSQL JDBC driver

C-JDBC driver

JVM

EJB Container JOnAS, WebLogic,

JBoss, WebSphere, ...

dump for

checkpoint

Recovery Log

Octopus

PostgreSQL PostgreSQLenabled

enabled

JDBC Recovery Log

enableddisabled

...

dump for last

checkpoint

dump for last

checkpoint

dump for initial

checkpoint

Page 37: : Flexible Database Clustering Middleware

Usenix Annual Conference, Freenix track – June 2004 – [email protected] 37

Fault tolerant recovery log

C-JDBC Controller

MySQL MySQL

Application virtual database

Database Backend

Database Backend

Request Manager

Request Cache

Scheduler

Load balancer

Recovery Log

Authentication Manager

MySQL

Database Backend

Recovery virtual database

Request Manager

SchedulerLoad balancer

Authentication Manager

C-JDBC driver

Client application (Servlet, EJB, ...)

Checkpointing service

Database Backend

Database Backend

C-JDBC driver

MySQL

UPDATE statement