Skip to the content.

Manage datastore locality at scale with Akkio

Paper

Akkio is a locality management service layered between client applications and distributed datastore system.

Why does Facebook need Akkio

What does large scale application usually have

Facebook wants fault tolerance, data locality and less data migration overhead.

What are the potential solutions and considerations

What does Akkio do

example

Akkio design guidelines

Akkio architecture

architecture

Requirements for both application and data storage

Location service

Why Location service is per datacenter based? The total amount of data to be stored is relatively small(several hundreds GBs).

Location service workflow on read

Location service workflow on write

More details in Data placement service

Access counter service

Why Access counter service is per datacenter based? The total amount of data to be stored is relatively small(several hundreds GBs, i.e., 200GBs per datacenter).

Access counter service workflow on write

Access counter service workflow on read

The only one who will read from Access counter service is Data placement service. See more details from Data placement service.

Data placement service

ZippyDB as data store

zippydb-concept

How is optimal placement determined

The goal is to find location handle so that client knows where to access data. A scoring mechanism is used in Akkio.

For example, u-shard-x maps to location-handle-a. The replica set of location-handle-a is across DC-1 and DC-2. We have another location-handle-b which is across DC-2 and DC-3.

The candidates like location-handle-a and location-handle-b are fetched from Facebook Configuration Service.

How does new u-shard is created

How does u-shard migrated

There are three requirements for data migration:

These are what will happen if migration happens:

Lesson learned from data migration

How does DPS handle failure