riak intro with azure

37
& Thursday, March 7, 13

Upload: adron-hall

Post on 15-Jan-2015

305 views

Category:

Technology


1 download

DESCRIPTION

This slide deck is the part of the talk, generally centered around the topics and details of the Riak Architecture & related material. It currently doesn't have the Azure sample commands or other elements around that, as it is the live part of the presentation. I'll likely add these parts in the future though.

TRANSCRIPT

Page 1: Riak   intro with azure

&

Thursday, March 7, 13

Page 2: Riak   intro with azure

#WHOISAdron Hall | @adron | Coder, Messenger, Recon

Thursday, March 7, 13

Page 3: Riak   intro with azure

芭蕉

Thursday, March 7, 13

Page 4: Riak   intro with azure

Thursday, March 7, 13

Page 5: Riak   intro with azure

Thursday, March 7, 13

Page 6: Riak   intro with azure

Distributed, masterless, highly-available key/value store

Thursday, March 7, 13

Page 7: Riak   intro with azure

Horizontal Scalability

Fault-Tolerance

Low-latency

Ops Friendliness

Predictability

High-Availability

DESIGN GOALS

Thursday, March 7, 13

Page 8: Riak   intro with azure

When to use Riak...

Thursday, March 7, 13

Page 9: Riak   intro with azure

Metadata Users/Profiles

Object StorageSession Storage

Sensor Data Logging Systems

Record SystemsNotification Systems

RIAK USE CASES

Thursday, March 7, 13

Page 10: Riak   intro with azure

IN PRODUCTION AT

And 1000s more...

Thursday, March 7, 13

Page 11: Riak   intro with azure

DATA MODEL

Thursday, March 7, 13

Page 12: Riak   intro with azure

{“Key”:“Value”}

• Values are stored against keys

• Key/Value + Metadata = Object

• Fundamental Unit of Replication

• Any Datatype will work

• Record to disk in binary format

Thursday, March 7, 13

Page 13: Riak   intro with azure

<<BUCKET>>/<<KEY>>

• Virtual Namespace

• Bucket + Keys = Object Address

• Buckets have properties

• Objects in bucket inherit properties

• No relationships between buckets

Thursday, March 7, 13

Page 14: Riak   intro with azure

DATA ACCESS

Thursday, March 7, 13

Page 15: Riak   intro with azure

INTERFACES

HTTP API - Via a little piece of magic called Webmachine

Protocol Buffers API - Thanks, Google!

Largely-faithful REST implementation

Compact, binary protocol

Thursday, March 7, 13

Page 16: Riak   intro with azure

CLIENT LIBSPython

Ruby

PHP

OCaml

Java

Perl

Erlang

Node.js

C/C++

Haskell

Clojure

Scala

Go Dart

.NET

And more. Supported by either Basho or our community.

Thursday, March 7, 13

Page 17: Riak   intro with azure

RIAK GIVES YOU [FOUR] WAYS TO STORE, RETRIEVE, AND QUERY

DATA

Thursday, March 7, 13

Page 18: Riak   intro with azure

123456789101112131415161718

CRUD

// PUTPUT  /buckets/bucket/keys/key            //  User-­‐defined  key

POST  /buckets/bucket/keys/key        //  Riak-­‐defined  key

DELETE  /buckets/bucket/keys/key      

GET  /buckets/bucket/keys/key        

// GET

// DELETE

Thursday, March 7, 13

Page 19: Riak   intro with azure

MapReduce

Distributed processing system using Riak Pipe

Efficient for targeted queries over known key range

Write jobs in Erlang or JS. (Erlang more performant)

Thursday, March 7, 13

Page 20: Riak   intro with azure

Secondary Indexing (2i)

riak_object

riak_object

X-Riak-Index-email_bin

X-Riak-Index-value_int

[email protected]

“42”

Tag objects with custom metadata on PUT...Exact match and range queries...No multi-index queries yet...

Pagination is on its way...

Thursday, March 7, 13

Page 21: Riak   intro with azure

Riak Search

Store and index documents (JSON, text, XML, etc)

Current Riak Search supports subset of Solr API

Next iteration (Yokozuna; in beta)will implement distributed Solr on Riak. It will be sexy.

Looking for beta testers to help harden Yokozuna

Thursday, March 7, 13

Page 22: Riak   intro with azure

ARCHITECTURE

The scaleability and ease of operation goals inform architectural decisions.

These come with tradeoffs.

Consistent Hashing

Virtual Nodes

Append-only storage

