PayPal తప్పు-తట్టుకునే DBMS JunoDB యొక్క సోర్స్ కోడ్ను తెరిచింది, ఇది డేటాను కీ-విలువ ఆకృతిలో తారుమారు చేస్తుంది. సిస్టమ్ ప్రారంభంలో అధిక భద్రత, క్షితిజ సమాంతర స్కేలబిలిటీ, తప్పు సహనం మరియు ఊహాజనిత జాప్యాలను దృష్టిలో ఉంచుకుని వందల వేల ఏకకాల కనెక్షన్లను నిర్వహించగల సామర్థ్యంతో రూపొందించబడింది. PayPalలో, వినియోగదారు లాగిన్ల నుండి ఆర్థిక లావాదేవీలను ప్రాసెస్ చేయడం వరకు దాదాపు అన్ని సేవలు JunoDBతో ముడిపడి ఉన్నాయి. ప్రాజెక్ట్ కోడ్ గో (జావా క్లయింట్ లైబ్రరీ)లో వ్రాయబడింది మరియు Apache 2.0 లైసెన్స్ క్రింద పంపిణీ చేయబడుతుంది. మరింత అభివృద్ధి సంఘం నుండి సవరణలు, మెరుగుదలలు మరియు మార్పులను అంగీకరిస్తుంది.
JunoDB యొక్క ఆర్కిటెక్చర్ క్లయింట్ అప్లికేషన్ల నుండి అభ్యర్థనలను ఆమోదించే మరియు అభ్యర్థన అమలు చేయబడినప్పుడు నిల్వ సర్వర్ల సమూహాన్ని ఏకకాలంలో యాక్సెస్ చేసే ప్రాక్సీ సర్వర్ల మధ్య వాటిని పంపిణీ చేసే లోడ్ బ్యాలెన్సర్ వాడకంపై ఆధారపడి ఉంటుంది. ప్రతి ప్రాక్సీ సర్వర్ అన్ని స్టోరేజ్ సర్వర్లకు ఒకేసారి కనెక్షన్లను ఏర్పాటు చేస్తుంది మరియు విభజన సూచిక ఆధారంగా నిల్వ సర్వర్ల సమూహానికి అభ్యర్థనలను ఫార్వార్డ్ చేస్తుంది, ఇది పంపిణీ చేయబడిన నిల్వ సిస్టమ్ etcd కాన్ఫిగరేషన్లో నిల్వ చేయబడుతుంది.
డేటా విభజించబడింది మరియు హ్యాషింగ్ ఉపయోగించి నిల్వ నోడ్లకు లింక్ చేయబడింది, ఇది క్లస్టర్లోని నోడ్లు పెరగడం లేదా కుంచించుకుపోవడంతో డేటా కదలికను తగ్గిస్తుంది. తప్పు సహనాన్ని నిర్ధారించడానికి, ప్రతి డేటా భాగం అనేక నిల్వ నోడ్లలో ప్రతిరూపం చేయబడుతుంది, ఇది వ్యక్తిగత సర్వర్లు విఫలమైనప్పుడు సమాచారాన్ని సేవ్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. భౌగోళికంగా పంపిణీ చేయబడిన నిల్వల సృష్టికి మద్దతు ఉంది, దీనిలో నోడ్ల సమూహాలు వేర్వేరు డేటా కేంద్రాలలో ఉన్నాయి.
డేటా నిల్వ నోడ్లలో, అవి RAMలో లేదా RocksDB లైబ్రరీ ఆధారంగా స్థానిక నిల్వలో ఉంటాయి. శాశ్వతంగా నిల్వ చేయబడినప్పుడు, డేటా గుప్తీకరించిన రూపంలో నిల్వ చేయబడుతుంది (ఎన్క్రిప్షన్ కీని క్లయింట్ ద్వారా నిర్ణయించవచ్చు లేదా ప్రాక్సీ స్థాయిలో సెట్ చేయవచ్చు).
అప్లికేషన్ల నుండి డేటాబేస్ను యాక్సెస్ చేయడానికి, జావా, గో మరియు సి++లో అప్లికేషన్ల కోసం APIని అందించే క్లయింట్ లైబ్రరీ సరఫరా చేయబడుతుంది. క్లయింట్ భాగం సాధ్యమైనంతవరకు సరళీకృతం చేయబడింది మరియు సంక్లిష్ట తర్కం మరియు సెట్టింగ్లు సాధ్యమైనప్పుడల్లా DBMS వైపుకు బదిలీ చేయబడతాయి. క్లయింట్ మరియు బ్యాలెన్సర్ లేదా ప్రాక్సీ మధ్య పరస్పర చర్య ఎన్క్రిప్టెడ్ కమ్యూనికేషన్ ఛానెల్ ద్వారా నిర్వహించబడుతుంది. అభ్యర్థనలను నిర్వహించడానికి మరియు పంపడానికి, మీరు కమాండ్ లైన్ ఇంటర్ఫేస్ను ఉపయోగించవచ్చు, ఇది క్లయింట్ API యొక్క అన్ని సామర్థ్యాలను ప్రతిబింబిస్తుంది.
సిస్టమ్ ఊహించదగిన తక్కువ జాప్యాలతో అభ్యర్థనలను ప్రాసెస్ చేయడానికి రూపొందించబడింది, ఉదాహరణకు, మూడు స్టోరేజ్ నోడ్ల క్లస్టర్ మరియు ఒక ప్రాక్సీ, n1-highmem-32 ఎన్విరాన్మెంట్ల నుండి రూపొందించబడింది (32 Intel Xeon 2.30GHz CPUలు, 214G RAM మరియు 450G SSD-ఆధారిత నిల్వ) , 2.5 వేల ఏకకాల TLS కనెక్షన్లను ప్రాసెస్ చేస్తున్నప్పుడు 95% కేసులలో 16 ms మరియు 99% లో 200 ms మరియు సెకనుకు 15 వేల అభ్యర్థనల ప్రవాహాన్ని (3000 ఏకకాల కనెక్షన్లు మరియు 80 వేల అభ్యర్థనల ప్రవాహంతో) స్థిర ఆలస్యాలను అందించగలిగారు. సెకనుకు, ఆలస్యం 6% కేసులలో 95 ms మరియు 15% లో 99 ms మించలేదు). PayPalలో, JunoDB-ఆధారిత సేవలు రోజుకు 350 బిలియన్ల అభ్యర్థనలను అందిస్తాయి.
మూలం: opennet.ru