விநியோகிக்கப்பட்ட பயன்பாடுகளின் கட்டுமானத் தொகுதிகள். பூஜ்ஜிய தோராயம்

விநியோகிக்கப்பட்ட பயன்பாடுகளின் கட்டுமானத் தொகுதிகள். பூஜ்ஜிய தோராயம்

உலகம் நிலைத்து நிற்கவில்லை. முன்னேற்றம் புதிய தொழில்நுட்ப சவால்களை உருவாக்குகிறது. மாறிவரும் தேவைகளுக்கு ஏற்ப, தகவல் அமைப்புகளின் கட்டமைப்பு உருவாக வேண்டும். இன்று நாம் நிகழ்வு-உந்துதல் கட்டிடக்கலை, ஒத்திசைவு, ஒத்திசைவு, ஒத்திசைவு மற்றும் எர்லாங்கில் நீங்கள் எப்படி நிம்மதியாக வாழ முடியும் என்பதைப் பற்றி பேசுவோம்.

அறிமுகம்

வடிவமைக்கப்பட்ட அமைப்பின் அளவு மற்றும் அதற்கான தேவைகளைப் பொறுத்து, டெவலப்பர்களான நாங்கள் கணினியில் தகவல்களைப் பரிமாறிக் கொள்ளும் முறையைத் தேர்வு செய்கிறோம். பெரும்பாலான சந்தர்ப்பங்களில், சேவைகளின் தொடர்புகளை ஒழுங்கமைக்க, வேலை செய்யும் விருப்பம் ஒரு தரகருடன் ஒரு திட்டமாக இருக்கலாம், எடுத்துக்காட்டாக, RabbitMQ அல்லது kafka அடிப்படையில். ஆனால் சில நேரங்களில் நிகழ்வுகளின் ஓட்டம், SLA மற்றும் கணினியின் மீதான கட்டுப்பாட்டின் நிலை ஆகியவை ஆயத்த செய்தி எங்களுக்குப் பொருந்தாது. நிச்சயமாக, நீங்கள் போக்குவரத்து அடுக்கு மற்றும் கிளஸ்டர் உருவாக்கத்திற்கு பொறுப்பேற்பதன் மூலம் கணினியை சிறிது சிக்கலாக்கலாம், எடுத்துக்காட்டாக ZeroMQ அல்லது nanomsg ஐப் பயன்படுத்துதல். ஆனால் கணினியில் போதுமான செயல்திறன் மற்றும் நிலையான எர்லாங் கிளஸ்டரின் திறன்கள் இருந்தால், கூடுதல் நிறுவனத்தை அறிமுகப்படுத்துவதற்கான சிக்கலுக்கு விரிவான ஆய்வு மற்றும் பொருளாதார நியாயப்படுத்தல் தேவைப்படுகிறது.

எதிர்வினை விநியோகிக்கப்பட்ட பயன்பாடுகளின் தலைப்பு மிகவும் விரிவானது. கட்டுரையின் வடிவமைப்பிற்குள் இருக்க, இன்றைய விவாதத்தின் பொருள் Erlang/Elixir இல் கட்டமைக்கப்பட்ட ஒரே மாதிரியான சூழல்கள் மட்டுமே. எர்லாங்/ஓடிபி சுற்றுச்சூழல் அமைப்பு குறைந்த அளவு முயற்சியுடன் எதிர்வினை கட்டமைப்பை செயல்படுத்த உங்களை அனுமதிக்கிறது. ஆனால் எப்படியிருந்தாலும், எங்களுக்கு ஒரு செய்தி அடுக்கு தேவைப்படும்.

தத்துவார்த்த அடிப்படை

வடிவமைப்பு இலக்குகள் மற்றும் கட்டுப்பாடுகளை வரையறுப்பதில் தொடங்குகிறது. முக்கிய குறிக்கோள், வளர்ச்சிக்காக வளர்ச்சிப் பகுதியில் இல்லை. நாம் ஒரு பாதுகாப்பான மற்றும் அளவிடக்கூடிய கருவியைப் பெற வேண்டும், அதன் அடிப்படையில் நாம் உருவாக்கலாம் மற்றும் மிக முக்கியமாக, பல்வேறு நிலைகளின் நவீன பயன்பாடுகளை உருவாக்கலாம்: சிறிய பார்வையாளர்களுக்கு சேவை செய்யும் ஒற்றை-சேவையக பயன்பாடுகளில் இருந்து தொடங்கி, பின்னர் 50 வரையிலான குழுக்களாக உருவாகலாம். -60 முனைகள், கிளஸ்டர் கூட்டமைப்புகளுடன் முடிவடைகிறது. எனவே, இறுதி அமைப்பின் வளர்ச்சி மற்றும் உரிமையின் விலையைக் குறைப்பதன் மூலம் லாபத்தை அதிகரிப்பதே முக்கிய குறிக்கோள்.

இறுதி அமைப்பிற்கான 4 முக்கிய தேவைகளை முன்னிலைப்படுத்துவோம்:

  • Сநிகழ்வு சார்ந்த.
    நிகழ்வுகளின் ஓட்டத்தைக் கடந்து தேவையான செயல்களைச் செய்ய அமைப்பு எப்போதும் தயாராக உள்ளது;
  • Мஅளவீடல்.
    தனிப்பட்ட தொகுதிகள் செங்குத்தாகவும் கிடைமட்டமாகவும் அளவிடப்படலாம். முழு அமைப்பும் எல்லையற்ற கிடைமட்ட வளர்ச்சிக்கு திறன் கொண்டதாக இருக்க வேண்டும்;
  • Оதவறு சகிப்புத்தன்மை.
    அனைத்து நிலைகளும் அனைத்து சேவைகளும் தோல்விகளில் இருந்து தானாக மீட்க முடியும்;
  • Гஉத்தரவாதமான பதில் நேரம்.
    நேரம் மதிப்புமிக்கது மற்றும் பயனர்கள் அதிக நேரம் காத்திருக்கக்கூடாது.

"சிறிய இயந்திரம்" பற்றிய பழைய விசித்திரக் கதையை நினைவில் கொள்கிறீர்களா? வடிவமைக்கப்பட்ட அமைப்பு வெற்றிகரமாக முன்மாதிரி நிலையிலிருந்து வெளியேறி முற்போக்கானதாக இருக்க, அதன் அடித்தளம் குறைந்தபட்ச தேவைகளை பூர்த்தி செய்ய வேண்டும் புகைமூட்டம்.

ஒரு உள்கட்டமைப்பு கருவியாக செய்தி அனுப்புதலில் மேலும் ஒரு புள்ளி சேர்க்கப்பட்டுள்ளது மற்றும் அனைத்து சேவைகளுக்கும் அடிப்படையாக உள்ளது: புரோகிராமர்களுக்கான பயன்பாட்டின் எளிமை.

நிகழ்வு சார்ந்த

ஒரு பயன்பாடு ஒரு சேவையகத்திலிருந்து ஒரு கிளஸ்டருக்கு வளர, அதன் கட்டமைப்பு தளர்வான இணைப்பை ஆதரிக்க வேண்டும். ஒத்திசைவற்ற மாதிரி இந்த தேவையை பூர்த்தி செய்கிறது. அதில், அனுப்புநரும் பெறுநரும் செய்தியின் தகவல் சுமையைப் பற்றி கவலைப்படுகிறார்கள் மற்றும் கணினியில் பரிமாற்றம் மற்றும் ரூட்டிங் பற்றி கவலைப்பட வேண்டாம்.

அளவீடல்

அளவிடுதல் மற்றும் கணினி செயல்திறன் ஆகியவை ஒருவருக்கொருவர் அடுத்ததாக உள்ளன. பயன்பாட்டுக் கூறுகள் கிடைக்கக்கூடிய அனைத்து ஆதாரங்களையும் பயன்படுத்தக்கூடியதாக இருக்க வேண்டும். எவ்வளவு திறமையாக நாம் திறன் மற்றும் மிகவும் உகந்த நமது செயலாக்க முறைகளைப் பயன்படுத்த முடியுமோ, அவ்வளவு குறைவான பணத்தை நாம் உபகரணங்களுக்காக செலவிடுகிறோம்.