Handoff/Rebalancing

Vector Clocks

Active Anti-Entropy*

Thursday, March 7, 13

Page 23: Riak   intro with azure

Consistent Hashing

Location of data in the Riak ring is determined based on hash of bucket + key.

Provides even distribution of storage and query load

Trades off advantages gained from locality

- e.g. Range queries and aggregates

Thursday, March 7, 13

Page 24: Riak   intro with azure

Consistent Hashing

Thursday, March 7, 13

Page 25: Riak   intro with azure

Virtual Nodes

Unit of addressing and concurrency in Riak

Each physical host manage many vnodes Partition count / physical machines = vnodes/machine*

Decouples physical assets from data distribution. This provides:

- simplicity in cluster sizing - failure isolation

Thursday, March 7, 13

Page 26: Riak   intro with azure

Handoff/Rebalancing

Mechanisms for data rebalancing

When nodes join/leave cluster, handoff and rebalancing manage the date shuffling dynamically

Trades off speed of convergence vs. effects on cluster performance

- causes disk & network load

Thursday, March 7, 13

Page 27: Riak   intro with azure

Vector Clocks

VCs used to rectify object consistency at READ time.

Lots of knobs to turn; well-documented

Trades off space, speed, and complexity for safety

- will store all sibling objects until resolved- can lead to object size issues

Thursday, March 7, 13

Page 28: Riak   intro with azure

Append-Only Storage

Riak provides a pluggable backend interface. (Write your own; we’ll probably hire you...)

Bitcask, LevelDB are most-heavily used. Both are append - only

Provides crash safety and speed.

Trade off: periodic compaction/merge ops

Thursday, March 7, 13

Page 29: Riak   intro with azure

RIAK 1.3 (AKA “new hotness”)

Active Anti Entropy MapReduce ImprovementsIPv6 Support

Riaknostic included by default

Much more Riak Control improvements

Full release notes: https://github.com/basho/riak/blob/1.3/RELEASE-NOTES.md

Thursday, March 7, 13

Page 30: Riak   intro with azure

FUTURE WORK*(1.4 and beyond)

(* all code subject to ship early, late, or not at all)

Dynamic Ring SizeYokozunaCRDTs/Data TypesRiak Object

Consistency2i ImprovementsRiak Pipe workMuch more

Thursday, March 7, 13

Page 31: Riak   intro with azure

S3-API compatible and supports per-tenant reporting for billing and metering use cases. Additional APIs on the way.

Multi-tenant cloud storage software for public and private clouds.

Designed to provide simple, available, distributed cloud storage at any scale.

Stores files of arbitrary size. Under the hood stores 1MB chunks along side a manifest.

Stateless proxy (CS) does chunking. Riak does distribution, storage, etc.

Thursday, March 7, 13

Page 32: Riak   intro with azure

Data transfer is unidirectional (source -> sink). Bidirectional synchronization can be achieved by configuring a pair of connections between clusters.

Extends Riak's capabilities with:- multi-datacenter replication- SNMP Configuration- JMX-Monitoring- 24x7 support from Basho Engineers

One cluster acts as a "source cluster". The source cluster replicates its data to one or more "sink clusters" using either real-time or full sync.

Thursday, March 7, 13

Page 33: Riak   intro with azure

RIAK COMMUNITYMailing List - 1300 developers

IRC - 200+ people every day yelling about software

GitHub - 1000s of watchers; 200+ contributors to all projects

Meetups - 10 Countries, 23 Cities, 3700+ Members & growing fast!

Deployments - 1000s in production.

Thursday, March 7, 13

Page 34: Riak   intro with azure

May 13-14th in New York Cityricon.io/east.html

Talks, hacking, partiesDedicated to the future of Riak and distributed systems in production

REGISTER NOW!

https://ricon-east-2013.eventbrite.com/?discount=lovevnodes

Thursday, March 7, 13

Page 35: Riak   intro with azure

GETTING STARTEDDownloads - http://docs.basho.com/riak/latest/downloads/Docs - http://docs.basho.comRiak Source Code - github.com/basho/riak

All Basho source Code - github.com/basho/Riak Mailing List - http://bit.ly/riak-list

Email or Tweet me @adron or [email protected]

Thursday, March 7, 13

Page 36: Riak   intro with azure

Let’s Talk UI & CLI - Demo Things

Thursday, March 7, 13

Page 37: Riak   intro with azure

#WHOISAdron Hall | @adron | Coder, Messenger, Recon

Thursday, March 7, 13