Top Banner
High Throughput Low Latency
77

Netflix Open Source Meetup Season 4 Episode 2

Apr 16, 2017

Download

Technology

aspyker
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Netflix Open Source Meetup Season 4 Episode 2

High ThroughputLow Latency

Page 3: Netflix Open Source Meetup Season 4 Episode 2
Page 4: Netflix Open Source Meetup Season 4 Episode 2

User Request

The Hidden Microservice

Page 5: Netflix Open Source Meetup Season 4 Episode 2

Distributed Memcached

Tunable Replication

High Resilience

Topology Aware

Data Chunking

Additional Functionality

Ephemeral Volatile Cache

Page 6: Netflix Open Source Meetup Season 4 Episode 2

Architecture

Eureka(Service Discovery)

ServerMemcached

Prana (Sidecar)Monitoring & Other Processes

Client Application

Client Library

Client

Page 7: Netflix Open Source Meetup Season 4 Episode 2

Architecture

● Complete bipartite graph between clients and servers● Sets fan out, gets prefer closer servers● Multiple full copies of data

Page 8: Netflix Open Source Meetup Season 4 Episode 2

Use Case: Lookaside cacheApplication (Microservice)

Service Client Library

Client Ribbon Client

S S S S. . .

C C C C. . .

. . .

Data Flow

Page 9: Netflix Open Source Meetup Season 4 Episode 2

Use Case: Primary Store

Offline / Nearline Precomputes for Recommendation

Online Services

Offline Services

. . .

Online Client Application

Client Library

Client

Data Flow

Page 10: Netflix Open Source Meetup Season 4 Episode 2

Usage @ Netflix

11,000+ AWS Server instances

30+ Million Ops/sec globally

Over 1.5 Million cross-region replications/sec

130+ Billion objects stored globally

70+ distinct caches

170+ Terabytes of data stored

Page 11: Netflix Open Source Meetup Season 4 Episode 2

MAPBruce WobbeSenior Software Engineer

Page 12: Netflix Open Source Meetup Season 4 Episode 2

What is Map?

● Merchandising Application Platform● It is the final aggregation point for the data before it

is sent to the device.● The Home page assembled here.

Page 13: Netflix Open Source Meetup Season 4 Episode 2
Page 14: Netflix Open Source Meetup Season 4 Episode 2

Why Map Uses EVCache?

● Map utilizes EVCache to cache the home page for each customer.

● The Home Page is cached from 1-10 hours depending on device (some rows updated more often).

● EVCache provides extremely quick and reliable access to data.

Page 15: Netflix Open Source Meetup Season 4 Episode 2

How Is The Data Stored?

● Map stores the data as individual records in EVCache. Each home page row is a record in EVCache.

● The normal access pattern is to request 1-6 rows at a time.

● Each record is given a TTL.

Page 16: Netflix Open Source Meetup Season 4 Episode 2

Advantages of EVCache For Map

● High hit rate: 99.99%● Clean up is automatic (Let the TTL handle it for you.) ● Solid (Map was using Cassandra as a backup for the

data, but EVCache proved so solid we removed the Cassandra backup)

● Super fast (Average latency under 1ms)

Page 17: Netflix Open Source Meetup Season 4 Episode 2

Confidence

● We’ve never have seen cases of data corruption.● When we have problems, EVCache is the last

place I'd look for a cause.

Page 18: Netflix Open Source Meetup Season 4 Episode 2

The Stats

Peak Per Region RPS:

● Total = Reads-Writes-Touches = 616K ● Reads = 275K ● Touches = 131K ● Writes = 210K● Peak Data Per Region● Total = 7.7 Tbytes

Page 19: Netflix Open Source Meetup Season 4 Episode 2

Future

● As a common use case is for devices to never hit the cache after initial load, MAP would like to see a cheaper way to store the data for infrequent accessing users.

Page 20: Netflix Open Source Meetup Season 4 Episode 2

MonetaScott Mansfield & Vu Nguyen

Page 21: Netflix Open Source Meetup Season 4 Episode 2

Moneta

Moneta: The Goddess of MemoryJuno Moneta: The Protectress of Funds for Juno

● Evolution of the EVCache server● EVCache on SSD● Cost optimization● Ongoing lower EVCache cost per stream● Takes advantage of global request patterns

Page 22: Netflix Open Source Meetup Season 4 Episode 2

Old Server

● Stock Memcached and Prana (Netflix sidecar)● Solid, worked for years● All data stored in RAM (Memcached)● Became more expensive with expansion / N+1 architecture

Page 23: Netflix Open Source Meetup Season 4 Episode 2

Optimization

● Global data means many copies● Access patterns are heavily region-oriented● In one region:

○ Hot data is used often○ Cold data is almost never touched

● Keep hot data in RAM, cold data on SSD● Size RAM for working set, SSD for overall dataset

Page 24: Netflix Open Source Meetup Season 4 Episode 2

Cost Savings

3 year heavy utilization reservations (list price)

r3.2xlarge x 100 nodes ≅ $204K / yr