ஒரு இயந்திரத்திற்குள், எர்லாங் மிகவும் போட்டித்தன்மை வாய்ந்த சூழலை உருவாக்குகிறது. எர்லாங் VM க்கு கிடைக்கும் இயக்க முறைமை நூல்களின் எண்ணிக்கை மற்றும் இந்தத் தொடரிழைகளைப் பயன்படுத்தும் திட்டமிடுபவர்களின் எண்ணிக்கையைத் தேர்ந்தெடுப்பதன் மூலம் ஒத்திசைவு மற்றும் இணைநிலை ஆகியவற்றுக்கு இடையேயான சமநிலையை அமைக்கலாம்.
எர்லாங் செயல்முறைகள் நிலையைப் பகிர்ந்து கொள்ளாது மற்றும் தடுக்காத பயன்முறையில் இயங்குகின்றன. இது பாரம்பரிய தடுப்பு அடிப்படையிலான பயன்பாடுகளை விட ஒப்பீட்டளவில் குறைந்த தாமதத்தையும் அதிக செயல்திறனையும் வழங்குகிறது. எர்லாங்கின் திட்டமிடுபவர் CPU மற்றும் IO ஆகியவற்றின் நியாயமான ஒதுக்கீட்டை உறுதிசெய்கிறது, மேலும் தடுப்பு இல்லாததால், உச்ச சுமைகள் அல்லது தோல்விகளின் போது கூட பயன்பாட்டைப் பதிலளிக்க அனுமதிக்கிறது.

கிளஸ்டர் அளவில், அகற்றுவதில் சிக்கல் உள்ளது. க்ளஸ்டரில் உள்ள அனைத்து இயந்திரங்களும் சமமாக ஏற்றப்பட்டிருப்பதும், நெட்வொர்க் அதிக சுமையுடன் இல்லை என்பதும் முக்கியம். ஒரு சூழ்நிலையை கற்பனை செய்வோம்: உள்வரும் பேலன்சர்களில் (haproxy, nginx, முதலியன) பயனர் போக்குவரத்து இறங்குகிறது, அவை கிடைக்கக்கூடிய பின்தளங்களின் தொகுப்பிற்கு இடையில் செயலாக்க கோரிக்கைகளை முடிந்தவரை சமமாக விநியோகிக்கின்றன. பயன்பாட்டு உள்கட்டமைப்பிற்குள், தேவையான இடைமுகத்தை செயல்படுத்தும் சேவை கடைசி மைல் மட்டுமே மற்றும் ஆரம்ப கோரிக்கைக்கு பதிலளிக்க பல சேவைகளை கோர வேண்டும். உள் கோரிக்கைகளுக்கு ரூட்டிங் மற்றும் பேலன்சிங் தேவை.
தரவு ஓட்டங்களை திறம்பட நிர்வகிக்க, ரூட்டிங் மற்றும் சுமை சமநிலையை நிர்வகிக்க ஒரு இடைமுகத்தை டெவலப்பர்களுக்கு செய்தி அனுப்புதல் வழங்க வேண்டும். இதற்கு நன்றி, டெவலப்பர்கள் மைக்ரோ சர்வீஸ் பேட்டர்ன்களைப் பயன்படுத்தி (அக்ரிகேட்டர், ப்ராக்ஸி, செயின், கிளை போன்றவை) நிலையான சிக்கல்கள் மற்றும் அரிதாக எழும் பிரச்சனைகள் இரண்டையும் தீர்க்க முடியும்.

வணிகக் கண்ணோட்டத்தில், அளவிடுதல் என்பது இடர் மேலாண்மை கருவிகளில் ஒன்றாகும். உபகரணங்களை உகந்த முறையில் பயன்படுத்துவதன் மூலம் வாடிக்கையாளர் கோரிக்கைகளை பூர்த்தி செய்வதே முக்கிய விஷயம்:

  • முன்னேற்றத்தின் விளைவாக உபகரணங்களின் சக்தி அதிகரிக்கும் போது. அபூரண மென்பொருளால் இது சும்மா இருக்காது. Erlang செங்குத்தாக நன்றாக செதில்கள் மற்றும் எப்போதும் அனைத்து CPU கோர்கள் மற்றும் கிடைக்கும் நினைவகம் பயன்படுத்த முடியும்;
  • கிளவுட் சூழல்களில், தற்போதைய அல்லது கணிக்கப்பட்ட சுமையைப் பொறுத்து உபகரணங்களின் அளவை நாம் நிர்வகிக்கலாம் மற்றும் SLA க்கு உத்தரவாதம் அளிக்கலாம்.

தவறு சகிப்புத்தன்மை

இரண்டு கோட்பாடுகளைக் கருத்தில் கொள்வோம்: "தோல்விகள் ஏற்றுக்கொள்ள முடியாதவை" மற்றும் "எப்போதும் தோல்விகள் இருக்கும்." ஒரு வணிகத்தைப் பொறுத்தவரை, மென்பொருள் தோல்வி என்பது பண இழப்பைக் குறிக்கிறது, மேலும் மோசமானது, நற்பெயரை இழப்பது. சாத்தியமான இழப்புகள் மற்றும் தவறு-சகிப்புத்தன்மை கொண்ட மென்பொருளை உருவாக்குவதற்கான செலவு ஆகியவற்றுக்கு இடையே சமநிலைப்படுத்துதல், ஒரு சமரசத்தை அடிக்கடி காணலாம்.

