跳到主要内容

ADLS

Introduction

Azure的data storage,支援POSIX-style的access,支援不同的backend storage,採用階層式的架構,混合CosmosHDFS,可以在上面跑數據運算。

Architecture

image info

Components

Secure Store Service (SSS)

SSS是系統的entrypoint,負責去呼叫microservicesstorage provider,也就是說每個storage provider的adapter都host在SSS裡面。

Secret Management Service (SMS)

image info

SSS負責跟AKV溝通,並且取得secret(MEK, DEK),然後透過**TSM(Trusted Software Module)**來對block做encryption、decryption。

Partial File Manager (PFM)

ADLS,每個file會在被分成好幾個partial filePFM負責管理這些partial file,記錄每個partial file屬於哪個file,partial file的最後一個extent是哪一個(只有最後一個extent可以被append)。

Naming Service (NS)

NS蓋在RSL-HK上面,由RSL-HK來處理consistent、partition和replica,它本身支援POSIX的操作。

Small Append Service (SAS)

ADLS會去紀錄檔案的使用pattern,如果判斷為此次的操作是少量的append,會在SAS先batch起來,之後在一起寫入,如果判斷是大量的append,就直接讓storage provider來處理。

Transient Data Store Service (TDSS)

在task computation的過程中會產生一些暫時性的資料,如果computation失敗了要重來很花時間,這些暫時性的資料就放在TDSS,如果task成功這些資料就會被keep幾個小時然後刪除,如果失敗就會keep幾天。

Throttling Service (TS)

負責處理每個client 請求的quota。

RSL-HK

image info

是一個混合RSL (Replicated State Machine)SQL Server Hekaton Engine的實作,RSL底層基於Viewstamped Replication

developer可以藉由操作RSL-HK ring來操作Paxos ring,藉由使用SQL,可以保證ACID,讓developer可以更簡單的操作ring state。

Security

Authorization and Authentication

要操作API必須要有OAuth token,這個可以藉由使用Microsoft account或是Active Directory等方式取得,得到Oauth token以後,會再補上user group的資訊,來做到authentication,之後這個token會在API呼叫之間傳遞。

Encryption/Decryption

MEK (Master Encryption Key)可以由service產生,也可以由user產生,MEK會拿來encryptDEK,平常存在AKV裡面,只能透過AKV的interface拿來加解密,ADLS沒辦法直接存取。

DEK (Data Encryption Key)SMS產生,用MEK簽出來,存在ADLS裡面,並且用來encrypt BEK (Block Encryption Key)BEK是由DEK加上block id encrypt,並且存在TSM,並且之後也由TSM來decrypt。