2. 350 000 používateľov za deň
1 100 000 používateľov za mesiac
4 500 000 mailov za deň
3. 104 TB unikátnych príloh
27 TB tiel emailov + 4 TB metadát
0,6 TB dát pre fulltextové vyhľadávanie
4. Architektúra emailu
SMTP
Backend
MySql NFS Cassandra MogileFS ElasticSearch
Frontend
5. Technológie použité v emaile
NFS storage – telá mailov
MogileFS – unikátne prílohy
Cassandra – metainformácie o mailoch a
priečinkoch používateľa
ElasticSearch – fulltextové vyhľadávanie
Memcache – session dáta pre email
MySQL – dáta o používateľoch
6. Zmena úložiska metadát emailov
NFS
výhody: jednoduchosť použitia
nevýhody: problém so škálovaním a konzistenciou, chýbajúca
redundancia dát, nízky výkon pri veľkom objeme dát
Cassandra, ElasticSearch
výhody: replikácia, vysoká dostupnosť, jednoduchý scale up
nevýhody: transakčné spracovanie, nároky na HW
7. CASSANDRA – NoSql DB
Vznikla v spoločnosti Facebook (inbox search), spája amazon
dynamo model a google bigtable
scalability
flexibility – prístup ku CAP problému
consistency – všetky repliky majú rovnaké dáta
availability – dostupnosť clustra pri výpadku nodu
partition tolerance – fungovanie pri rozpade clustra
10. CASSANDRA – použitie
počet nodov: 7
počet replík: 3
počet uložených kľúčov: ~2.3 mld
obsadené miesto: ~4 TB
read requests rate: 345 ops
write requests rate: 221 ops
read request latency: 12 ms
write request latency: 2ms
11. CASSANDRA partitioning
dáta v clustri reprezentuje cyklický ring
node má pridelený token T, určuje pozíciu v
ringu
node zodpovedá za interval (T-1; T>
ring rozdelený intervaly (dané počtom nodov)
kľúč je mapovaný na token, určuje cieľový
primárny node
partitioners: random partitioner (md5 hash) –
rovnomerné rozloženie byte ordered partioner
– umožňuje range scan
13. CASSANDRA replication
rôzne stratégie umiestňovania replík
• simple – repliky sa ukladajú na nody podľa poradia v ringu
• network topology – zohľadňuje fyzické umiestnenie nodov
(datacentrum, rack, …)
klientské operácie sú vykonávané s úrovňou konzistencie:
• one – práve jeden node
• quorum – nadpolovičná väčšina nodov
• all – všetky nody
požadovaná konzistencia určuje:
• dostupnosť clustra pri výpadku nodu
• konzistenciu čítaných dát
• garanciu zápisu dát na x nodov