குறுகிய காலத்தில், தவறு சகிப்புத்தன்மையை உள்ளடக்கிய ஒரு கட்டிடக்கலை, ஆஃப்-தி-ஷெல்ஃப் கிளஸ்டரிங் தீர்வுகளை வாங்குவதில் பணத்தை மிச்சப்படுத்துகிறது. அவை விலை உயர்ந்தவை மற்றும் பிழைகள் உள்ளன.
நீண்ட காலத்திற்கு, ஒரு தவறு-சகிப்புத்தன்மை கொண்ட கட்டிடக்கலை வளர்ச்சியின் அனைத்து நிலைகளிலும் பல மடங்கு செலுத்துகிறது.
குறியீடு அடிப்படைக்குள் செய்தி அனுப்புதல், வளர்ச்சி கட்டத்தில் கணினியில் உள்ள கூறுகளின் தொடர்புகளை விரிவாகச் செய்ய உங்களை அனுமதிக்கிறது. அனைத்து முக்கியமான கூறுகளும் தோல்விகளைக் கையாளுவதால், தோல்விகளுக்குப் பதிலளிப்பதற்கும் நிர்வகிப்பதற்கும் இது பணியை எளிதாக்குகிறது, மேலும் வடிவமைப்பின் மூலம் தோல்விக்குப் பிறகு தானாகவே இயல்பு நிலைக்குத் திரும்புவது எப்படி என்பதை அதன் விளைவாக வரும் அமைப்பு அறிந்திருக்கிறது.

பொறுப்புணர்வு

தோல்விகளைப் பொருட்படுத்தாமல், விண்ணப்பம் கோரிக்கைகளுக்கு பதிலளிக்க வேண்டும் மற்றும் SLA ஐ சந்திக்க வேண்டும். உண்மை என்னவென்றால், மக்கள் காத்திருக்க விரும்பவில்லை, எனவே வணிகங்கள் அதற்கேற்ப மாற்றியமைக்க வேண்டும். மேலும் மேலும் பயன்பாடுகள் மிகவும் பதிலளிக்கக்கூடியதாக இருக்கும் என்று எதிர்பார்க்கப்படுகிறது.
பதிலளிக்கக்கூடிய பயன்பாடுகள் நிகழ்நேரத்தில் செயல்படும். எர்லாங் விஎம் மென்மையான நிகழ்நேர பயன்முறையில் செயல்படுகிறது. பங்கு வர்த்தகம், மருத்துவம் மற்றும் தொழில்துறை உபகரணக் கட்டுப்பாடு போன்ற சில பகுதிகளுக்கு, கடினமான நிகழ்நேர பயன்முறை முக்கியமானது.
பதிலளிக்கக்கூடிய அமைப்புகள் UX ஐ மேம்படுத்தி வணிகத்திற்கு பயனளிக்கின்றன.

பூர்வாங்க சுருக்கம்

இந்தக் கட்டுரையைத் திட்டமிடும் போது, ​​ஒரு செய்தியிடல் தரகரை உருவாக்கி அதன் அடிப்படையில் சிக்கலான அமைப்புகளை உருவாக்குவதற்கான எனது அனுபவத்தைப் பகிர்ந்து கொள்ள விரும்பினேன். ஆனால் கோட்பாட்டு மற்றும் ஊக்கமளிக்கும் பகுதி மிகவும் விரிவானதாக மாறியது.
கட்டுரையின் இரண்டாம் பகுதியில், பரிமாற்ற புள்ளிகளை செயல்படுத்துவதற்கான நுணுக்கங்கள், செய்தியிடல் முறைகள் மற்றும் அவற்றின் பயன்பாடு பற்றி பேசுவேன்.
மூன்றாவது பகுதியில், சேவைகளை ஒழுங்கமைத்தல், ரூட்டிங் மற்றும் சமநிலைப்படுத்துதல் ஆகியவற்றின் பொதுவான சிக்கல்களைக் கருத்தில் கொள்வோம். அமைப்புகளின் அளவிடுதல் மற்றும் தவறு சகிப்புத்தன்மையின் நடைமுறை பக்கத்தைப் பற்றி பேசலாம்.

முதல் பகுதியின் முடிவு.

புகைப்படம் @லூகாப்ராவோ.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்