PayPal ஆனது ஓப்பன் சோர்ஸ் ஜூனோடிபியைக் கொண்டுள்ளது, இது ஒரு தவறு-சகிப்புத்தன்மை கொண்ட டிபிஎம்எஸ் ஆகும், இது முக்கிய மதிப்பு வடிவத்தில் தரவைக் கையாளுகிறது. இந்த அமைப்பு முதலில் உயர் பாதுகாப்பு, கிடைமட்ட அளவிடுதல், தவறு சகிப்புத்தன்மை மற்றும் கணிக்கக்கூடிய தாமதங்களை மனதில் கொண்டு ஒரே நேரத்தில் நூறாயிரக்கணக்கான இணைப்புகளைக் கையாளும் திறன் ஆகியவற்றுடன் வடிவமைக்கப்பட்டது. PayPal இல், பயனர் உள்நுழைவு முதல் நிதி பரிவர்த்தனைகள் வரை கிட்டத்தட்ட அனைத்து சேவைகளும் JunoDB உடன் இணைக்கப்பட்டுள்ளன. திட்டக் குறியீடு Go (ஜாவா கிளையன்ட் லைப்ரரி) இல் எழுதப்பட்டு Apache 2.0 உரிமத்தின் கீழ் விநியோகிக்கப்படுகிறது. மேலும் வளர்ச்சியில், சமூகத்திலிருந்து திருத்தங்கள், மேம்பாடுகள் மற்றும் மாற்றங்கள் ஏற்றுக்கொள்ளப்படும்.
ஜூனோடிபி கட்டமைப்பானது, கிளையன்ட் பயன்பாடுகளின் கோரிக்கைகளை ஏற்று, ப்ராக்ஸி சர்வர்களிடையே விநியோகிக்கும் சுமை பேலன்சரைப் பயன்படுத்துவதை அடிப்படையாகக் கொண்டது. ஒவ்வொரு ப்ராக்ஸியும் அனைத்து சேமிப்பக சேவையகங்களுக்கும் ஒரே நேரத்தில் இணைப்புகளை நிறுவுகிறது மற்றும் etcd கட்டமைப்பின் விநியோகிக்கப்பட்ட சேமிப்பக அமைப்பில் சேமிக்கப்பட்ட பகிர்வு குறியீட்டின் அடிப்படையில் சேமிப்பக சேவையகங்களின் குழுவிற்கு கோரிக்கைகளை திருப்பி விடுகிறது.
ஒரு கிளஸ்டரில் முனைகள் வளரும் அல்லது சுருங்கும்போது தரவு இயக்கத்தைக் குறைக்க ஹாஷிங்கைப் பயன்படுத்தி தரவு பிரிக்கப்பட்டு சேமிப்பக முனைகளுடன் பிணைக்கப்படுகிறது. தவறு சகிப்புத்தன்மையை உறுதிசெய்ய, தரவுகளின் ஒவ்வொரு பகுதியும் பல சேமிப்பக முனைகளில் பிரதிபலிக்கப்படுகிறது, இது தனிப்பட்ட சேவையகங்கள் தோல்வியடையும் போது தகவலைச் சேமிக்க உங்களை அனுமதிக்கிறது. புவியியல் ரீதியாக விநியோகிக்கப்பட்ட சேமிப்பகங்களின் உருவாக்கம் ஆதரிக்கப்படுகிறது, இதில் முனைகளின் குழுக்கள் வெவ்வேறு தரவு மையங்களில் அமைந்துள்ளன.
சேமிப்பக முனைகளில், தரவு RAM இல் அல்லது RocksDB நூலகத்தின் அடிப்படையில் உள்ளூர் சேமிப்பகத்தில் வைக்கப்படுகிறது. நிலையான சேமிப்பகத்துடன், தரவு மறைகுறியாக்கப்பட்ட வடிவத்தில் சேமிக்கப்படுகிறது (குறியாக்க விசையை கிளையன்ட் இருவரும் தீர்மானிக்கலாம் மற்றும் ப்ராக்ஸி மட்டத்தில் அமைக்கலாம்).
பயன்பாடுகளிலிருந்து தரவுத்தளத்தை அணுக, ஜாவா, கோ மற்றும் சி++ ஆகியவற்றில் உள்ள பயன்பாடுகளுக்கு ஏபிஐ வழங்கும் கிளையன்ட் லைப்ரரி வழங்கப்படுகிறது. கிளையன்ட் பகுதி முடிந்தவரை எளிமைப்படுத்தப்பட்டுள்ளது, மேலும் சிக்கலான தர்க்கம் மற்றும் அமைப்புகள், முடிந்தால், DBMS இன் பக்கத்திற்கு நகர்த்தப்படும். கிளையன்ட் மற்றும் பேலன்சர் அல்லது ப்ராக்ஸி இடையேயான தொடர்பு ஒரு மறைகுறியாக்கப்பட்ட தகவல் தொடர்பு சேனல் மூலம் மேற்கொள்ளப்படுகிறது. கோரிக்கைகளை நிர்வகிக்கவும் அனுப்பவும் கட்டளை வரி இடைமுகத்தை நீங்கள் பயன்படுத்தலாம், இது கிளையன்ட் API இன் முழு செயல்பாட்டைப் பிரதிபலிக்கிறது.
கணிக்கக்கூடிய குறைந்த தாமதத்துடன் கோரிக்கைகளைச் செயல்படுத்தும் வகையில் இந்த அமைப்பு வடிவமைக்கப்பட்டுள்ளது, எடுத்துக்காட்டாக, n1-highmem-32 சூழல்களிலிருந்து (32 Intel Xeon 2.30GHz CPUகள், 214G RAM மற்றும் 450G SSD- அடிப்படையிலான சேமிப்பகத்திலிருந்து) உருவாக்கப்பட்ட மூன்று சேமிப்பக முனைகள் மற்றும் ஒரு ப்ராக்ஸியின் தொகுப்பு, 2.5 க்கும் மேற்பட்ட 95 ms மற்றும் 16 ms க்கு மேல் 99 ms இல் 200 ms ஐ மீறவில்லை. 15% 3000 ஆயிரம் ஒரே நேரத்தில் TLS இணைப்புகளை செயலாக்கும் போது மற்றும் வினாடிக்கு 80 ஆயிரம் கோரிக்கைகளின் ஓட்டம் (6 ஒரே நேரத்தில் இணைப்புகள் மற்றும் வினாடிக்கு 95 ஆயிரம் கோரிக்கைகளின் ஓட்டம், தாமதங்கள் 15% வழக்குகளில் 99 ms மற்றும் 350% இல் XNUMX ms ஐ தாண்டவில்லை). PayPal இல், JunoDB அடிப்படையிலான சேவைகள் ஒரு நாளைக்கு சுமார் XNUMX பில்லியன் கோரிக்கைகளை வழங்குகின்றன.
ஆதாரம்: opennet.ru