Working set 30%

i2.xlarge x 60 nodes ≅ $111K / yr

~46% savings

Page 25: Netflix Open Source Meetup Season 4 Episode 2

New Server

● Adds Rend and Mnemonic● Still looks like Memcached● Unlocks cost-efficient storage & server-side intelligence

external internal

Page 26: Netflix Open Source Meetup Season 4 Episode 2

Rend

https://github.com/netflix/rend

Page 27: Netflix Open Source Meetup Season 4 Episode 2

Rend

● High-performance Memcached proxy & server● Written in Go

○ Powerful concurrency primitives○ Productive and fast

● Manages the L1/L2 relationship● Server-side data chunking● Tens of thousands of connections

Page 28: Netflix Open Source Meetup Season 4 Episode 2

Rend

● Modular to allow future changes / expansion of scope○ Set of libraries and a default

● Manages connections, request orchestration, and backing stores

● Low-overhead metrics library● Multiple orchestrators● Parallel locking for data integrity

Page 29: Netflix Open Source Meetup Season 4 Episode 2

Rend in Production

● Serving some of our most important personalization data● Two ports

○ One for regular users (read heavy or active management)○ Another for "batch" uses: Replication and Precompute

●● Maintains working set in RAM● Optimized for precomputes

○ Smartly replaces data in L1

external internal

Page 30: Netflix Open Source Meetup Season 4 Episode 2

Mnemonic

Page 31: Netflix Open Source Meetup Season 4 Episode 2

Mnemonic● Manages data storage to SSD

● Reuses Rend server libraries○ handle Memcached protocol

● Mnemonic core logic○ implements Memcached operations into

RocksDB

Mnemonic Stack

Page 32: Netflix Open Source Meetup Season 4 Episode 2

Why RocksDB for Moneta● Fast at medium to high write load

○ Goal: 99% read latency ~20-25ms

● LSM Tree Design minimizes random writes to SSD○ Data writes are buffered Record A Record B

...

memtables

● SST: Static Sorted Table

Page 33: Netflix Open Source Meetup Season 4 Episode 2

How we use RocksDB

● FIFO Compaction Style○ More suitable for our precompute use cases○ Level Compaction generated too much traffic to SSD

● Bloom Filters and Indices kept in-memory

Page 34: Netflix Open Source Meetup Season 4 Episode 2

How we use RocksDB

● Records sharded across many RocksDB’s on aws instance○ Reduces number of SST files checked--decreasing latency

...

Key: ABCKey: XYZ

RocksDB’s

Page 35: Netflix Open Source Meetup Season 4 Episode 2

FIFO Limitation● FIFO Style Compaction not suitable for all use cases

○ Very frequently updated records may prematurely push out other valid records

SST

Record A2

Record B1

Record B2

Record A3

Record A1

Record A2

Record B1

Record B2

Record A3

Record A1

Record B3Record B3

Record C

Record D

Record E

Record F

Record G

Record H

SST SST

time

● Future: Custom Compaction or Level Compaction

Page 36: Netflix Open Source Meetup Season 4 Episode 2

Moneta Perf Benchmark

● 1.7ms 99%ile read latency○ Server-side latency○ Not using batch port

● Load: 1K writes/sec, 3K reads/sec

● Instance type: i2.xlarge

Page 37: Netflix Open Source Meetup Season 4 Episode 2

Open Source

https://github.com/Netflix/EVCachehttps://github.com/Netflix/rend

Page 39: Netflix Open Source Meetup Season 4 Episode 2

Problems● Cassandra not a speed demon (reads)● Needed a data store:

o Scalable & highly availableo High throughput, low latencyo Active-active multi datacenter replicationo Advanced data structureso Polyglot client

Page 40: Netflix Open Source Meetup Season 4 Episode 2

ObservationsUsage of Redis increasing:

o Not fault toleranto Does not have bi-directional replicationo Cannot withstand a Monkey attack

Page 41: Netflix Open Source Meetup Season 4 Episode 2

What is Dynomite?

● A framework that makes non-distributed data stores, distributed.o Can be used with many key-value storage engines

Features: highly available, automatic failover, node warmup, tunable consistency, backups/restores.

Page 42: Netflix Open Source Meetup Season 4 Episode 2

Dynomite @ Netflix

● Running >1 year in PROD● ~1000 nodes● 1M OPS at peak● Largest cluster: 6TB source of truth data

store.● Quarterly production upgrades

Page 43: Netflix Open Source Meetup Season 4 Episode 2

Completing the Puzzle

Dyno Dynomite-manager

Page 44: Netflix Open Source Meetup Season 4 Episode 2

Dynomite Ecosystem

Page 45: Netflix Open Source Meetup Season 4 Episode 2

Features

● Multi-layered Healthcheck of Dynomite node ● Token Management and Node configuration● Dynomite Cold Bootstrap (warm up)

o after AWS or Chaos Monkey terminations● Backups/Restores ● Exposes operational tasks through REST API● Integration with the Netflix OSS Ecosystem

