अत्यंत विश्वसनीय आणि फॉल्ट-टॉलरंट डिस्ट्रिब्युटेड सिस्टीम्स तयार करण्यासाठी पॅक्सोस, राफ्ट आणि PBFT सारखे कन्सेंसस अल्गोरिदम्स समजून घेण्याचा आणि इम्प्लीमेंट करण्याचा सर्वसमावेशक मार्ग.
डिस्ट्रिब्युटेड सिस्टीम्स: कन्सेंसस अल्गोरिदम्स इम्प्लीमेंटेशनच्या गुंतागुंतींना सामोरे जाणे
आधुनिक तंत्रज्ञानाच्या विशाल, आंतरजोडलेल्या परिदृश्यात, डिस्ट्रिब्युटेड सिस्टीम्स आपण दररोज वापरत असलेल्या जवळजवळ प्रत्येक गंभीर सेवेचा कणा बनवतात. ग्लोबल फायनान्शियल नेटवर्क्स आणि क्लाउड इन्फ्रास्ट्रक्चरपासून रिअल-टाइम कम्युनिकेशन प्लॅटफॉर्म्स आणि एंटरप्राइज ऍप्लिकेशन्सपर्यंत, या सिस्टीम्स एकाधिक स्वतंत्र कंप्युटिंग नोड्सवर कार्य करण्यासाठी डिझाइन केल्या आहेत. अद्वितीय स्केलेबिलिटी, रेझिलिन्स आणि अवेलेबिलिटी (उपलब्धता) ऑफर करताना, हे वितरण एक गहन आव्हान सादर करते: सर्व सहभागी नोड्सवर एक सुसंगत आणि मान्य स्थिती राखणे, जरी काही अपरिहार्यपणे अयशस्वी झाले तरीही. हे कन्सेंसस अल्गोरिदम्सचे क्षेत्र आहे.
कन्सेंसस अल्गोरिदम्स डिस्ट्रिब्युटेड वातावरणात डेटाची अखंडता आणि ऑपरेशनल सातत्य राखणारे मूक रक्षक आहेत. ते मशीनच्या समूहांना नेटवर्क डिलेज, नोड क्रॅश किंवा दुर्भावनापूर्ण वर्तणुकीच्या धोक्यांमध्येही एका मूल्यावर, ऑपरेशन्सच्या क्रमाने किंवा स्टेट ट्रांझिशनवर सहमत होण्यास सक्षम करतात. त्यांच्याशिवाय, आपल्या डिजिटल जगाकडून आपण जी विश्वसनीयता अपेक्षित करतो ती कोसळेल. हा सर्वसमावेशक मार्गदर्शक कन्सेंसस अल्गोरिदम्सच्या गुंतागुंतीच्या जगात प्रवेश करतो, त्यांची मूलभूत तत्त्वे तपासतो, प्रमुख इम्प्लीमेंटेशन्सचे परीक्षण करतो आणि वास्तविक-जगातील डिस्ट्रिब्युटेड सिस्टीम्समध्ये त्यांच्या डिप्लॉयमेंटसाठी व्यावहारिक अंतर्दृष्टी प्रदान करतो.
डिस्ट्रिब्युटेड कन्सेंससचे मूलभूत आव्हान
एक मजबूत डिस्ट्रिब्युटेड सिस्टीम तयार करणे स्वाभाविकपणे गुंतागुंतीचे आहे. मुख्य अडचण नेटवर्क्सच्या एसिंक्रोनस (असंबद्ध) स्वरूपात आहे, जिथे संदेश विलंबित, गहाळ किंवा पुनर्क्रमित केले जाऊ शकतात आणि नोड्स स्वतंत्रपणे अयशस्वी होऊ शकतात. एका वेळी अनेक सर्व्हरना विशिष्ट व्यवहार कमिट (पूर्ण) झाला आहे की नाही यावर सहमत होण्याची आवश्यकता असल्याचे परिदृश्य विचारात घ्या. जर काही सर्व्हर यश नोंदवत असतील तर काही अयशस्वी झाल्यास, सिस्टीमची स्थिती संदिग्ध बनते, ज्यामुळे डेटा विसंगती आणि संभाव्य ऑपरेशनल गोंधळ होतो.
CAP प्रमेय आणि त्याचे महत्त्व
डिस्ट्रिब्युटेड सिस्टीम्समधील एक मूलभूत संकल्पना म्हणजे CAP प्रमेय, जे सांगते की डिस्ट्रिब्युटेड डेटा स्टोअर एकाच वेळी खालील तीन गुणधर्मांपैकी फक्त दोनच हमी देऊ शकते:
- कन्सिस्टन्सी (Consistency): प्रत्येक रीड (वाचणे) सर्वात नवीन राईट (लिहिणे) किंवा एरर (त्रुटी) मिळवते.
- अवेलेबिलिटी (Availability): प्रत्येक विनंतीला प्रतिसाद मिळतो, सर्वात नवीन राईट आहे की नाही याची हमी न घेता.
- पार्टिशन टॉलरन्स (Partition Tolerance): नोड्समधील संदेश गमावणारे (पार्टिशन्स) यादृच्छिक नेटवर्क अपयश असूनही सिस्टीम कार्यरत राहते.
वास्तविकतेत, कोणत्याही पुरेशा मोठ्या प्रमाणात डिस्ट्रिब्युटेड सिस्टीममध्ये नेटवर्क पार्टिशन्स अपरिहार्य आहेत. म्हणून, डिझायनर्सना नेहमी पार्टिशन टॉलरन्स (P) निवडणे आवश्यक आहे. यामुळे कन्सिस्टन्सी (C) आणि अवेलेबिलिटी (A) यांच्यात निवड राहते. कन्सेंसस अल्गोरिदम्स प्रामुख्याने पार्टिशन्स (P) च्या धोक्यातही कन्सिस्टन्सी (C) राखण्यासाठी डिझाइन केले जातात, अनेकदा नेटवर्क स्प्लिट्स दरम्यान अवेलेबिलिटी (A) च्या किंमतीवर. जेव्हा डेटाची अखंडता अत्यंत महत्त्वाची असते, जसे की फायनान्शियल लेजर किंवा कॉन्फिगरेशन मॅनेजमेंट सेवा, तेव्हा ही तडजोड महत्त्वपूर्ण असते.
डिस्ट्रिब्युटेड सिस्टीम्समधील फॉल्ट मॉडेल्स
सिस्टीम कोणकोणत्या प्रकारच्या फॉल्ट्सचा (त्रुटींचा) सामना करू शकते हे समजून घेणे प्रभावी कन्सेंसस मेकॅनिझम डिझाइन करण्यासाठी महत्त्वपूर्ण आहे:
- क्रॅश फॉल्ट्स (Fail-Stop): एक नोड फक्त काम करणे थांबवतो. तो क्रॅश होऊ शकतो आणि रीस्टार्ट होऊ शकतो, परंतु तो चुकीचे किंवा दिशाभूल करणारे संदेश पाठवत नाही. हे हाताळण्यासाठी सर्वात सामान्य आणि सोपे फॉल्ट आहे.
- क्रॅश-रिकव्हरी फॉल्ट्स: क्रॅश फॉल्ट्ससारखेच, परंतु नोड्स क्रॅशमधून रिकव्हर होऊ शकतात आणि सिस्टीममध्ये पुन्हा सामील होऊ शकतात, योग्यरित्या हाताळले नसल्यास संभाव्यत: जुन्या स्थितीत (stale state).
- ओमिशन फॉल्ट्स: एक नोड संदेश पाठविण्यात किंवा प्राप्त करण्यात अयशस्वी होतो, किंवा संदेश ड्रॉप करतो. हे नेटवर्क समस्या किंवा सॉफ्टवेअर बग्समुळे असू शकते.
- बायझंटाईन फॉल्ट्स: सर्वात गंभीर आणि गुंतागुंतीचे. नोड्स यादृच्छिकपणे वागू शकतात, दुर्भावनापूर्ण किंवा दिशाभूल करणारे संदेश पाठवू शकतात, इतर सदोष नोड्ससह संगनमत करू शकतात किंवा सिस्टीममध्ये सक्रियपणे गैरव्यवहार करण्याचा प्रयत्न करू शकतात. हे फॉल्ट्स सामान्यत: ब्लॉकचेन किंवा मिलिटरी ऍप्लिकेशन्ससारख्या अत्यंत संवेदनशील वातावरणात विचारात घेतले जातात.
FLP अशक्यतेचा निकाल
एक गंभीर सैद्धांतिक निकाल, FLP अशक्यता प्रमेय (Fischer, Lynch, Paterson, 1985), सांगते की एसिंक्रोनस डिस्ट्रिब्युटेड सिस्टीममध्ये, जर एक प्रक्रिया देखील क्रॅश झाली तरीही कन्सेंसस मिळवणे अशक्य आहे. हे प्रमेय कन्सेंसस साध्य करण्याच्या आंतरिक अडचणीवर प्रकाश टाकते आणि स्पष्ट करते की व्यावहारिक अल्गोरिदम अनेकदा नेटवर्क सिंक्रोनी (उदा. मर्यादित वेळेत संदेश वितरण) बद्दल गृहीतके का करतात किंवा प्रोग्रेस निश्चितऐवजी संभाव्य बनविण्यासाठी यादृच्छिकता आणि टाइमआउट्सवर का अवलंबून राहतात. याचा अर्थ असा आहे की सिस्टीम खूप उच्च संभाव्यतेसह कन्सेंसस मिळविण्यासाठी डिझाइन केली जाऊ शकते, परंतु पूर्णपणे एसिंक्रोनस, अयशस्वी-प्रवण वातावरणात पूर्ण निश्चितता सैद्धांतिकरित्या अप्राप्य आहे.
कन्सेंसस अल्गोरिदम्समधील मुख्य संकल्पना
या आव्हानांनंतरही, व्यावहारिक कन्सेंसस अल्गोरिदम्स अपरिहार्य आहेत. ते सामान्यतः मुख्य गुणधर्मांच्या संचाचे पालन करतात:
- Agreement (सामंजस्य): सर्व नॉन-फॉल्टी (सदोष नसलेले) प्रक्रिया अखेरीस एकाच मूल्यावर सहमत होतात.
- Validity (वैधता): जर
vहे मूल्य मान्य केले गेले असेल, तरvकोणत्याही प्रक्रियेद्वारे प्रस्तावित केले गेले असावे. - Termination (समाप्ती): सर्व नॉन-फॉल्टी प्रक्रिया अखेरीस एका मूल्यावर निर्णय घेतात.
- Integrity (अखंडता): प्रत्येक नॉन-फॉल्टी प्रक्रिया जास्तीत जास्त एक मूल्य ठरवते.
या मूलभूत गुणधर्मांव्यतिरिक्त, अनेक यंत्रणा सामान्यतः वापरल्या जातात:
- लीडर इलेक्शन (Leader Election): अनेक कन्सेंसस अल्गोरिदम्स 'लीडर' नियुक्त करतात जो मूल्ये प्रस्तावित करण्यासाठी आणि कन्सेंसस प्रक्रियेचे संचालन करण्यासाठी जबाबदार असतो. जर लीडर अयशस्वी झाला, तर नवीन लीडर निवडला गेला पाहिजे. हे समन्वय सोपे करते परंतु योग्यरित्या हाताळले नसल्यास संभाव्य सिंगल पॉइंट ऑफ फेल्युअर (प्रस्तावित करण्यासाठी, सहमत होण्यासाठी नाही) सादर करते.
- क्वोरा (Quorums): प्रत्येक नोडला सहमत होण्यास सांगण्याऐवजी, कन्सेंसस अनेकदा तेव्हाच प्राप्त होतो जेव्हा नोड्सचा 'क्वोरा' (एक बहुसंख्य किंवा विशिष्ट उपसंच) प्रस्तावाला पोचपावती देतो. यामुळे काही नोड्स बंद किंवा धीमे असले तरीही सिस्टीमला प्रगती करता येते. दोन छेदनबिंदू क्वोरा नेहमी किमान एक सामान्य नोड सामायिक करतील याची खात्री करण्यासाठी क्वोरा आकार काळजीपूर्वक निवडले जातात, ज्यामुळे विरोधाभासी निर्णय टाळता येतात.
- लॉग रेप्लिकेशन (Log Replication): कन्सेंसस अल्गोरिदम्स अनेकदा अनेक मशीन्सवर कमांड्सची क्रमवारी (लॉग) रेप्लिकेट करून कार्य करतात. प्रत्येक कमांड, एकदा कन्सेंससद्वारे मान्य झाल्यावर, लॉकमध्ये जोडली जाते. हा लॉग नंतर 'स्टेट मशीन'साठी एक निश्चित इनपुट म्हणून कार्य करतो, हे सुनिश्चित करतो की सर्व रेप्लिका कमांड्स एकाच क्रमाने प्रक्रिया करतात आणि समान स्थितीत पोहोचतात.
लोकप्रिय कन्सेंसस अल्गोरिदम्स आणि त्यांची इम्प्लीमेंटेशन्स
कन्सेंससचे सैद्धांतिक परिदृश्य विशाल असले तरी, काही अल्गोरिदम्स व्यावहारिक डिस्ट्रिब्युटेड सिस्टीम्समध्ये प्रमुख उपाय म्हणून उदयास आले आहेत. प्रत्येकाने जटिलता, कार्यप्रदर्शन आणि फॉल्ट टॉलरन्स वैशिष्ट्ये यांचे भिन्न संतुलन ऑफर केले आहे.
Paxos: डिस्ट्रिब्युटेड कन्सेंससचा गॉडफादर
प्रथम लेस्ली लॅमपोर्ट यांनी १९९० मध्ये प्रकाशित केले (जरी ते नंतरच व्यापकपणे समजले गेले), Paxos हे कदाचित सर्वात प्रभावशाली आणि व्यापकपणे अभ्यासलेले कन्सेंसस अल्गोरिदम आहे. क्रॅश-प्रवण प्रक्रिया असलेल्या एसिंक्रोनस नेटवर्कमध्ये कन्सेंसस साध्य करण्याच्या क्षमतेमुळे ते प्रसिद्ध आहे, जर बहुसंख्य प्रक्रिया कार्यरत असतील. तथापि, त्याचे औपचारिक वर्णन समजणे अत्यंत कठीण आहे, ज्यामुळे असे म्हटले जाते, "Paxos सोपे आहे, एकदा तुम्हाला ते समजले की."
Paxos कसे कार्य करते (सरलीकृत)
Paxos तीन प्रकारचे सहभागी परिभाषित करते:
- Proposers (प्रस्तावक): सहमत होण्यासाठी मूल्य प्रस्तावित करतात.
- Acceptors (स्वीकारकर्ते): प्रस्तावित मूल्यांवर मतदान करतात. ते पाहिलेले सर्वोच्च प्रस्ताव क्रमांक आणि त्यांनी स्वीकारलेले मूल्य संग्रहित करतात.
- Learners (शिकणारे): कोणते मूल्य निवडले गेले आहे हे शोधतात.
अल्गोरिदम दोन मुख्य टप्प्यांमध्ये पुढे जातो:
-
Phase 1 (Prepare - तयार करा):
- 1a (Prepare): एक Proposer नवीन, जागतिक स्तरावर युनिक प्रस्ताव क्रमांक
nसह 'Prepare' संदेश बहुसंख्य Acceptors कडे पाठवतो. - 1b (Promise - वचन): एक Acceptor, Prepare संदेश
(n)प्राप्त झाल्यावर,nपेक्षा कमी क्रमांकाच्या कोणत्याही भविष्यातील प्रस्तावांना दुर्लक्षित करण्याचे 'Promise' (वचन) देऊन प्रतिसाद देतो. जर त्याने पूर्वीच्या प्रस्तावासाठी मूल्य स्वीकारले असेल, तर ते त्याच्या प्रतिसादात सर्वोच्च-क्रमांकित स्वीकारलेले मूल्य(v_accepted)आणि त्याचा प्रस्ताव क्रमांक(n_accepted)समाविष्ट करते.
- 1a (Prepare): एक Proposer नवीन, जागतिक स्तरावर युनिक प्रस्ताव क्रमांक
-
Phase 2 (Accept - स्वीकारा):
- 2a (Accept): जर Proposer ला बहुसंख्य Acceptors कडून Promises मिळाल्या, तर तो त्याच्या प्रस्तावासाठी
vमूल्य निवडतो. जर कोणत्याही Acceptor ने पूर्वी स्वीकारलेले मूल्यv_acceptedनोंदवले असेल, तर Proposer ला सर्वोच्चn_acceptedशी संबंधित मूल्य निवडणे आवश्यक आहे. अन्यथा, तो स्वतःचे मूल्य प्रस्तावित करू शकतो. त्यानंतर तो प्रस्ताव क्रमांकnआणि निवडलेले मूल्यvअसलेले 'Accept' संदेश त्याच बहुसंख्य Acceptors कडे पाठवतो. - 2b (Accepted - स्वीकारले): एक Acceptor, Accept संदेश
(n, v)प्राप्त झाल्यावर, जर त्यानेnपेक्षा कमी क्रमांकाच्या प्रस्तावांना दुर्लक्षित करण्याचे वचन दिले नसेल, तरvमूल्य स्वीकारतो. त्यानंतर तो Learners ला स्वीकारलेल्या मूल्याबद्दल सूचित करतो.
- 2a (Accept): जर Proposer ला बहुसंख्य Acceptors कडून Promises मिळाल्या, तर तो त्याच्या प्रस्तावासाठी
Paxos चे फायदे आणि तोटे
- फायदे: अत्यंत फॉल्ट-टॉलरंट (
2f+1नोड्समध्येfक्रॅश अपयशांना सहन करू शकते). नेटवर्क पार्टिशन्स दरम्यानही सेफटी (Safety) ची हमी देते (कधीही चुकीचा निर्णय घेत नाही). निश्चित लीडरशिवाय प्रगती करू शकते (जरी लीडर इलेक्शन ते सोपे करते). - तोटे: समजून घेणे आणि योग्यरित्या इम्प्लीमेंट करणे अत्यंत क्लिष्ट. लाईव्हनेस (Liveness) समस्यांना बळी पडू शकते (उदा. वारंवार लीडर इलेक्शन, ज्यामुळे स्टार्वेशन होते) विशिष्ट ऑप्टिमायझेशनशिवाय (उदा. मल्टी-पॅक्सोस सारखे डिस्टिंग्विश्ड लीडर वापरणे).
व्यावहारिक इम्प्लीमेंटेशन्स आणि व्हेरिएंट्स
त्याच्या जटिलतेमुळे, शुद्ध Paxos क्वचितच थेट इम्प्लीमेंट केले जाते. त्याऐवजी, सिस्टीम्स अनेकदा Multi-Paxos सारखे व्हेरिएंट वापरतात, जे एका स्थिर लीडरद्वारे अनेक मूल्यांचे अनुक्रमिकपणे प्रस्ताव ठेवून लीडर इलेक्शनचा ओव्हरहेड कमी करते. Paxos (किंवा त्याच्या डेरिव्हेटिव्ह्ज) ने प्रभावित झालेल्या किंवा थेट वापरलेल्या सिस्टीम्सची उदाहरणे Google's Chubby लॉक सेवा, Apache ZooKeeper (ZAB, Paxos-सारखे अल्गोरिदम वापरून) आणि विविध डिस्ट्रिब्युटेड डेटाबेस सिस्टीम्स आहेत.
Raft: समजून घेण्यायोग्यतेसाठी कन्सेंसस
Raft स्टॅनफर्ड युनिव्हर्सिटीमध्ये डिएगो ओंगारो आणि जॉन ओस्टरहॉट यांनी स्पष्ट उद्देशाने विकसित केले होते: 'समजून घेण्यायोग्य' असणे. Paxos कन्सेंसससाठी सैद्धांतिक किमानतेवर लक्ष केंद्रित करते, तर Raft अधिक संरचित आणि अंतर्ज्ञानी दृष्टिकोन प्राधान्य देते, ज्यामुळे ते इम्प्लीमेंट करणे आणि तर्क करणे लक्षणीयरीत्या सोपे होते.
Raft कसे कार्य करते
Raft त्याच्या नोड्सच्या स्पष्ट भूमिका आणि साध्या स्टेट ट्रांझिशन्स परिभाषित करून कन्सेंसस साधते:
- Leader (लीडर): मुख्य नोड जो सर्व क्लायंट विनंत्या हाताळण्यासाठी, लॉग एंट्रीज प्रस्तावित करण्यासाठी आणि त्या फॉलोअर्सना रेप्लिकेट करण्यासाठी जबाबदार असतो. एका वेळी फक्त एक लीडर असतो.
- Follower (अनुयायी): निष्क्रिय नोड्स जे केवळ लीडरकडून विनंत्यांना प्रतिसाद देतात आणि उमेदवारांना मतदान करतात.
- Candidate (उमेदवार): जेव्हा एखाद्या फॉलोअरला लीडर अयशस्वी झाल्याचे वाटते, तेव्हा तो उमेदवाराची स्थिती धारण करतो, ज्यामुळे नवीन लीडर इलेक्शन सुरू होते.
- Leader Election (लीडर इलेक्शन): जेव्हा एखाद्या फॉलोअरला ठराविक टाइमआउट कालावधीसाठी लीडरकडून कोणतीही माहिती मिळत नाही, तेव्हा तो उमेदवार बनतो. तो त्याचे चालू टर्म (लॉजिकल क्लॉक) वाढवतो आणि स्वतःला मत देतो. त्यानंतर तो इतर नोड्सना 'RequestVote' RPCs पाठवतो. जर त्याला बहुसंख्य मतं मिळाली, तर तो नवीन लीडर बनतो. जर दुसरा नोड लीडर बनला किंवा मतांचे विभाजन झाले, तर नवीन इलेक्शन टर्म सुरू होते.
- Log Replication (लॉग रेप्लिकेशन): एकदा लीडर निवडला गेला की, तो क्लायंट कमांड्स मिळवतो आणि त्या त्याच्या लोकल लॉकमध्ये जोडतो. त्यानंतर तो या एंट्रीज रेप्लिकेट करण्यासाठी सर्व फॉलोअर्सना 'AppendEntries' RPCs पाठवतो. लॉग एंट्री एकदा लीडरने बहुसंख्य फॉलोअर्सकडे रेप्लिकेट केल्यावर कमिट (पूर्ण) केली जाते. केवळ कमिट केलेल्या एंट्रीज स्टेट मशीनवर लागू केल्या जातात.
Raft चे फायदे आणि तोटे
- फायदे: Paxos पेक्षा समजून घेणे आणि इम्प्लीमेंट करणे लक्षणीयरीत्या सोपे. मजबूत लीडर मॉडेल क्लायंट इंटरॅक्शन आणि लॉग व्यवस्थापन सोपे करते. क्रॅश फॉल्ट्सच्या धोक्यात सेफटी आणि लाईव्हनेसची हमी देते.
- तोटे: मजबूत लीडर राइट-हेवी वर्कलोडसाठी बॉटलनेक (अडथळा) ठरू शकतो (जरी अनेक उपयोगांसाठी हे स्वीकार्य आहे). प्रगतीसाठी स्थिर लीडरची आवश्यकता असते, ज्यावर वारंवार नेटवर्क पार्टिशन्स किंवा लीडर अपयशांचा परिणाम होऊ शकतो.
Raft ची व्यावहारिक इम्प्लीमेंटेशन्स
Raft च्या समजून घेण्यायोग्यतेसाठी डिझाइनमुळे त्याचा व्यापक अवलंब झाला आहे. प्रमुख उदाहरणांमध्ये हे समाविष्ट आहेत:
- etcd: Kubernetes द्वारे क्लस्टर कोऑर्डिनेशन आणि स्टेट मॅनेजमेंटसाठी वापरलेला डिस्ट्रिब्युटेड की-व्हॅल्यू स्टोअर.
- Consul: एक सर्व्हिस मेश सोल्यूशन जे सेवा शोध आणि कॉन्फिगरेशनसाठी त्याच्या अत्यंत उपलब्ध आणि सुसंगत डेटा स्टोअरसाठी Raft वापरते.
- cockroachDB: एक डिस्ट्रिब्युटेड SQL डेटाबेस जो त्याच्या अंतर्निहित स्टोरेज आणि रेप्लिकेशनसाठी Raft-आधारित दृष्टिकोन वापरतो.
- HashiCorp Nomad: एक वर्कलोड ऑकेस्ट्रेटर जो त्याच्या एजंट्सच्या समन्वयासाठी Raft वापरतो.
ZAB (ZooKeeper Atomic Broadcast)
ZAB हा Apache ZooKeeper, एक व्यापकपणे वापरला जाणारा डिस्ट्रिब्युटेड कोऑर्डिनेशन सेवा, याच्या केंद्रस्थानी असलेला कन्सेंसस अल्गोरिदम आहे. Paxos शी वारंवार तुलना केली जात असली तरी, ZAB विशेषतः ZooKeeper च्या आवश्यकतांसाठी तयार केले गेले आहे, जे स्टेट बदलांसाठी एक ऑर्डर्ड, विश्वसनीय ब्रॉडकास्ट प्रदान करते आणि लीडर इलेक्शन व्यवस्थापित करते.
ZAB कसे कार्य करते
ZAB चा उद्देश सर्व ZooKeeper रेप्लिकांची स्थिती सिंक्रोनाइझ ठेवणे आहे. हे टप्प्यांच्या मालिकेद्वारे साध्य करते:
- Leader Election: ZooKeeper एटॉमिक ब्रॉडकास्ट प्रोटोकॉलचे (ज्यामध्ये लीडर इलेक्शनचा समावेश आहे) एक व्हेरिएंट वापरते जेणेकरून एक लीडर नेहमी सक्रिय राहील याची खात्री केली जाईल. जेव्हा वर्तमान लीडर अयशस्वी होतो, तेव्हा एक इलेक्शन प्रक्रिया सुरू होते जिथे नोड्स नवीन लीडरसाठी मतदान करतात, सामान्यत: सर्वात अद्ययावत लॉग असलेला नोड.
- Discovery: एकदा लीडर निवडला गेला की, तो त्याच्या फॉलोअर्सकडून सर्वात अद्ययावत स्थिती निर्धारित करण्यासाठी डिस्कव्हरी फेज सुरू करतो. फॉलोअर्स त्यांचे सर्वोच्च लॉग आयडी लीडरला पाठवतात.
- Synchronization: लीडर नंतर त्याची स्थिती फॉलोअर्ससह सिंक्रोनाइझ करतो, त्यांना अद्ययावत आणण्यासाठी कोणतेही गहाळ व्यवहार पाठवतो.
- Broadcast: सिंक्रोनायझेशननंतर, सिस्टीम ब्रॉडकास्ट फेजमध्ये प्रवेश करते. लीडर नवीन व्यवहार (क्लायंट राईट्स) प्रस्तावित करतो आणि हे प्रस्ताव फॉलोअर्सकडे ब्रॉडकास्ट केले जातात. एकदा बहुसंख्य फॉलोअर्सने प्रस्तावाची पोचपावती दिली की, लीडर तो कमिट करतो आणि कमिट संदेश ब्रॉडकास्ट करतो. फॉलोअर्स नंतर कमिट केलेला व्यवहार त्यांच्या लोकल स्थितीवर लागू करतात.
ZAB ची मुख्य वैशिष्ट्ये
- टोटल ऑर्डर ब्रॉडकास्टवर लक्ष केंद्रित करते, ज्यामुळे सर्व रेप्लिकावर सर्व अपडेट्स समान क्रमाने प्रक्रिया केल्या जातात याची खात्री होते.
- उच्च थ्रूपुट राखण्यासाठी लीडर स्थिरतेवर जोरदार भर.
- लीडर इलेक्शन आणि स्टेट सिंक्रोनायझेशनला मुख्य घटक म्हणून समाकलित करते.
ZAB चा व्यावहारिक वापर
Apache ZooKeeper अनेक इतर डिस्ट्रिब्युटेड सिस्टीम्ससाठी एक मूलभूत सेवा प्रदान करते, ज्यात Apache Kafka, Hadoop, HBase आणि Solr यांचा समावेश आहे, डिस्ट्रिब्युटेड कॉन्फिगरेशन, लीडर इलेक्शन आणि नेमिंग (नामकरण) यांसारख्या सेवा प्रदान करते. त्याची विश्वसनीयता थेट मजबूत ZAB प्रोटोकॉलमधून येते.
Byzantine Fault Tolerance (BFT) Algorithms
Paxos, Raft आणि ZAB प्रामुख्याने क्रॅश फॉल्ट्स हाताळत असले तरी, काही वातावरणांना Byzantine faults (बायझंटाईन त्रुटी) पासून रेझिलिन्सची (लवचिकता) आवश्यकता असते, जिथे नोड्स दुर्भावनापूर्ण किंवा यादृच्छिकपणे वागू शकतात. हे विशेषतः विश्वास नसलेल्या वातावरणात संबंधित आहे, जसे की सार्वजनिक ब्लॉकचेन्स किंवा अत्यंत संवेदनशील सरकारी/सैन्य प्रणाली.
Practical Byzantine Fault Tolerance (PBFT)
PBFT, कास्ट्रो आणि लिस्कोव्ह यांनी १९९९ मध्ये प्रस्तावित केलेले, हे सर्वात प्रसिद्ध आणि व्यावहारिक BFT अल्गोरिदम्सपैकी एक आहे. हे डिस्ट्रिब्युटेड सिस्टीमला एकतर एक तृतीयांश नोड्स बायझंटाईन (दुर्भावनापूर्ण किंवा सदोष) असले तरीही कन्सेंसस साध्य करण्यास अनुमती देते.
PBFT कसे कार्य करते (सरलीकृत)
PBFT व्ह्यूजच्या मालिकेत कार्य करते, प्रत्येक व्ह्यूमध्ये एक नियुक्त प्राथमिक (लीडर) असतो. जेव्हा प्राथमिक अयशस्वी होतो किंवा सदोष असल्याची शंका येते, तेव्हा नवीन प्राथमिक निवडण्यासाठी व्ह्यू चेंज प्रोटोकॉल सुरू केला जातो.
क्लायंट विनंतीसाठी सामान्य ऑपरेशनमध्ये अनेक टप्पे समाविष्ट असतात:
- Client Request (क्लायंट विनंती): एक क्लायंट प्राथमिक नोडला विनंती पाठवतो.
- Pre-Prepare: प्राथमिक विनंतीला अनुक्रम क्रमांक (sequence number) नियुक्त करतो आणि 'Pre-Prepare' संदेश सर्व बॅकअप (फॉलोअर) नोड्सना मल्टीकास्ट (एकाधिक प्राप्तकर्त्यांना पाठवतो) करतो. हे विनंतीसाठी एक प्रारंभिक क्रम स्थापित करते.
- Prepare: Pre-Prepare संदेश प्राप्त झाल्यावर, बॅकअप त्याची सत्यता पडताळतात आणि नंतर 'Prepare' संदेश इतर सर्व रेप्लिका, प्राथमिक सह, मल्टीकास्ट करतात. हा टप्पा सुनिश्चित करतो की सर्व नॉन-फॉल्टी रेप्लिका विनंत्यांच्या क्रमाने सहमत आहेत.
-
Commit: एकदा रेप्लिकाने विशिष्ट विनंतीसाठी
2f+1Prepare संदेश (त्याच्या स्वतःच्या सह) प्राप्त केले की (जेथेfसदोष नोड्सची कमाल संख्या आहे), ते इतर सर्व रेप्लिकाना 'Commit' संदेश मल्टीकास्ट करते. हा टप्पा सुनिश्चित करतो की विनंती कमिट केली जाईल. -
Reply:
2f+1Commit संदेश प्राप्त केल्यानंतर, एक रेप्लिका क्लायंट विनंती कार्यान्वित करते आणि क्लायंटला 'Reply' पाठवते. क्लायंट ऑपरेशन यशस्वी मानण्यापूर्वीf+1समान रिप्लायची वाट पाहतो.
PBFT चे फायदे आणि तोटे
- फायदे: बायझंटाईन फॉल्ट्सना सहन करते, दुर्भावनापूर्ण सहभागी असूनही मजबूत सेफटी गॅरंटी (सुरक्षिततेची हमी) सुनिश्चित करते. निश्चित कन्सेंसस (कोणत्याही संभाव्य अंतिमतेशिवाय).
- तोटे: लक्षणीय कम्युनिकेशन ओव्हरहेड (प्रति कन्सेंसस राऊंड
O(n^2)संदेशांची आवश्यकता असते, जेथेnरेप्लिकांची संख्या आहे), ज्यामुळे स्केलेबिलिटी मर्यादित होते. उच्च लॅटेन्सी. क्लिष्ट इम्प्लीमेंटेशन.
PBFT ची व्यावहारिक इम्प्लीमेंटेशन्स
त्याच्या ओव्हरहेडमुळे मुख्य प्रवाहातील इन्फ्रास्ट्रक्चरमध्ये कमी सामान्य असले तरी, PBFT आणि त्याचे डेरिव्हेटिव्ह्ज अशा वातावरणात महत्त्वपूर्ण आहेत जिथे विश्वासाची अपेक्षा केली जात नाही:
- Hyperledger Fabric: एक परवानाकृत ब्लॉकचेन प्लॅटफॉर्म जो व्यवहारांच्या ऑर्डरिंग आणि अंतिमतेसाठी PBFT (किंवा एक मॉड्युलर कन्सेंसस सेवा) चे एक रूप वापरतो.
- विविध ब्लॉकचेन प्रोजेक्ट्स: अनेक एंटरप्राइज ब्लॉकचेन आणि परवानाकृत डिस्ट्रिब्युटेड लेजर टेक्नॉलॉजीज (DLTs) ज्ञात, परंतु संभाव्यत: अविश्वसनीय, सहभागींमध्ये कन्सेंसस साध्य करण्यासाठी BFT अल्गोरिदम्स किंवा व्हेरिएंट्स वापरतात.
कन्सेंसस इम्प्लीमेंट करणे: व्यावहारिक विचार
कन्सेंसस अल्गोरिदम निवडणे आणि इम्प्लीमेंट करणे हे एक महत्त्वपूर्ण काम आहे. यशस्वी डिप्लॉयमेंटसाठी अनेक व्यावहारिक घटकांचा काळजीपूर्वक विचार करणे आवश्यक आहे.
योग्य अल्गोरिदम निवडणे
कन्सेंसस अल्गोरिदमची निवड तुमच्या सिस्टीमच्या विशिष्ट आवश्यकतांवर मोठ्या प्रमाणात अवलंबून असते:
- फॉल्ट टॉलरन्स आवश्यकता: तुम्हाला फक्त क्रॅश फॉल्ट्स सहन करण्याची आवश्यकता आहे की बायझंटाईन अपयशांचाही विचार करावा लागेल? बहुतेक एंटरप्राइज ऍप्लिकेशन्ससाठी, Raft किंवा Paxos सारखे क्रॅश-फॉल्ट टॉलरंट अल्गोरिदम्स पुरेसे आणि अधिक परफॉर्मंट आहेत. अत्यंत प्रतिकूल किंवा विश्वास नसलेल्या वातावरणासाठी (उदा. सार्वजनिक ब्लॉकचेन्स), BFT अल्गोरिदम्स आवश्यक आहेत.
- कार्यप्रदर्शन विरुद्ध कन्सिस्टन्सी ट्रेड-ऑफ: उच्च कन्सिस्टन्सीला अनेकदा उच्च लॅटेन्सी आणि कमी थ्रूपुट येतो. इव्हेंचुअल कन्सिस्टन्सी विरुद्ध स्ट्रॉंग कन्सिस्टन्सीसाठी तुमच्या ऍप्लिकेशनची सहनशीलता समजून घ्या. Raft अनेक ऍप्लिकेशन्ससाठी चांगला समतोल साधतो.
- इम्प्लीमेंटेशन आणि मेंटेनन्सची सोपीता: Raft ची साधेपणा त्याला नवीन इम्प्लीमेंटेशन्ससाठी एक लोकप्रिय पर्याय बनवते. Paxos, जरी शक्तिशाली असले तरी, योग्यरित्या मिळवणे अत्यंत कठीण आहे. तुमच्या अभियांत्रिकी टीमच्या कौशल्याचा आणि दीर्घकालीन मेंटेनन्सचा विचार करा.
-
स्केलेबिलिटी गरजा: तुमच्या क्लस्टरमध्ये किती नोड्स असतील? ते किती भौगोलिकदृष्ट्या पसरलेले असतील?
O(n^2)कम्युनिकेशन कॉम्प्लेक्सिटी (PBFT सारखे) असलेले अल्गोरिदम शेकडो किंवा हजारो नोड्सपर्यंत स्केल होणार नाहीत, तर लीडर-आधारित अल्गोरिदम मोठे क्लस्टर अधिक प्रभावीपणे व्यवस्थापित करू शकतात.
नेटवर्क रीलिबिलिटी आणि टाइमआउट्स
कन्सेंसस अल्गोरिदम्स नेटवर्कच्या परिस्थितीसाठी अत्यंत संवेदनशील असतात. इम्प्लीमेंटेशन्सने खालील गोष्टींना मजबूतपणे हाताळणे आवश्यक आहे:
- नेटवर्क लॅटेन्सी: डिलेजमुळे कन्सेंसस राऊंड्स मंद होऊ शकतात, विशेषतः ज्या अल्गोरिदम्सना अनेक संवाद राऊंड्सची आवश्यकता असते.
- पॅकेट लॉस: संदेश ड्रॉप होऊ शकतात. विश्वसनीय संदेश वितरणाची खात्री करण्यासाठी अल्गोरिदम्सनी रिट्राइज (पुन्हा प्रयत्न) आणि पोचपावती (acknowledgments) वापरल्या पाहिजेत.
- नेटवर्क पार्टिशन्स: सिस्टीमने पार्टिशन्स ओळखण्यास आणि त्यातून बाहेर पडण्यास सक्षम असणे आवश्यक आहे, शक्यतो स्प्लिट दरम्यान कन्सिस्टन्सीसाठी अवेलेबिलिटीचा त्याग करून.
- अॅडाप्टिव्ह टाइमआउट्स: निश्चित टाइमआउट्स समस्याप्रधान असू शकतात. डायनॅमिक, अॅडाप्टिव्ह टाइमआउट्स (उदा. लीडर इलेक्शनसाठी) सिस्टीम्सना बदलत्या नेटवर्क लोड आणि परिस्थितीमध्ये अधिक चांगले कार्य करण्यास मदत करू शकतात.
स्टेट मशीन रेप्लिकेशन (SMR)
कन्सेंसस अल्गोरिदम्स अनेकदा State Machine Replication (SMR) इम्प्लीमेंट करण्यासाठी वापरले जातात. SMR मध्ये, सेवेच्या सर्व रेप्लिका समान प्रारंभिक स्थितीतून सुरू होतात आणि समान क्रमाने क्लायंट कमांड्सची समान क्रमवारी प्रक्रिया करतात. जर कमांड्स निश्चित असतील, तर सर्व रेप्लिका समान स्टेट्समधून जातील, कन्सिस्टन्सी सुनिश्चित करतील. स्टेट मशीनवर लागू होणाऱ्या कमांड्सच्या टोटल ऑर्डरवर सहमत होणे हे कन्सेंसस अल्गोरिदमची भूमिका आहे. हा दृष्टिकोन रेप्लिकेटेड डेटाबेस, डिस्ट्रिब्युटेड लॉक्स आणि कॉन्फिगरेशन सर्व्हिसेस यांसारख्या फॉल्ट-टॉलरंट सर्व्हिसेस तयार करण्यासाठी मूलभूत आहे.
मॉनिटरिंग आणि ऑब्झर्वेबिलिटी
कन्सेंसस अल्गोरिदम्ससह डिस्ट्रिब्युटेड सिस्टीम ऑपरेट करण्यासाठी विस्तृत मॉनिटरिंग आवश्यक आहे. ट्रॅक करण्यासाठी मुख्य मेट्रिक्समध्ये हे समाविष्ट आहे:
- लीडर स्टेटस: सध्या लीडर कोणता नोड आहे? तो किती काळ लीडर आहे?
- लॉग रेप्लिकेशन प्रोग्रेस: फॉलोअर्स लीडरच्या लॉगमधून मागे पडत आहेत का? रेप्लिकेशन लॅग (विलंब) किती आहे?
- कन्सेंसस राऊंड लॅटेन्सी: नवीन एंट्री कमिट करण्यासाठी किती वेळ लागतो?
- नेटवर्क लॅटेन्सी आणि पॅकेट लॉस: सर्व नोड्समध्ये, विशेषतः लीडर आणि फॉलोअर्स दरम्यान.
- नोड हेल्थ: सर्व सहभागींसाठी CPU, मेमरी, डिस्क I/O.
या मेट्रिक्सवर आधारित प्रभावी अलर्टिंग कन्सेंसस अयशस्वी झाल्यामुळे सेवा आउटेज टाळून, समस्यांचे निदान आणि निराकरण करण्यासाठी महत्त्वपूर्ण आहे.
सुरक्षा पैलू
जरी कन्सेंसस अल्गोरिदम्स कराराची खात्री देत असले तरी, ते अंगभूत सुरक्षा प्रदान करत नाहीत. इम्प्लीमेंटेशन्समध्ये खालील गोष्टी विचारात घेणे आवश्यक आहे:
- ऑथेंटिकेशन (Authentication): केवळ अधिकृत नोड्स कन्सेंसस प्रक्रियेत सहभागी होऊ शकतात याची खात्री करणे.
- ऑथोरायझेशन (Authorization): प्रत्येक नोड कोणती क्रिया (उदा. मूल्य प्रस्तावित करणे, मतदान करणे) करण्यास परवानगी आहे हे परिभाषित करणे.
- एन्क्रिप्शन (Encryption): नोड्समधील संवाद संरक्षित करणे जेणेकरुन ऐकणे किंवा छेडछाड करणे टाळता येईल.
- इंटिग्रिटी (Integrity): संदेश ट्रान्झिटमध्ये बदलले नाहीत याची खात्री करण्यासाठी डिजिटल सिग्नेचर किंवा मेसेज ऑथेंटिकेशन कोड वापरणे, विशेषतः BFT सिस्टीम्ससाठी महत्त्वपूर्ण.
ऍडव्हान्स्ड विषय आणि भविष्यातील ट्रेंड्स
डिस्ट्रिब्युटेड कन्सेंससचे क्षेत्र सतत विकसित होत आहे, चालू संशोधन आणि नवीन आव्हाने उदयास येत आहेत.
डायनॅमिक मेम्बरशिप
अनेक कन्सेंसस अल्गोरिदम्स स्थिर सहभागी नोड्सचा संच गृहीत धरतात. तथापि, वास्तविक-जगातील सिस्टीम्सना स्केल अप किंवा डाउन करण्यासाठी, किंवा अयशस्वी हार्डवेअर बदलण्यासाठी अनेकदा डायनॅमिक मेम्बरशिप बदलांची (नोड्स जोडणे किंवा काढणे) आवश्यकता असते. कन्सिस्टन्सी राखताना क्लस्टर मेम्बरशिप सुरक्षितपणे बदलणे ही एक क्लिष्ट समस्या आहे आणि Raft सारख्या अल्गोरिदम्ससाठी सु-परिभाषित, मल्टी-फेज प्रोटोकॉल आहेत.
भौगोलिकदृष्ट्या डिस्ट्रिब्युटेड डिप्लॉयमेंट्स (WAN लॅटेन्सी)
भौगोलिकदृष्ट्या पसरलेल्या डेटा सेंटर्समध्ये कन्सेंसस अल्गोरिदम्स तैनात केल्याने लक्षणीय वाइड एरिया नेटवर्क (WAN) लॅटेन्सी येते, ज्यामुळे कार्यक्षमतेवर गंभीर परिणाम होऊ शकतो. WAN साठी ऑप्टिमाइझ केलेले Paxos किंवा Raft व्हेरिएंट्स (उदा. जलद वाचण्यासाठी स्थानिक क्षेत्रांमध्ये लहान क्वोरा वापरणे, किंवा लीडर काळजीपूर्वक ठेवणे) यासारख्या धोरणांवर विचार केला जात आहे. मल्टी-रिजन डिप्लॉयमेंट्समध्ये अनेकदा ग्लोबल कन्सिस्टन्सी आणि लोकल परफॉर्मन्स (कार्यप्रदर्शन) यांच्यातील ट्रेड-ऑफ समाविष्ट असतो.
ब्लॉकचेन कन्सेंसस मेकॅनिझम्स
ब्लॉकचेन तंत्रज्ञानाच्या वाढीमुळे कन्सेंससमध्ये नवीन स्वारस्य आणि नवकल्पनांना चालना मिळाली आहे. सार्वजनिक ब्लॉकचेन्स एक अद्वितीय आव्हान सादर करतात: एका मोठ्या, डायनॅमिक आणि संभाव्यतः प्रतिकूल, अज्ञात सहभागींच्या समूहांमध्ये केंद्रीय प्राधिकरणाशिवाय कन्सेंसस साध्य करणे. यामुळे नवीन कन्सेंसस मेकॅनिझमचा विकास झाला आहे:
- Proof-of-Work (PoW): (उदा. बिटकॉइन, 'The Merge' पूर्वीचे इथेरियम) लेजर सुरक्षित करण्यासाठी कम्प्युटेशनल पझल-सोल्व्हिंगवर अवलंबून असते, ज्यामुळे दुर्भावनापूर्ण कलाकारांसाठी इतिहास पुन्हा लिहिणे महाग होते.
- Proof-of-Stake (PoS): (उदा. 'The Merge' नंतरचे इथेरियम, सोलाना, कार्डानो) व्हॅलिडेटर्सना त्यांच्या 'स्टेक' केलेल्या क्रिप्टोकरन्सीच्या रकमेवर आधारित निवडले जाते, ज्यामुळे प्रामाणिक वर्तनाला प्रोत्साहन मिळते.
- Delegated Proof-of-Stake (DPoS): (उदा. EOS, TRON) स्टेकहोल्डर्स व्यवहार प्रमाणित करण्यासाठी मर्यादित संख्येने प्रतिनिधी निवडतात.
- Directed Acyclic Graphs (DAGs): (उदा. IOTA, Fantom) एक भिन्न डेटा स्ट्रक्चर व्यवहारांवर समांतर प्रक्रिया करण्यास अनुमती देते, ज्यामुळे पारंपारिक ब्लॉक-आधारित कन्सेंससशिवाय उच्च थ्रूपुट मिळण्याची शक्यता असते.
हे अल्गोरिदम अनेकदा पारंपारिक डिस्ट्रिब्युटेड सिस्टीम कन्सेंससच्या तुलनेत भिन्न गुणधर्मांना (उदा. सेन्सॉरशिप रेझिस्टन्स, डिसेंट्रलायझेशन, अंतिमतेची निश्चिती) प्राधान्य देतात, जे सामान्यत: विश्वासार्ह, मर्यादित नोड्सच्या संचात स्ट्रॉंग कन्सिस्टन्सी आणि उच्च अवेलेबिलिटीवर लक्ष केंद्रित करते.
ऑप्टिमायझेशन्स आणि व्हेरिएंट्स
चालू संशोधन सध्याच्या अल्गोरिदम्सना परिष्कृत करणे आणि नवीन प्रस्ताव देणे सुरू ठेवते. उदाहरणांमध्ये हे समाविष्ट आहे:
- Fast Paxos: एक व्हेरिएंट जो सामान्य परिस्थितीत एका संवाद राऊंडमध्ये मूल्ये निवडण्याची परवानगी देऊन लॅटेन्सी कमी करण्यासाठी डिझाइन केलेला आहे.
- Egalitarian Paxos: काही परिस्थितीत समन्वयाशिवाय एकाधिक लीडर किंवा प्रोपोजर्सना समवर्तीपणे कार्य करण्याची परवानगी देऊन थ्रूपुट सुधारण्याचे उद्दिष्ट ठेवते.
- Generalized Paxos: Paxos चा विस्तार मूल्यांच्या क्रमांवर आणि यादृच्छिक स्टेट मशीन ऑपरेशन्सवर सहमत होण्यासाठी केला जातो.
निष्कर्ष
कन्सेंसस अल्गोरिदम्स हे आधारस्तंभ आहेत ज्यावर विश्वसनीय डिस्ट्रिब्युटेड सिस्टीम तयार केल्या जातात. संकल्पनात्मकदृष्ट्या आव्हानात्मक असले तरी, आधुनिक सिस्टीम आर्किटेक्चरच्या गुंतागुंतींमध्ये प्रवेश करणाऱ्या कोणत्याही व्यावसायिकांसाठी त्यांचे प्रभुत्व आवश्यक आहे. Paxos च्या कठोर सेफटी गॅरंटीपासून Raft च्या वापरकर्ता-अनुकूल डिझाइनपर्यंत आणि PBFT च्या मजबूत फॉल्ट टॉलरन्सपर्यंत, प्रत्येक अल्गोरिदम अनिश्चिततेच्या धोक्यात कन्सिस्टन्सी सुनिश्चित करण्यासाठी ट्रेड-ऑफचा एक अनोखा संच ऑफर करते.
या अल्गोरिदम्सची इम्प्लीमेंटेशन करणे हे केवळ एक शैक्षणिक व्यायाम नाही; हे अशा सिस्टीम्सची निर्मिती करण्याबद्दल आहे ज्या नेटवर्क्स आणि हार्डवेअर अपयशांच्या अप्रत्याशित स्वरूपाला तोंड देऊ शकतात, डेटाची अखंडता आणि जगभरातील वापरकर्त्यांसाठी अखंड ऑपरेशन सुनिश्चित करू शकतात. जसजसे डिस्ट्रिब्युटेड सिस्टीम्स क्लाउड कंप्युटिंग, ब्लॉकचेन आणि ग्लोबल-स्केल सेवांची वाढती मागणी यामुळे विकसित होत राहतील, कन्सेंसस अल्गोरिदम्सची तत्त्वे आणि व्यावहारिक अनुप्रयोग मजबूत आणि रेझिलिन्ट सिस्टीम डिझाइनच्या अग्रभागी राहतील. हे मूलभूत बिल्डिंग ब्लॉक्स समजून घेणे अभियंत्यांना पुढील पिढीच्या अत्यंत उपलब्ध आणि सुसंगत डिजिटल इन्फ्रास्ट्रक्चर तयार करण्यासाठी सक्षम करते जे आपल्या आंतरजोडलेल्या जगाची सेवा करते.