Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow...

29
AMBRY: LinkedIn’s Immutable Blob Storage System Arjun Shenoy Data SRE

Transcript of Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow...

Page 1: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

AMBRY: LinkedIn’s Immutable Blob Storage System

Arjun ShenoyData SRE

Page 2: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

Motivation

Filers

Metadata DBMedia-Frontend

Clients

NFS Mounted

Media Server

● Not Cost effective

● High MTTR

● Scalability issue

● Operational Overhead

Issues Faced

Page 3: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

Reliability Scalability Low MTTR

Motivation

Low Cost

$Active - Active

Page 4: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

Evaluation

Page 5: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

#blobstore

Inspiration

Page 6: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

AMBRY

Page 7: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

1015

Handle Based Horizontally Scalable Petabyte Scalable

Metadata Support Large Blob SupportActive-Active

Page 8: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

ARCHITECTURE

Page 9: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

CDN

Clients

Ambry-Frontend

Ambry-Server

ClustermapManager

Clients

CDN

Ambry-Frontend

Ambry-Server

ClustermapManager

Data Center 1 Data Center 2

Cross-Colo Get

Replication

Page 10: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

COMPONENTS

Page 11: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

Ambry-Frontend

Coordination Security Non Blocking

Page 12: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

Ambry-Front End

Non Blocking

NIO Layer

Scaling Layer

Remote Service Layer

Ambry-frontend (Non-Blocking Model)

Page 13: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

Storage

Replication

JBOD

Ambry-Server

Storage

Responsible Built on

Page 14: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

Clustermap-Manager

Page 15: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

● HardwareLayout file

● Node State

● Disk Capacity and State

Page 16: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

● PartitionLayout file

● Mapping to nodes

● Partition State

Page 17: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

HOW DO THEY INTERACT?

Page 18: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

PutBlob WorkFlow

Client

Frontend

1. PutBlob

2. Choose Partition

3. Generate BlobId

DataNode DataNode DataNode

4. Send PUT Request in Parallel to all 3 replicas

5. Wait for 2 acks

6. Return BlobId

Sample Blob-Id: /AAEAAQAAAAAAAADFAAAAJDMyYWZiOTJmLTBkNDYtNDQyNS1iYzU0LWEwMWQ1Yzg3OTJkZQ.gif

Page 19: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

PutBlob Statistics

● Average QPS: 370

● Latencies(95th Percentile):● SmallBlob (<100KB ): <10ms● MediumBlob(100KB - 4MB): <10ms (Goes up to 20ms

extreme cases)

● LargeBlob (>4MB): <50ms (Goes up to 80ms extreme cases)

Page 20: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

GetBlob Workflow

Client

Frontend

1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif)

2. Determination of Partition Based on the Blob Id

DataNode DataNode DataNode

3. Send Requests to Replicas in Parallel

4. Wait for at least 1 successful response

5. Return Blob

Page 21: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

GetBlob Workflow

Client

Frontend

DataNode DataNodeDataNode DataNode

DC1 DC2

GET404 Cross-colo Get

Response

Page 22: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

GetBlob Statistics

● Average QPS: 24K

● Latencies(95th Percentile):● SmallBlob: <15ms● MediumBlob: <75ms (Goes up to 700ms extreme cases)● LargeBlob: <200ms (Goes up to 1.5s extreme cases)

Page 23: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

Replication Workflow

DataNode 1

Replication Thread

Store

DataNode 7

Replication Thread

Store

1. GetBlobSince(Offset)

2. GetBlobSince(Offset)3. BlobSinceContext

4. BlobSinceContext

5. Find BlobInfo 6. Context

Page 24: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

DataNode 1

Replication Thread

Store

DataNode 7

Replication Thread

Store

7. FetchBlobAndMeta

8. FetchBlobAndMeta

9. Stream

10. Stream

Replication Workflow

● Inter DC Replication Time: 20-100ms● Intra DC Replication Time: <10ms

Page 25: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

SOME STATISTICS

Page 26: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

Use-cases: Images, PDFs, Static files, Videos so on...

Total Capacity: 900TB Serving: 300TB

Growth Rate: 1160GB per day

Page 27: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

Git Link: github.com/linkedin/ambry/wiki

Blog Post: engineering.linkedin.com/blog/2016/05/introducing-and-open-sourcing-ambry---linkedins-new-distributed-

We’re Open Source!

Page 28: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

Thank You!!

Page 29: Data SRE Arjun Shenoy AMBRY: LinkedIn’s Immutable Blob … · 2019. 12. 18. · GetBlob Workflow Client Frontend 1. GET(/AAAEQ...zU0wMWQ1Yzg3OTJkZQ.gif) 2. Determination of Partition

The information in this presentation was compiled from sources believed to be reliable for informational purposes only. It does not constitute legal or professional advice. The views and opinions expressed in this presentation are those of the authors and do not necessarily represent official policy or position of Linkedin

All product and company names are trademarks™ or registered® trademarks of their respective holders.

DISCLAIMER