PayPal ΠΎΡ‚Π²ΠΎΡ€ΠΈ ΠΊΠΎΠ΄Π° Π½Π° JunoDB DBMS

PayPal ΠΎΡ‚Π²ΠΎΡ€ΠΈ изходния ΠΊΠΎΠ΄ Π½Π° устойчивата Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π‘Π£Π‘Π” JunoDB, която ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π° Π΄Π°Π½Π½ΠΈ във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠ»ΡŽΡ‡-стойност. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ систСмата Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π° с висока сигурност, Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½Π° мащабируСмост, устойчивост Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ способност Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° стотици хиляди Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ с прСдсказуСми закъснСния. Π’ PayPal ΠΏΠΎΡ‡Ρ‚ΠΈ всички услуги, ΠΎΡ‚ Π²Π»ΠΈΠ·Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π΄ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° финансови Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с JunoDB. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ написан Π½Π° Go (клиСнтска Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° Java) ΠΈ сС разпространява ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·Π° Apache 2.0. По-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½ΠΎΡ‚ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Ρ‰Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ, подобрСния ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΎΡ‚ общността.

АрхитСктурата Π½Π° JunoDB сС основава Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ° заявки ΠΎΡ‚ клиСнтски прилоТСния ΠΈ Π³ΠΈ разпрСдСля ΠΌΠ΅ΠΆΠ΄Ρƒ прокси ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌΠ°Ρ‚ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π³Ρ€ΡƒΠΏΠ° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ заявката сС изпълни. ВсСки прокси ΡΡŠΡ€Π²ΡŠΡ€ установява Π²Ρ€ΡŠΠ·ΠΊΠΈ към всички ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ навСднъТ ΠΈ ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‰Π° заявки към Π³Ρ€ΡƒΠΏΠ° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ въз основа Π½Π° индСкса Π½Π° дяла, ΠΊΠΎΠΉΡ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² конфигурацията Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°Ρ‚Π° систСма Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ etcd.

PayPal ΠΎΡ‚Π²ΠΎΡ€ΠΈ ΠΊΠΎΠ΄Π° Π½Π° JunoDB DBMS

Π”Π°Π½Π½ΠΈΡ‚Π΅ са Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈ ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с възли Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ…Π΅ΡˆΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ намалява Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° растат ΠΈΠ»ΠΈ сС свиват. Π—Π° Π΄Π° сС осигури толСрантност към Π³Ρ€Π΅ΡˆΠΊΠΈ, всяка част ΠΎΡ‚ Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ€Π° Π½Π° няколко възСла Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚Π΅ информация, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ сС поврСдят. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° гСографски Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, Π² ΠΊΠΎΠΈΡ‚ΠΎ Π³Ρ€ΡƒΠΏΠΈ ΠΎΡ‚ възли са Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ²Π΅ Π·Π° Π΄Π°Π½Π½ΠΈ.

PayPal ΠΎΡ‚Π²ΠΎΡ€ΠΈ ΠΊΠΎΠ΄Π° Π½Π° JunoDB DBMS

На Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Ρ‚Π΅ сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π² RAM ΠΈΠ»ΠΈ Π² Π»ΠΎΠΊΠ°Π»Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ въз основа Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° RocksDB. ΠšΠΎΠ³Π°Ρ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ постоянно, Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π° Ρ„ΠΎΡ€ΠΌΠ° (ΠΊΠ»ΡŽΡ‡ΡŠΡ‚ Π·Π° ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° Π½ΠΈΠ²ΠΎ прокси).

PayPal ΠΎΡ‚Π²ΠΎΡ€ΠΈ ΠΊΠΎΠ΄Π° Π½Π° JunoDB DBMS

Π—Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ прилоТСния сС доставя клиСнтска Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, която прСдоставя 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 ΠΌΠΈΠ»ΠΈΠ°Ρ€Π΄Π° заявки Π½Π° Π΄Π΅Π½.

PayPal ΠΎΡ‚Π²ΠΎΡ€ΠΈ ΠΊΠΎΠ΄Π° Π½Π° JunoDB DBMS


Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€