Ignite Service Grid - Reboot

පෙබරවාරි 26 වෙනිදා, අපි Apache Ignite GreenSource රැස්වීමක් පැවැත්වූ අතර, එහිදී විවෘත මූලාශ්‍ර ව්‍යාපෘතියට දායක වූවන් කතා කළෙමු. Apache Ignite. මෙම ප්රජාවගේ ජීවිතයේ වැදගත් සිදුවීමක් වූයේ සංරචකයේ ප්රතිව්යුහගත කිරීමයි Ignite Service Grid, ඔබට අභිරුචි ක්ෂුද්‍ර සේවා සෘජුවම Ignite පොකුරකට යෙදවීමට ඉඩ සලසයි. ඔහු රැස්වීමේදී මෙම දුෂ්කර ක්‍රියාවලිය ගැන කතා කළේය Vyacheslav Daradur, මෘදුකාංග ඉංජිනේරුවෙකු සහ වසර දෙකකට වැඩි කාලයක් Apache Ignite දායකය.

Ignite Service Grid - Reboot

අපි සාමාන්‍යයෙන් Apache Ignite යනු කුමක්දැයි පටන් ගනිමු. මෙය SQL, ගනුදෙනු සහ හැඹිලි සඳහා සහය ඇති බෙදා හරින ලද යතුරු/අගය ගබඩාවක් වන දත්ත සමුදායකි. ඊට අමතරව, Ignite ඔබට අභිරුචි සේවා සෘජුවම Ignite පොකුරකට යෙදවීමට ඉඩ සලසයි. සංවර්ධකයාට Ignite සපයන සියලුම මෙවලම් වෙත ප්‍රවේශය ඇත - බෙදා හරින ලද දත්ත ව්‍යුහයන්, පණිවිඩ යැවීම, ප්‍රවාහය, ගණනය කිරීම සහ දත්ත ජාලකය. උදාහරණයක් ලෙස, Data Grid භාවිතා කරන විට, දත්ත ගබඩා කිරීම සඳහා වෙනම යටිතල පහසුකම් පරිපාලනය කිරීමේ ගැටළුව සහ එහි ප්‍රතිඵලයක් ලෙස, පොදු කාර්ය පිරිවැය අතුරුදහන් වේ.

Ignite Service Grid - Reboot

Service Grid API භාවිතයෙන්, ඔබට යෙදවීමේ යෝජනා ක්‍රමය සහ ඒ අනුව, වින්‍යාසය තුළම සේවාවම සඳහන් කිරීමෙන් ඔබට සේවාවක් යෙදවිය හැක.

සාමාන්‍යයෙන්, යෙදවුම් යෝජනා ක්‍රමයක් යනු පොකුරු නෝඩ් මත යෙදිය යුතු අවස්ථා ගණන පිළිබඳ ඇඟවීමකි. සාමාන්‍ය යෙදවීමේ යෝජනා ක්‍රම දෙකක් තිබේ. පළමුවැන්න Cluster Singleton ය: ඕනෑම අවස්ථාවක, පරිශීලක සේවාවක එක් අවස්ථාවක් පොකුරේ තිබෙන බවට සහතික වේ. දෙවැන්න Node Singleton: සේවාවේ එක් අවස්ථාවක් සෑම පොකුරු නෝඩයකම යොදවා ඇත.

Ignite Service Grid - Reboot

පරිශීලකයාට සම්පූර්ණ පොකුරේ සේවා අවස්ථා ගණන නියම කළ හැකි අතර සුදුසු නෝඩ් පෙරීම සඳහා පුරෝකථනයක් අර්ථ දැක්විය හැක. මෙම අවස්ථාවෙහිදී, සේවා ජාලය විසින්ම සේවා යෙදවීම සඳහා ප්‍රශස්ත බෙදා හැරීම ගණනය කරනු ඇත.

මීට අමතරව, Affinity Service වැනි විශේෂාංගයක් ඇත. Affinity යනු ස්ථල විද්‍යාවේ කොටස් වලට යතුරු සම්බන්ධය සහ පාර්ශවයන් නෝඩ් වලට සම්බන්ධය නිර්වචනය කරන ශ්‍රිතයකි. යතුර භාවිතා කරමින්, දත්ත ගබඩා කර ඇති ප්රාථමික නෝඩය තීරණය කළ හැකිය. මේ ආකාරයෙන් ඔබට ඔබේම සේවාවක් යතුර සහ සම්බන්ධතා ක්‍රියාකාරී හැඹිලියක් සමඟ සම්බන්ධ කළ හැකිය. සම්බන්ධතා ශ්‍රිතය වෙනස් වුවහොත්, ස්වයංක්‍රීයව නැවත යෙදවීම සිදුවේ. මේ ආකාරයෙන්, සේවාව සෑම විටම එය හැසිරවීමට අවශ්ය දත්ත වලට ආසන්නව පිහිටා ඇති අතර, ඒ අනුව, තොරතුරු වෙත ප්රවේශ වීමේ පොදු කාර්ය අඩු කරයි. මෙම යෝජනා ක්රමය collocated computing වර්ගයක් ලෙස හැඳින්විය හැක.

දැන් අපි සේවා ජාලයේ අලංකාරය කුමක්දැයි සොයාගෙන ඇති අතර, එහි සංවර්ධන ඉතිහාසය ගැන කතා කරමු.

කලින් වෙච්ච දේ

සේවා ජාලයේ පෙර ක්‍රියාත්මක කිරීම Ignite හි ගනුදෙනු අනුරූ පද්ධති හැඹිලිය මත පදනම් විය. Ignite හි "හැඹිලි" යන වචනය ගබඩා කිරීම සඳහා යොමු කරයි. එනම්, ඔබ සිතන පරිදි මෙය තාවකාලික දෙයක් නොවේ. හැඹිලිය ප්‍රතිනිර්මාණය කර ඇති අතර සෑම නෝඩයකම සම්පූර්ණ දත්ත කට්ටලය අඩංගු වුවද, හැඹිලිය තුළ එය කොටස් කළ නිරූපණයක් ඇත. මෙය ගබඩා ප්‍රශස්තකරණය නිසාය.

Ignite Service Grid - Reboot

පරිශීලකයාට සේවාව යෙදවීමට අවශ්‍ය වූ විට සිදු වූයේ කුමක්ද?

  • ගොඩනඟන ලද අඛණ්ඩ විමසුම් යාන්ත්‍රණය භාවිතයෙන් ගබඩාවේ දත්ත යාවත්කාලීන කිරීමට පොකුරේ ඇති සියලුම නෝඩ් දායක විය.
  • ආරම්භක නෝඩය, කියවීමට කැප වූ ගනුදෙනුවක් යටතේ, අනුක්‍රමික අවස්ථාව ඇතුළුව සේවා වින්‍යාසය අඩංගු දත්ත ගබඩාවේ වාර්තාවක් සාදන ලදී.
  • නව ප්‍රවේශයක් ගැන දැනුම් දුන් විට, සම්බන්ධීකාරක විසින් වින්‍යාසය මත පදනම්ව බෙදා හැරීම ගණනය කරන ලදී. ප්රතිඵලයක් ලෙස වස්තුව දත්ත ගබඩාවට නැවත ලියා ඇත.
  • නෝඩයක් බෙදා හැරීමේ කොටසක් නම්, සම්බන්ධීකාරක එය යෙදවිය යුතුය.

අපිට නොගැලපෙන දේ

යම් අවස්ථාවක දී අපි නිගමනයකට පැමිණියෙමු: සේවා සමඟ වැඩ කිරීමට මෙය මාර්ගය නොවේ. හේතු කිහිපයක් තිබුණා.

යෙදවීමේදී යම් දෝෂයක් සිදුවුවහොත්, එය සොයාගත හැක්කේ සියල්ල සිදු වූ නෝඩයේ ලඝු-සටහන් වලින් පමණි. අසමමුහුර්ත යෙදවීම පමණක් සිදු විය, එබැවින් යෙදවීමේ ක්‍රමයෙන් පරිශීලකයාට පාලනය ආපසු ලබා දීමෙන් පසු, සේවාව ආරම්භ කිරීමට අමතර කාලයක් අවශ්‍ය විය - සහ මෙම කාලය තුළ පරිශීලකයාට කිසිවක් පාලනය කළ නොහැක. සේවා ජාලය තවදුරටත් සංවර්ධනය කිරීම සඳහා, නව විශේෂාංග නිර්මාණය කිරීම, නව පරිශීලකයින් ආකර්ෂණය කර ගැනීම සහ සෑම කෙනෙකුගේම ජීවිතය පහසු කිරීම සඳහා, යමක් වෙනස් කළ යුතුය.

නව සේවා ජාලයක් සැලසුම් කිරීමේදී, අපට මුලින්ම අවශ්‍ය වූයේ සමමුහුර්ත යෙදවීම පිළිබඳ සහතිකයක් ලබා දීමටයි: පරිශීලකයා API වෙතින් පාලනය ආපසු ලබා දුන් වහාම ඔහුට සේවා භාවිතා කළ හැකිය. යෙදවීමේ දෝෂ හැසිරවීමේ හැකියාව ආරම්භකයාට ලබා දීමට ද මට අවශ්‍ය විය.

ඊට අමතරව, මට ක්‍රියාත්මක කිරීම සරල කිරීමට අවශ්‍ය විය, එනම්, ගනුදෙනු වලින් ඉවත් වීම සහ නැවත සමතුලිත කිරීම. හැඹිලිය ප්‍රතිනිර්මාණය වී ඇති අතර සමතුලිතතාවයක් නොමැති වුවද, බොහෝ නෝඩ් සහිත විශාල යෙදවීමකදී ගැටළු මතු විය. ස්ථලකය වෙනස් වන විට, නෝඩ්ස් තොරතුරු හුවමාරු කර ගැනීමට අවශ්ය වන අතර, විශාල යෙදවීමක් සහිතව, මෙම දත්ත විශාල වශයෙන් බර විය හැක.

ස්ථලකය අස්ථායී වූ විට, සම්බන්ධීකාරකට සේවා බෙදා හැරීම නැවත ගණනය කිරීමට අවශ්‍ය විය. සාමාන්‍යයෙන්, ඔබට අස්ථායී ස්ථලකයක් මත ගනුදෙනු සමඟ වැඩ කිරීමට සිදු වූ විට, මෙය දුෂ්කර පුරෝකථනය කිරීමේ දෝෂ වලට තුඩු දිය හැකිය.

ගැටළු

ගැටළු නොමැතිව ගෝලීය වෙනස්කම් මොනවාද? ඉන් පළමුවැන්න නම් ස්ථල විද්‍යාවේ වෙනසක්. ඕනෑම මොහොතක, සේවා යෙදවීමේ මොහොතේදී පවා, නෝඩයක් පොකුරට ඇතුළු වීමට හෝ පිටවීමට හැකි බව ඔබ තේරුම් ගත යුතුය. එපමනක් නොව, යෙදවීමේදී නෝඩය පොකුරට සම්බන්ධ වන්නේ නම්, සේවා පිළිබඳ සියලු තොරතුරු නව නෝඩයට නිරන්තරයෙන් මාරු කිරීම අවශ්ය වේ. තවද අපි කතා කරන්නේ දැනටමත් යොදවා ඇති දේ ගැන පමණක් නොව, වර්තමාන සහ අනාගත යෙදවීම් ගැන ය.

මෙය වෙනම ලැයිස්තුවක එකතු කළ හැකි ගැටළු වලින් එකක් පමණි:

  • නෝඩ් ආරම්භයේදී ස්ථිතිකව වින්‍යාස කළ සේවාවන් යෙදවිය හැක්කේ කෙසේද?
  • පොකුරෙන් නෝඩයක් පිටවීම - නෝඩය සේවා සපයන්නේ නම් කුමක් කළ යුතුද?
  • සම්බන්ධීකාරක වෙනස් වී ඇත්නම් කුමක් කළ යුතුද?
  • සේවාදායකයා පොකුරට නැවත සම්බන්ධ වුවහොත් කුමක් කළ යුතුද?
  • සක්‍රිය/අක්‍රිය කිරීමේ ඉල්ලීම් සැකසීමට අවශ්‍යද සහ කෙසේද?
  • ඔවුන් හැඹිලි විනාශය සඳහා කතා කළහොත් සහ අපට එයට සම්බන්ධ සේවා තිබේ නම් කුමක් කළ යුතුද?

ඒ විතරක් නෙවෙයි.

තීරණය

ඉලක්කයක් ලෙස, අපි පණිවිඩ භාවිතයෙන් ක්‍රියාවලි සන්නිවේදනය ක්‍රියාත්මක කිරීමත් සමඟ Event Driven ප්‍රවේශය තෝරා ගත්තෙමු. Ignite දැනටමත් නෝඩ් වලට පණිවිඩ යැවීමට ඉඩ සලසන සංරචක දෙකක් ක්‍රියාත්මක කරයි - සන්නිවේදන-ස්පී සහ ඩිස්කවරි-ස්පී.

Ignite Service Grid - Reboot

Communication-spi මඟින් නෝඩ් වලට සෘජුව සහ පණිවිඩ යැවීමට ඉඩ ලබා දේ. විශාල දත්ත ප්‍රමාණයක් යැවීමට එය ඉතා සුදුසුයි. Discovery-spi ඔබට පොකුරේ සියලුම නෝඩ් වෙත පණිවිඩයක් යැවීමට ඉඩ සලසයි. සම්මත ක්‍රියාත්මක කිරීමේදී, මෙය සිදු කරනු ලබන්නේ මුදු ස්ථලකය භාවිතා කරමිනි. Zookeeper සමඟ ඒකාබද්ධ කිරීමක් ද ඇත, මෙම අවස්ථාවෙහිදී තරු ස්ථලකය භාවිතා වේ. සඳහන් කළ යුතු තවත් වැදගත් කරුණක් නම්, Discovery-spi පණිවිඩය අනිවාර්යයෙන්ම සියලුම නෝඩ් වෙත නිවැරදි අනුපිළිවෙලින් ලබා දෙන බවට සහතිකයක් ලබා දෙන බවයි.

අපි බලමු deployment protocol එක. යෙදවීම සහ නොයෙදීම සඳහා වන සියලුම පරිශීලක ඉල්ලීම් Discovery-spi හරහා යවනු ලැබේ. මෙය පහත දේ ලබා දෙයි සහතික කරයි:

  • පොකුරේ සියලුම නෝඩ් මගින් ඉල්ලීම ලැබෙනු ඇත. මෙය සම්බන්ධීකාරක වෙනස් වූ විට ඉල්ලීම දිගටම කරගෙන යාමට ඉඩ සලසයි. මෙයින් අදහස් කරන්නේ එක් පණිවිඩයක, සෑම නෝඩයකටම සේවා වින්‍යාසය සහ එහි අනුක්‍රමික අවස්ථාව වැනි අවශ්‍ය සියලුම පාර-දත්ත ඇති බවයි.
  • පණිවිඩ බෙදා හැරීමේ දැඩි අනුපිළිවෙල වින්‍යාස ගැටුම් සහ තරඟකාරී ඉල්ලීම් විසඳීමට උපකාරී වේ.
  • ස්ථල විද්‍යාවට නෝඩයේ ප්‍රවේශය ඩිස්කවරි-ස්පී හරහා ද සැකසෙන බැවින්, නව නෝඩයට සේවා සමඟ වැඩ කිරීමට අවශ්‍ය සියලුම දත්ත ලැබෙනු ඇත.

ඉල්ලීමක් ලැබුණු විට, පොකුරේ ඇති නෝඩ් එය වලංගු කර සැකසුම් කාර්යයන් නිර්මාණය කරයි. මෙම කාර්යයන් පෝලිම් කර පසුව වෙනම සේවකයෙකු විසින් වෙනත් නූලකින් සකසනු ලැබේ. යෙදවීමට සැලකිය යුතු කාලයක් ගත විය හැකි අතර මිල අධික සොයාගැනීම් ප්‍රවාහය නොඉවසිය හැකි ලෙස ප්‍රමාද කළ හැකි නිසා එය මේ ආකාරයෙන් ක්‍රියාත්මක වේ.

පෝලිමේ සියලුම ඉල්ලීම් යෙදවුම් කළමනාකරු විසින් සකසනු ලැබේ. එහි විශේෂ සේවකයෙකු සිටින අතර එය මෙම පෝලිමෙන් කාර්යයක් ඉවත් කර යෙදවීම ආරම්භ කිරීමට එය ආරම්භ කරයි. මෙයින් පසු, පහත සඳහන් ක්රියා සිදු වේ:

  1. සෑම නෝඩයක්ම ස්වාධීනව බෙදාහැරීම ගණනය කරන්නේ නව අධිෂ්ඨානශීලී පැවරුම් කාර්යයකට ස්තුති කිරීමෙනි.
  2. නෝඩ් යෙදවීමේ ප්‍රතිඵල සමඟ පණිවිඩයක් ජනනය කර එය සම්බන්ධීකාරක වෙත යවන්න.
  3. සම්බන්ධීකාරක විසින් සියලුම පණිවිඩ එකතු කර සමස්ත යෙදවීමේ ක්‍රියාවලියේ ප්‍රතිඵලය ජනනය කරයි, එය පොකුරේ ඇති සියලුම නෝඩ් වෙත Discovery-spi හරහා යවනු ලැබේ.
  4. ප්රතිඵලය ලැබුණු විට, යෙදවීමේ ක්රියාවලිය අවසන් වන අතර, පසුව කාර්යය පෝලිමෙන් ඉවත් කරනු ලැබේ.

Ignite Service Grid - Reboot
නව සිදුවීම් මත පදනම් වූ නිර්මාණය: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java

යෙදවීමේදී දෝෂයක් සිදුවුවහොත්, නෝඩය වහාම සම්බන්ධීකාරක වෙත යවන පණිවිඩයක මෙම දෝෂය ඇතුළත් කරයි. පණිවිඩ එකතු කිරීමෙන් පසු, සම්බන්ධීකාරකට යෙදවීමේදී ඇති සියලුම දෝෂ පිළිබඳ තොරතුරු ඇති අතර මෙම පණිවිඩය Discovery-spi හරහා යවනු ඇත. පොකුරේ ඕනෑම නෝඩයක දෝෂ තොරතුරු ලබා ගත හැක.

සේවා ජාලයේ සියලුම වැදගත් සිදුවීම් මෙම මෙහෙයුම් ඇල්ගොරිතම භාවිතයෙන් සකසනු ලැබේ. උදාහරණයක් ලෙස, ස්ථලකය වෙනස් කිරීම ද Discovery-spi හරහා පණිවිඩයකි. පොදුවේ ගත් කල, පෙර පැවති දේ හා සසඳන විට, ප්‍රොටෝකෝලය තරමක් සැහැල්ලු සහ විශ්වාසදායක විය. යෙදවීමේදී ඕනෑම තත්වයක් හැසිරවීමට ප්රමාණවත්ය.

ඊළඟට මොකද වෙන්නේ

දැන් සැලසුම් ගැන. ඉග්නයිට් ව්‍යාපෘතියේ ඕනෑම ප්‍රධාන වෙනසක් IEP ලෙස හඳුන්වන Ignite වැඩිදියුණු කිරීමේ මුලපිරීමක් ලෙස සම්පූර්ණ කෙරේ. සේවා ජාල ප්‍රතිනිර්මාණයට IEP ද ඇත - IEP #17 "සේවා ජාලයේ තෙල් වෙනස් කිරීම" යන සමච්චල් මාතෘකාව සමඟ. නමුත් ඇත්ත වශයෙන්ම, අපි එන්ජින් ඔයිල් වෙනස් කළේ නැත, නමුත් සම්පූර්ණ එන්ජිම.

අපි IEP හි කාර්යයන් අදියර 2 කට බෙදා ඇත. පළමුවැන්න ප්‍රධාන අදියරකි, එය යෙදවීමේ ප්‍රොටෝකෝලය නැවත සකස් කිරීම සමන්විත වේ. එය දැනටමත් මාස්ටර් තුළ ඇතුළත් කර ඇත, ඔබට නව සේවා ජාලය උත්සාහ කළ හැකිය, එය 2.8 අනුවාදයේ දිස්වනු ඇත. දෙවන අදියරට තවත් බොහෝ කාර්යයන් ඇතුළත් වේ:

  • උණුසුම් නැවත යෙදවීම
  • සේවා අනුවාදය
  • වැරදි ඉවසීම වැඩි වීම
  • සිහින් සේවාදායකයා
  • විවිධ ප්‍රමිතික නිරීක්ෂණය කිරීම සහ ගණනය කිරීම සඳහා මෙවලම්

අවසාන වශයෙන්, දෝෂ-ඉවසන, ඉහළ ලබා ගත හැකි පද්ධති ගොඩනැගීම සඳහා සේවා ජාලය පිළිබඳව අපට ඔබට උපදෙස් දිය හැකිය. අප වෙත පැමිණෙන ලෙස ද අපි ඔබට ආරාධනා කරන්නෙමු dev-list и පරිශීලක ලැයිස්තුව ඔබේ අත්දැකීම් බෙදාගන්න. ඔබේ අත්දැකීම ප්‍රජාවට සැබවින්ම වැදගත් ය; එය ඔබට මීළඟට යා යුත්තේ කොතැනටද, අනාගතයේදී සංරචකය සංවර්ධනය කරන්නේ කෙසේද යන්න තේරුම් ගැනීමට උපකාරී වනු ඇත.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න