PayPal ΠΎΡΠ²ΠΎΡΠΈ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° ΡΡΡΠΎΠΉΡΠΈΠ²Π°ΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π‘Π£ΠΠ JunoDB, ΠΊΠΎΡΡΠΎ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ° Π΄Π°Π½Π½ΠΈ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ ΠΊΠ»ΡΡ-ΡΡΠΎΠΉΠ½ΠΎΡΡ. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π° Ρ Π²ΠΈΡΠΎΠΊΠ° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ, Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡ, ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΡΠΎΡΠΈΡΠΈ Ρ ΠΈΠ»ΡΠ΄ΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ Ρ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΈ Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΡ. Π PayPal ΠΏΠΎΡΡΠΈ Π²ΡΠΈΡΠΊΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΠΎΡ Π²Π»ΠΈΠ·Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π΄ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ JunoDB. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Go (ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π° Java) ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·Π° Apache 2.0. ΠΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½ΠΎΡΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ΅ ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ, ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΎΡ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ°.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° JunoDB ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π±Π°Π»Π°Π½ΡΡΠΎΡ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΈΠ΅ΠΌΠ° Π·Π°ΡΠ²ΠΊΠΈ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π³ΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠΊΡΠΈ ΡΡΡΠ²ΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌΠ°Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π³ΡΡΠΏΠ° ΡΡΡΠ²ΡΡΠΈ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈ. ΠΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠΊΡΠΈ ΡΡΡΠ²ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π° Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ Π²ΡΠΈΡΠΊΠΈ ΡΡΡΠ²ΡΡΠΈ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π°Π²Π΅Π΄Π½ΡΠΆ ΠΈ ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ Π³ΡΡΠΏΠ° ΡΡΡΠ²ΡΡΠΈ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π½Π° Π΄ΡΠ»Π°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ etcd.
ΠΠ°Π½Π½ΠΈΡΠ΅ ΡΠ° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ ΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π²ΡΠ·Π»ΠΈ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Ρ Π΅ΡΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΠ·Π»ΠΈΡΠ΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΡΠ°ΡΡΠ°Ρ ΠΈΠ»ΠΈ ΡΠ΅ ΡΠ²ΠΈΠ²Π°Ρ. ΠΠ° Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠΈ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ½ΠΎΡΡ ΠΊΡΠΌ Π³ΡΠ΅ΡΠΊΠΈ, Π²ΡΡΠΊΠ° ΡΠ°ΡΡ ΠΎΡ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²ΡΠ·Π΅Π»Π° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π·Π°ΠΏΠ°Π·Π²Π°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈΡΠ΅ ΡΡΡΠ²ΡΡΠΈ ΡΠ΅ ΠΏΠΎΠ²ΡΠ΅Π΄ΡΡ. ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π³Π΅ΠΎΠ³ΡΠ°ΡΡΠΊΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, Π² ΠΊΠΎΠΈΡΠΎ Π³ΡΡΠΏΠΈ ΠΎΡ Π²ΡΠ·Π»ΠΈ ΡΠ° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅Π½ΡΡΠΎΠ²Π΅ Π·Π° Π΄Π°Π½Π½ΠΈ.
ΠΠ° Π²ΡΠ·Π»ΠΈΡΠ΅ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ Π² RAM ΠΈΠ»ΠΈ Π² Π»ΠΎΠΊΠ°Π»Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° RocksDB. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ, Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π² ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π° ΡΠΎΡΠΌΠ° (ΠΊΠ»ΡΡΡΡ Π·Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡΠΎΠΊΡΠΈ).
ΠΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ Π΄ΠΎΡΡΠ°Π²Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ API Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Java, Go ΠΈ C++. ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°ΡΠ° ΡΠ°ΡΡ Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ ΠΎΠΏΡΠΎΡΡΠ΅Π½Π°, Π° ΡΠ»ΠΎΠΆΠ½Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΡ ΠΊΡΠΌ ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° Π‘Π£ΠΠ, ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ Π±Π°Π»Π°Π½ΡΡΠΎΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΠΊΡΠΈΡΠΎ ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΡΡΠ΅Π· ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π΅Π½ ΠΊΠ°Π½Π°Π». ΠΠ° Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ API.
Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π° Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π·Π°ΡΠ²ΠΊΠΈ Ρ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΈ Π½ΠΈΡΠΊΠΈ Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ»ΡΡΡΠ΅Ρ ΠΎΡ ΡΡΠΈ Π²ΡΠ·Π΅Π»Π° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠΊΡΠΈ, ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ ΠΎΡ ΡΡΠ΅Π΄ΠΈ n1-highmem-32 (32 ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° Intel Xeon 2.30 GHz, 214 G RAM ΠΈ 450 G SSD Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅) , ΡΡΠΏΡ Π΄Π° ΠΎΡΠΈΠ³ΡΡΠΈ ΡΠΈΠΊΡΠΈΡΠ°Π½ΠΈ Π·Π°Π±Π°Π²ΡΠ½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π°Ρ 2.5 ms Π² 95% ΠΎΡ ΡΠ»ΡΡΠ°ΠΈΡΠ΅ ΠΈ 16 ms Π² 99% ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° 200 Ρ ΠΈΠ»ΡΠ΄ΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ TLS Π²ΡΡΠ·ΠΊΠΈ ΠΈ ΠΏΠΎΡΠΎΠΊ ΠΎΡ 15 Ρ ΠΈΠ»ΡΠ΄ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π° (Ρ 3000 Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ ΠΈ ΠΏΠΎΡΠΎΠΊ ΠΎΡ 80 Ρ ΠΈΠ»ΡΠ΄ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°, Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΡΡΠ° Π½Π΅ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π°Ρ 6 ms Π² 95% ΠΎΡ ΡΠ»ΡΡΠ°ΠΈΡΠ΅ ΠΈ 15 ms Π² 99%). Π PayPal ΡΡΠ»ΡΠ³ΠΈΡΠ΅, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° JunoDB, ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Ρ ΠΎΠΊΠΎΠ»ΠΎ 350 ΠΌΠΈΠ»ΠΈΠ°ΡΠ΄Π° Π·Π°ΡΠ²ΠΊΠΈ Π½Π° Π΄Π΅Π½.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru