அலெக்ஸி நைடெனோவ். ITooLabs. கோ (கோலாங்) ஃபோன் பிளாட்ஃபார்மில் டெவலப்மெண்ட் கேஸ். பகுதி 1

Alexey Naidenov, CEO ITooLabs, கோ (கோலாங்) என்ற நிரலாக்க மொழியில் டெலிகாம் ஆபரேட்டர்களுக்கான தொலைத்தொடர்பு தளத்தை உருவாக்குவது பற்றி பேசுகிறது. குரல் அஞ்சல் (வாய்ஸ்மெயில்) மற்றும் விர்ச்சுவல் பிபிஎக்ஸ் (கிளவுட் பிபிஎக்ஸ்) சேவைகளை வழங்க மேடையைப் பயன்படுத்திய மிகப்பெரிய ஆசிய டெலிகாம் ஆபரேட்டர்களில் ஒன்றில் இயங்குதளத்தை வரிசைப்படுத்தி இயக்கியதன் அனுபவத்தையும் அலெக்ஸி பகிர்ந்து கொள்கிறார்.

அலெக்ஸி நைடெனோவ். ITooLabs. கோ (கோலாங்) ஃபோன் பிளாட்ஃபார்மில் டெவலப்மெண்ட் கேஸ். பகுதி 1

அலெக்ஸி நய்டெனோவ் (இனி - AN): - அனைவருக்கும் வணக்கம்! என் பெயர் அலெக்ஸி நைடெனோவ். நான் ITooLabs இன் இயக்குனர். முதலில், நான் இங்கே என்ன செய்கிறேன், எப்படி இங்கு வந்தேன் என்று பதிலளிக்க விரும்புகிறேன்.

நீங்கள் Bitrix24 மார்க்கெட்பிளேஸைப் பார்த்தால் (பிரிவு "தொலைபேசி"), பின்னர் அங்கு இருக்கும் 14 பயன்பாடுகள் மற்றும் 36 (40%) நாங்கள்:

அலெக்ஸி நைடெனோவ். ITooLabs. கோ (கோலாங்) ஃபோன் பிளாட்ஃபார்மில் டெவலப்மெண்ட் கேஸ். பகுதி 1

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

இப்போது எங்கள் தளத்திற்கான எண்கள்:

அலெக்ஸி நைடெனோவ். ITooLabs. கோ (கோலாங்) ஃபோன் பிளாட்ஃபார்மில் டெவலப்மெண்ட் கேஸ். பகுதி 1

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

  • 5000 பயனர் நிறுவனங்கள்.
  • மொத்தம் 20 சந்தாதாரர்கள். இது அனைத்து b000b - நாங்கள் நிறுவனங்களுடன் மட்டுமே வேலை செய்கிறோம்.
  • பகலில் நிமிடத்திற்கு 300 அழைப்புகள்.
  • கடந்த ஆண்டு 100 மில்லியன் அழைப்பு நிமிடங்கள் (நாங்கள் கொண்டாடினோம்). இது எங்கள் மேடையில் இருக்கும் உள் பேச்சுவார்த்தைகளை கணக்கில் எடுத்துக் கொள்ளாமல்.

எப்படி ஆரம்பித்தது?

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

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

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

அலெக்ஸி நைடெனோவ். ITooLabs. கோ (கோலாங்) ஃபோன் பிளாட்ஃபார்மில் டெவலப்மெண்ட் கேஸ். பகுதி 1

VMWare ஐ எடுத்துக் கொள்ளுங்கள். நாங்கள் சொந்தமாக நடப்பதால், குளிர் விற்பனையாளரான சேமிப்பகத்தை உடனடியாக கைவிட வேண்டியிருந்தது. அவற்றைப் பற்றி எல்லாம் எங்களுக்குத் தெரியும்: வாக்குறுதிகளை 3 ஆல் வகுக்க வேண்டும், மேலும் செலவை 10 ஆல் பெருக்க வேண்டும். எனவே, நாங்கள் DirDB மற்றும் பலவற்றைச் செய்தோம்.

பின்னர் அது வளர ஆரம்பித்தது. மேடையில் இனி சமாளிக்க முடியாததால், பில்லிங் சேவை இதில் சேர்க்கப்பட்டது. பின்னர் MySQL இலிருந்து பில்லிங் சர்வர் மோங்கோவிற்கு மாற்றப்பட்டது. இதன் விளைவாக, அங்கு செல்லும் அனைத்து அழைப்புகளையும் செயல்படுத்தும் ஒரு வேலை தீர்வு கிடைத்தது:

அலெக்ஸி நைடெனோவ். ITooLabs. கோ (கோலாங்) ஃபோன் பிளாட்ஃபார்மில் டெவலப்மெண்ட் கேஸ். பகுதி 1

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

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

வித்தியாசமாக ஏதாவது செய்ய முடிவு செய்தோம்!

மேடை தேவைகள்

நீங்கள் நீண்ட காலமாக ஏதாவது செய்தால் (மற்றொருவரின் தயாரிப்பை நீங்கள் சுரண்டுகிறீர்கள்), பிறகு சிந்தனை மெதுவாக உங்கள் தலையில் உருவாகிறது: அதை நானே எப்படி செய்வேன்? நாங்கள் அனைவரும் நிறுவனத்தில் புரோகிராமர்கள் என்பதால் (விற்பனையாளர்களைத் தவிர, புரோகிராமர்கள் அல்லாதவர்கள் இல்லை), எங்கள் தேவைகள் நீண்ட காலமாக உருவாக்கப்பட்டுள்ளன, மேலும் அவை தெளிவாக இருந்தன:

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

அலெக்ஸி நைடெனோவ். ITooLabs. கோ (கோலாங்) ஃபோன் பிளாட்ஃபார்மில் டெவலப்மெண்ட் கேஸ். பகுதி 1

அதன்படி, நமக்காக நாங்கள் முன்வைத்த தயாரிப்புக்கான தேவைகளிலிருந்து, மொழிக்கான தேவைகள் தெளிவாக தர்க்கரீதியாக வளர்கின்றன.

  1. மல்டி-கோர் அமைப்புகளுக்கான ஆதரவை நாங்கள் விரும்பினால், இணையான செயல்பாட்டிற்கான ஆதரவு தேவை.
  2. எங்களுக்கு வளர்ச்சி வேகம் தேவைப்பட்டால், போட்டி வளர்ச்சி, போட்டி நிரலாக்கத்தை ஆதரிக்கும் மொழி தேவை. யாராவது வித்தியாசத்தை சந்திக்கவில்லை என்றால், அது மிகவும் எளிது:
    • இணை நிரலாக்கம் என்பது வெவ்வேறு கோர்களில் இரண்டு வெவ்வேறு நூல்கள் எவ்வாறு இயங்குகின்றன என்பதைப் பற்றியது;
    • ஒரே நேரத்தில் செயல்படுத்தல், மேலும் குறிப்பாக ஒத்திசைவு ஆதரவு, மொழி (அல்லது இயக்க நேரம், எதுவாக இருந்தாலும்) இணை செயலாக்கத்தில் இருந்து வரும் அனைத்து சிக்கலான தன்மையையும் மறைக்க உதவுகிறது.
  3. உயர் நிலைத்தன்மை. வெளிப்படையாக, எங்களுக்கு ஒரு கிளஸ்டர் தேவைப்பட்டது, மேலும் இது விற்பனையாளர் தயாரிப்பில் எங்களிடம் இருப்பதை விட சிறந்தது.

அலெக்ஸி நைடெனோவ். ITooLabs. கோ (கோலாங்) ஃபோன் பிளாட்ஃபார்மில் டெவலப்மெண்ட் கேஸ். பகுதி 1

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

தோற்கடிக்கப்பட்ட கோ!

கோவின் வரலாறு

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

கோவின் சுருக்கமான வரலாறு. 2007 இல் தொடங்கப்பட்டது, 2009 இல் திறக்கப்பட்டது, முதல் பதிப்பு 2012 இல் வெளியிடப்பட்டது (அதாவது, முதல் வெளியீட்டிற்கு முன்பே நாங்கள் வேலை செய்யத் தொடங்கினோம்). துவக்கியவர் கூகுள், நான் சந்தேகிப்பது போல் ஜாவாவை மாற்ற விரும்பியது.

ஆசிரியர்கள் மிகவும் பிரபலமானவர்கள்:

  • யூனிக்ஸ் பின்னால் இருந்த கென் தாம்சன், UTF-8 ஐ கண்டுபிடித்தார், திட்டம் 9 அமைப்பில் பணியாற்றினார்;
  • கெனுடன் UTF-8 ஐ வடிவமைத்த ராப் பைக், பெல் லேப்ஸில் பிளான் 9, இன்ஃபெர்னோ, லிம்போ ஆகியவற்றிலும் பணியாற்றினார்;
  • ராபர்ட் கிஸ்மர், ஜாவா ஹாட்ஸ்பாட் கம்பைலரைக் கண்டுபிடித்ததற்காகவும், வி8 (கூகிளின் ஜாவாஸ்கிரிப்ட் மொழிபெயர்ப்பாளர்) ஜெனரேட்டரில் பணிபுரிவதற்காகவும் எங்களுக்குத் தெரிந்த மற்றும் விரும்புபவர்;
  • மேலும் 700க்கும் மேற்பட்ட பங்களிப்பாளர்கள், எங்களின் சில இணைப்புகள் உட்பட.

அலெக்ஸி நைடெனோவ். ITooLabs. கோ (கோலாங்) ஃபோன் பிளாட்ஃபார்மில் டெவலப்மெண்ட் கேஸ். பகுதி 1

ஒரு பார்வையில் செல்லுங்கள்

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

அலெக்ஸி நைடெனோவ். ITooLabs. கோ (கோலாங்) ஃபோன் பிளாட்ஃபார்மில் டெவலப்மெண்ட் கேஸ். பகுதி 1

கட்டமைப்புகளை விவரிப்பது நாகரீகமாக இருப்பதைக் காணலாம். ஒரு சுட்டி (நட்சத்திரம் இருக்கும் இடத்தில்) என்ற கருத்து நம்மிடம் இருப்பதைக் காணலாம். வரிசைகள் மற்றும் துணை வரிசைகளின் துவக்கத்தை அறிவிப்பதற்கு சிறப்பு ஆதரவு இருப்பதைக் காணலாம்.

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

அலெக்ஸி நைடெனோவ். ITooLabs. கோ (கோலாங்) ஃபோன் பிளாட்ஃபார்மில் டெவலப்மெண்ட் கேஸ். பகுதி 1

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

கட்டுப்பாட்டு கட்டமைப்புகளில் (14 வது வரியில்) அடைப்புக்குறிகள் விருப்பமானவை என்பதை நாங்கள் காண்கிறோம், ஆனால் சுருள்கள் எப்போதும் தேவைப்படுகின்றன. தட்டச்சு நிலையானது என்பதைக் காண்கிறோம். பெரும்பாலான சந்தர்ப்பங்களில் டிம் காட்டப்படும். இந்த உதாரணம் வழக்கமான Hello, world-ஐ விட சற்று சிக்கலானது - ஒரு நூலகம் இருப்பதைக் காட்டுவதற்காக.

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

இன்னும் சிக்கலான ஒன்றை முயற்சிப்போம்: வணக்கம், உலகம், ஆனால் இப்போது அது ஒரு http சேவையகம். இங்கே நாம் எதை சுவாரஸ்யமாகக் காண்கிறோம்?

அலெக்ஸி நைடெனோவ். ITooLabs. கோ (கோலாங்) ஃபோன் பிளாட்ஃபார்மில் டெவலப்மெண்ட் கேஸ். பகுதி 1

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

Go இல், ஒரு தொகுப்பின் உலகளாவிய அடையாளங்காட்டி அதன் களஞ்சியத்தின் url ஆகும். அனைத்து சார்புகளுக்கும் சென்று, அவற்றை பதிவிறக்கம் செய்து, நிறுவி, தொகுத்து, தேவைப்பட்டால் பயன்படுத்துவதற்கு தயார்படுத்தும் சிறப்பு Goget பயன்பாடு உள்ளது. அதே நேரத்தில், Goget html-meta பற்றி அறிந்திருக்கிறார். அதன்படி, நீங்கள் ஒரு http கோப்பகத்தை வைத்திருக்கலாம், அதில் உங்கள் குறிப்பிட்ட களஞ்சியத்திற்கான இணைப்புகள் இருக்கும் (எடுத்துக்காட்டாக, நாங்கள் செய்வது போல).

நாம் வேறு என்ன பார்க்கிறோம்? வழக்கமான நூலகத்தில் Http மற்றும் Json. வெளிப்படையாக, உள்நோக்கம் - பிரதிபலிப்பு உள்ளது, இது குறியாக்கம் / json இல் பயன்படுத்தப்பட வேண்டும், ஏனென்றால் அதற்கு சில தன்னிச்சையான பொருளை மாற்றுகிறோம்.

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

நகரும்.

செல்: முறைகள் மற்றும் இடைமுகங்கள்

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

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

கேள்வி! உலகின் சிக்கலான தன்மையைக் காட்ட, கூகுள் தலைமையிலான ஆசிரியர்களின் நிறுவனம் நமக்கு என்ன கொடுத்தது? எங்களுக்கு இடைமுகங்கள் வழங்கப்பட்டுள்ளன!

அலெக்ஸி நைடெனோவ். ITooLabs. கோ (கோலாங்) ஃபோன் பிளாட்ஃபார்மில் டெவலப்மெண்ட் கேஸ். பகுதி 1

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

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

மற்றும், நிச்சயமாக, Go இல் வெற்றிடத்திற்கான சுட்டிகள் உள்ளன. வார்த்தை இடைமுகம் {} (இரண்டு சுருள் பிரேஸ்களுடன்) என்பது ஒரு மாறியாகும், இது கொள்கையளவில் எந்தவொரு பொருளையும் சுட்டிக்காட்ட உங்களை அனுமதிக்கிறது.
இதுவரை, எல்லாம் ஒழுங்காக உள்ளது, எல்லாம் தெரிந்ததே. ஆச்சரியப்பட ஒன்றுமில்லை.

செல்ல: goroutines

இப்போது நாம் ஆர்வமாக உள்ளவற்றுக்கு வருகிறோம்: இலகுரக செயல்முறைகள் - Go சொற்களஞ்சியத்தில் goroutines (goroutines).

அலெக்ஸி நைடெனோவ். ITooLabs. கோ (கோலாங்) ஃபோன் பிளாட்ஃபார்மில் டெவலப்மெண்ட் கேஸ். பகுதி 1

  1. முதலில், அவை உண்மையில் இலகுரக (2 Kb க்கும் குறைவானது).
  2. இரண்டாவதாக, அத்தகைய கோரூட்டினை உருவாக்குவதற்கான செலவு மிகக் குறைவு: நீங்கள் ஒரு வினாடிக்கு ஆயிரத்தை உருவாக்கலாம் - எதுவும் நடக்காது.
  3. அவர்கள் தங்கள் சொந்த திட்டமிடுபவர் மூலம் சேவை செய்கிறார்கள், இது ஒரு கோரூட்டினிலிருந்து மற்றொன்றுக்கு கட்டுப்பாட்டை மாற்றுகிறது.
  4. இந்த வழக்கில், பின்வரும் சந்தர்ப்பங்களில் கட்டுப்பாடு மாற்றப்படுகிறது:
    • ஒரு கோ அறிக்கை ஏற்பட்டால் (கோரூட்டீன் அடுத்த கோரூட்டினைத் தொடங்கினால்);
    • தடுக்கும் உள்ளீடு/அவுட் அழைப்பு இயக்கப்பட்டிருந்தால்;
    • குப்பை சேகரிப்பு தூண்டப்பட்டால்;
    • சேனல்களுடன் சில செயல்பாடுகள் தொடங்கப்பட்டால்.

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

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

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

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

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

மிக விரைவில் தொடரும்...

சில விளம்பரங்கள் 🙂

எங்களுடன் தங்கியதற்கு நன்றி. எங்கள் கட்டுரைகளை விரும்புகிறீர்களா? மேலும் சுவாரஸ்யமான உள்ளடக்கத்தைப் பார்க்க வேண்டுமா? ஒரு ஆர்டரை வைப்பதன் மூலம் அல்லது நண்பர்களுக்கு பரிந்துரை செய்வதன் மூலம் எங்களை ஆதரிக்கவும், $4.99 இலிருந்து டெவலப்பர்களுக்கான கிளவுட் VPS, நுழைவு-நிலை சேவையகங்களின் தனித்துவமான அனலாக், இது உங்களுக்காக எங்களால் கண்டுபிடிக்கப்பட்டது: VPS (KVM) E5-2697 v3 (6 கோர்கள்) 10GB DDR4 480GB SSD 1Gbps பற்றிய முழு உண்மை $19 அல்லது எப்படி ஒரு சர்வரைப் பகிர்வது? (RAID1 மற்றும் RAID10 உடன் கிடைக்கும், 24 கோர்கள் வரை மற்றும் 40GB DDR4 வரை).

ஆம்ஸ்டர்டாமில் உள்ள Equinix Tier IV தரவு மையத்தில் Dell R730xd 2 மடங்கு மலிவானதா? இங்கே மட்டும் 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV $199 இலிருந்து நெதர்லாந்தில்! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - $99 முதல்! பற்றி படிக்கவும் உள்கட்டமைப்பு நிறுவனத்தை எவ்வாறு உருவாக்குவது. ஒரு பைசாவிற்கு 730 யூரோக்கள் மதிப்புள்ள Dell R5xd E2650-4 v9000 சேவையகங்களைப் பயன்படுத்தும் வகுப்பு?

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

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