Arquitectura S3: 3 años de evolución para Mail.ru Cloud Storage



Pasillo de almacenamiento de St-Pete



¡Hola! Soy Mons Anderson, el arquitecto de la plataforma Mail.ru Cloud Solutions , y les diré cómo construimos nuestro almacenamiento S3, cómo funciona, qué soluciones resultaron ser exitosas y cuáles valdría la pena cambiar si comenzáramos el mismo proyecto desde cero ahora.



@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 + S3 API + Metadatos

Nginx + S3 API +





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



: , , . , : uploads chunks. .



Esquema de datos



b2b- , .

Tarantool.



FacturaciĂłn



S3-:



, : , .



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



, - , , S3.



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



Sistema de lĂ­mite de velocidad



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



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



Caché de datos



, , capacity (), , , , .



:



, - — .



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



ConmutaciĂłn por error activa



,



, — . , .



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



SacĂł objetos que no tiene sentido fragmentar



, — , . .



Objetos en crecimiento llevados a un grupo fragmentado



, : , ACL. . , , , .



:



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


Esquema fragmentado final



, . , , , , .



Compartir proxy



, , .



, . 256 . . — , , :



f(bucket, shards) = subset



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



— , , . , :



f(object, subset) = shard



, , — .



Esquema de fragmentaciĂłn de cubos



, , . . , — , , .



Esquema de fragmentaciĂłn final





— . , . , .



, . nginx, S3 API, , primary- ,



caja caliente



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



Almacenamiento en frĂ­o y caliente



Icebox , Hotbox, - . Hotbox Icebox , .



, , , , , . . .



primary-. Tarantool :



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

    SincronizaciĂłn de cubos



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



Migrating, , , , .



. API Icebox, Hotbox, , Nginx.



, , Nginx API Icebox .

Icebox nginx S3 API — :



Cambiar solicitudes entrantes



, — , Migrating, Local.



MigraciĂłn de datos



, , .



Legado de limpieza



:



  • 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.



Almacenamiento de certificados SSL



, -,





. . , , , , , , . .



Tarantool . . , .



. , , . S3 .



S3 «». , . .



. , , , , .





. , Amazon, , .



. , .



Tarantool. Tarantool , , , .



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

, S3 .






All Articles