Architecture S3: 3 ans d'évolution pour Mail.ru Cloud Storage



Couloir de rangement par St-Pete



salut! Je suis Mons Anderson, l'architecte de la plate - forme Mail.ru Cloud Solutions , et je vais vous dire comment nous avons construit notre stockage S3, comment il fonctionne, quelles solutions se sont avérées fructueuses et lesquelles mériteraient d'être modifiées si nous commençons le même projet à partir de zéro maintenant.



@Databases Meetup by Mail.ru Cloud Solutions & Tarantool. :



  • Mail.ru, S3-;
  • , Mail.ru Cloud Storage;
  • ;
  • : ;
  • ;
  • SSL-.


, .



Mail.ru, S3-



S3 Mail.ru, , .



Mail.ru . storage- — 36 12–14 . , .



«» (pair). — unit . , , , , .



— , , . , , 3/2.





(pair) —



PairDB — Tarantool. , , — Tarantool, .



PairDB , , , , . , , , . PairDB — .





Pair DB:



, , , , — FileDB. , : - -, .



File DB: ,

— Nylon, . , PairDB, FileDB. stateless-, , , FileDB , , , .





Nylon:



- . — Streamer. HTTP-: PUT, , GET, . HTTP — .



Streamer'y, Nylon PairDB, , , WebDAV .



, storage — nginx , . Streamer , , . .





Streamer:



, S3-



, , S3-. PUT . . S3. S3, , :



  • — ;
  • HTTP;
  • — ;
  • HTTP-S3 Endpoint. S3 — , .


. .





, S3 API. S3 API Amazon, XML . - , .



Nginx. SSL, , Lua (, ).



S3 Tarantool. S3 , Streamer.



Nginx + API S3 + métadonnées

Nginx + S3 API +





, S3. — . . . URL. — blob, , . : — URL, ACL ( ), — .



: , , . , : uploads chunks. .



Schéma de données



b2b- , .

Tarantool.



Facturation



S3-:



, : , .



-. , - . - : S3- , , - . , -.



, - , , S3.



Tarantool. - — 21 , , . : -, . . , , . , Token Bucket. -, , , , . S3-, .



Système de limite de débit



. S3 , . : Streamer, FileDB, PairDB, Storage. .



nginx, , SSD RAM-. Tarantool, , . , 32 , Tarantool .



Cache de données



, , capacity (), , , , .



:



, - — .



S3- Tarantool. Tarantool, - . , API, — Tarantool, . , . .



Basculement actif



,



, — . , .



: , , . , , . , , , . , .



Faire ressortir des objets dont le partitionnement ne sert à rien



, — , . .



Objets en croissance emportés dans un cluster fragmenté



, : , ACL. . , , , .



:



  • , , ;
  • , , ;
  • lifecycle — , , .


Schéma fragmenté final



, . , , , , .



Proxy de partage



, , .



, . 256 . . — , , :



f(bucket, shards) = subset



, , . map-reduce , , , . , . , , .



— , , . , :



f(object, subset) = shard



, , — .



Schéma de partitionnement de seau



, , . . , — , , .



Schéma de partitionnement final





— . , . , .



, . nginx, S3 API, , primary- ,



boîte chaude



, : « , , — , ». , , URL .



Stockage chaud et froid



Icebox , Hotbox, - . Hotbox Icebox , .



, , , , , . . .



primary-. Tarantool :



  • , Hotbox;
  • Tarantool ( — Icebox), ;
  • , , , .

    Synchroniser les buckets



, , , , . , Hotbox, Icebox — , .



Migrating, , , , .



. API Icebox, Hotbox, , Nginx.



, , Nginx API Icebox .

Icebox nginx S3 API — :



Changer les demandes entrantes



, — , Migrating, Local.



Migration de données



, , .



Nettoyage de l'héritage



:



  • Non-sharded. , .
  • Sharded.
  • , Migrating .


:



  • , .
  • .
  • : , , .


SSL-



Nginx. Nginx, OpenResty, Nginx LuaJIT.

— SSL-. S3- , CNAME. HTTPS : SSL-.



, SSL Nginx. Nginx, OpenResty, Nginx LuaJIT.



Nginx . ( ). ssl_certificate_by_lua, TLS-. Tarantool: .



, , Let's Encrypt.



Stockage de certificats SSL



, -,





. . , , , , , , . .



Tarantool . . , .



. , , . S3 .



S3 «». , . .



. , , , , .





. , Amazon, , .



. , .



Tarantool. Tarantool , , , .



@Databases Meetup by Mail.ru Cloud Solutions&Tarantool. Telegram Kubernetes Mail.ru Group.

, S3 .






All Articles