Page 46: Netflix Open Source Meetup Season 4 Episode 2

Where can I find it?

https://github.com/Netflix/dynomite-manager

https://github.com/Netflix/dynomite

https://github.com/Netflix/dyno

Page 47: Netflix Open Source Meetup Season 4 Episode 2

Thomson Reuters

Page 48: Netflix Open Source Meetup Season 4 Episode 2

About us

Canadian Head of Architecture. SOA, Cloud, DevOps Practitioner. Drummer v1, Wine v0.5. Working on all aspects of NetflixOSS and AWS.

Brazilian Principal Software Architect, SOA Expert, DevOps Practitioner, Blogger, Terran SC2 Player. Working with Chaos / Perf Engineering and NetflixOSS.

@diego_pacheco

diegopacheco

http://diego-pacheco.blogspot.com.br/ilegra.com

@samsgro samsgro

https://www.linkedin.com/in/sam-sgro-4217845

Page 49: Netflix Open Source Meetup Season 4 Episode 2
Page 50: Netflix Open Source Meetup Season 4 Episode 2
Page 51: Netflix Open Source Meetup Season 4 Episode 2

2015

TechnologyPOC

2016

First Commercial Apps

“Project Neon”First Release

2017...

“Project Neon”

Platform

Page 52: Netflix Open Source Meetup Season 4 Episode 2

Business Use Case

Page 53: Netflix Open Source Meetup Season 4 Episode 2

Why Dynomite?

Page 54: Netflix Open Source Meetup Season 4 Episode 2

Performance

Accumulated Latency per 1k operations

Page 55: Netflix Open Source Meetup Season 4 Episode 2

Infrastructure Changes

Dynomite Manager ● Submitted 2 Dynomite PRs to Netflix to improve integration with the Dynomite Manager

Eiddo: TR’s git-based network property server● Converted this to talk to the Dynomite Manager

Ribbon: Eureka-integrated client load balancer● Cache service instrumentation around Dyno, observables

Docker: Fun with Containers● Simple image, ease of use, developer testing

Dynomite-manager

Page 56: Netflix Open Source Meetup Season 4 Episode 2

Issues and Challenges

Dynomite-manager

Page 57: Netflix Open Source Meetup Season 4 Episode 2

DEMO Architecture

Page 59: Netflix Open Source Meetup Season 4 Episode 2

Acknowledgements

Diego PachecoMaksim LikharevYurgis BaykshtisSam Sgro

Page 60: Netflix Open Source Meetup Season 4 Episode 2
Page 61: Netflix Open Source Meetup Season 4 Episode 2
Page 62: Netflix Open Source Meetup Season 4 Episode 2

LatencyPerformance

Page 63: Netflix Open Source Meetup Season 4 Episode 2

2 to 3 years

Database Development

Page 64: Netflix Open Source Meetup Season 4 Episode 2

RESP server

Redis API

Hash Conf

Sharding

SnitchAnti-entropy

Dynomite

RESP API

Storage APIs / RESP Client

Redis Client

Gossip Telemetry

RESP protocol

RESP protocol

Central Command

Partitioning

Page 65: Netflix Open Source Meetup Season 4 Episode 2

2 to 3 yearsDatabase Development

3 weeksvs.

Page 66: Netflix Open Source Meetup Season 4 Episode 2

Dynomite + RocksDB

Page 67: Netflix Open Source Meetup Season 4 Episode 2

Dynomite + RocksDB

Page 68: Netflix Open Source Meetup Season 4 Episode 2
Page 69: Netflix Open Source Meetup Season 4 Episode 2

DevOps

RESP server

Redis API

Hash Conf

Sharding

SnitchAnti-entropy

Dynomite

RESP API

Storage API

Storage APIs / RESP Client

Redis Client

Gossip Telemetry

● Infrastructure● Tooling● Automation● Deployment

Central Command

Page 70: Netflix Open Source Meetup Season 4 Episode 2

Application Development

Redis APISimple, Composable, Powerful

Page 71: Netflix Open Source Meetup Season 4 Episode 2

Single Server Redis

Distributed Cache

Page 72: Netflix Open Source Meetup Season 4 Episode 2

Key/Value + Key/Data Structures

String

Integer

Float

List

Set

Sorted Set

Hash

Commands

Page 73: Netflix Open Source Meetup Season 4 Episode 2

Data model and query reuse

Page 74: Netflix Open Source Meetup Season 4 Episode 2

Function Benefits

Database engineers

● Order of magnitude faster development● Framework for rapid development

DevOps ● Efficiency gains● Common infrastructure● Reuse tools, scripts, and more

Application developers

● Increase development velocity● Single API for cache and database● Query and data model reuse

Page 75: Netflix Open Source Meetup Season 4 Episode 2

Beyond Key/Value

10 001 12 002

Smith 001 Jones 002

Joe 001 Mary 002

Page 76: Netflix Open Source Meetup Season 4 Episode 2

Thank you

@DynomiteDBwww.dynomitedb.com

Page 77: Netflix Open Source Meetup Season 4 Episode 2