ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ PayPal ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²Π°ΡΠ° Π‘Π£ΠΠ JunoDB, ΠΊΠΎΡΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° Π΄Π°Π½Π½ΠΈ Π² ΡΠΎΡΠΌΠ°Ρ ΠΊΠ»ΡΡ-ΡΡΠΎΠΉΠ½ΠΎΡΡ. Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π° Ρ Π°ΠΊΡΠ΅Π½Ρ Π²ΡΡΡ Ρ Π²ΠΈΡΠΎΠΊΠ° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ, Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡ, ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΡΠΎΡΠΈΡΠΈ Ρ ΠΈΠ»ΡΠ΄ΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ Ρ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΈ Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΡ. Π PayPal ΠΏΠΎΡΡΠΈ Π²ΡΠΈΡΠΊΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΠΎΡ Π²Ρ ΠΎΠ΄Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π΄ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, Π·Π°Π²ΠΈΡΡΡ ΠΎΡ JunoDB. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Go (ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΅ Π½Π° Java) ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΡΠ° Apache 2.0. ΠΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΠΈΠ΅ΠΌΠ°Π½ΠΈ ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΈ, ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΡ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ°.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° JunoDB Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Ρ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΈΠ΅ΠΌΠ° Π·Π°ΡΠ²ΠΊΠΈ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π³ΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠΊΡΠΈ-ΡΡΡΠ²ΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Ρ Ρ Π³ΡΡΠΏΠ° ΡΡΡΠ²ΡΡΠΈ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°. ΠΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠΊΡΠΈ-ΡΡΡΠ²ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π° Π²ΡΡΠ·ΠΊΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Ρ Π²ΡΠΈΡΠΊΠΈ ΡΡΡΠ²ΡΡΠΈ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΠΊΡΠΌ Π³ΡΡΠΏΠ° ΡΡΡΠ²ΡΡΠΈ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π° ΠΏΠ°ΡΡΠΈΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π² ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ etcd.

ΠΠ°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΠΏΠ°ΡΡΠΈΡΠΈΠΎΠ½ΠΈΡΠ°Ρ ΠΈ ΡΠ²ΡΡΠ·Π²Π°Ρ Ρ ΡΠ·Π»ΠΈ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π· Ρ Π΅ΡΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΏΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ ΠΈΠ»ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ·Π»ΠΈΡΠ΅ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. ΠΠ° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π²ΡΡΠΊΠ° ΡΠ°ΡΡ ΠΎΡ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ·Π»Π° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄Π° Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΡΡΠ²ΡΡΠΈ. ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΠΈΡΠΎΡΠΈΠ°Π»Π½ΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, Π² ΠΊΠΎΠΈΡΠΎ Π³ΡΡΠΏΠΈ ΠΎΡ ΡΠ·Π»ΠΈ ΡΠ° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΄Π°ΡΠ°ΡΠ΅Π½ΡΡΠΎΠ²Π΅.

ΠΠ° ΡΠ·Π»ΠΈΡΠ΅ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ ΠΈΠ»ΠΈ Π² Π»ΠΎΠΊΠ°Π»Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° RocksDB. ΠΡΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π² ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½ Π²ΠΈΠ΄ (ΠΊΠ»ΡΡΡΡ Π·Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ ΠΊΠ°ΠΊΡΠΎ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠ°ΠΊΠ° ΠΈ Π΄Π° Π±ΡΠ΄Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡΠΎΠΊΡΠΈ).

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

ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
