ADLS
Introduction
Azure的data storage
,支援POSIX-style的access,支援不同的backend storage,採用階層式的架構,混合Cosmos和HDFS,可以在上面跑數據運算。
Architecture
Components
Secure Store Service (SSS)
SSS是系統的entrypoint,負責去呼叫microservices
和storage provider
,也就是說每個storage provider
的adapter都host在SSS裡面。
Secret Management Service (SMS)
SSS負責跟AKV溝通,並且取得secret
(MEK, DEK),然後透過**TSM(Trusted Software Module)**來對block做encryption、decryption。
Partial File Manager (PFM)
在ADLS,每個file會在被分成好幾個partial file,PFM負責管理這些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
是一個混合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。