[மொழிபெயர்ப்பு] தூதுவர் த்ரெடிங் மாதிரி

கட்டுரையின் மொழிபெயர்ப்பு: தூதுவர் த்ரெடிங் மாதிரி - https://blog.envoyproxy.io/envoy-threading-model-a8d44b922310

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

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

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

த்ரெடிங் கண்ணோட்டம்

[மொழிபெயர்ப்பு] தூதுவர் த்ரெடிங் மாதிரி

தூதுவர் மூன்று வெவ்வேறு வகையான ஸ்ட்ரீம்களைப் பயன்படுத்துகிறார்:

  • முக்கிய: இந்த நூல் செயல்முறை தொடக்கம் மற்றும் நிறுத்தம், XDS (xDiscovery Service) API இன் அனைத்து செயலாக்கம், DNS, சுகாதார சோதனை, பொது கிளஸ்டர் மற்றும் இயக்க நேர மேலாண்மை, புள்ளியியல் மீட்டமைப்பு, நிர்வாகம் மற்றும் பொது செயல்முறை மேலாண்மை - Linux சிக்னல்கள், ஹாட் ரீஸ்டார்ட், போன்ற அனைத்தையும் கட்டுப்படுத்துகிறது. இந்த நூலில் நடப்பது ஒத்திசைவற்றது மற்றும் "தடுக்காதது". பொதுவாக, முக்கிய த்ரெட் அனைத்து முக்கியமான செயல்பாட்டு செயல்முறைகளையும் ஒருங்கிணைக்கிறது, அவை இயங்குவதற்கு அதிக அளவு CPU தேவைப்படாது. இது பெரும்பாலான கட்டுப்பாட்டு குறியீட்டை ஒற்றை திரிக்கப்பட்டதைப் போல எழுத அனுமதிக்கிறது.
  • தொழிலாளி: இயல்பாக, கணினியில் உள்ள ஒவ்வொரு ஹார்டுவேர் த்ரெட்டிற்கும் என்வாய் ஒரு வொர்க்கர் த்ரெட்டை உருவாக்குகிறார், இதை விருப்பத்தைப் பயன்படுத்தி கட்டுப்படுத்தலாம் --concurrency. ஒவ்வொரு தொழிலாளி நூலும் ஒரு “தடுக்காத” நிகழ்வு வளையத்தை இயக்குகிறது, இது ஒவ்வொரு கேட்பவரையும் கேட்கும் பொறுப்பாகும்; எழுதும் நேரத்தில் (ஜூலை 29, 2017) கேட்பவரின் பகிர்வு இல்லை, புதிய இணைப்புகளை ஏற்றுக்கொள்வது, வடிகட்டி அடுக்கை நிறுவுதல் இணைப்பு, மற்றும் இணைப்பின் வாழ்நாளில் அனைத்து உள்ளீடு/வெளியீடு (IO) செயல்பாடுகளையும் செயலாக்குகிறது. மீண்டும், இது பெரும்பாலான இணைப்பு கையாளுதல் குறியீட்டை ஒற்றை திரிக்கப்பட்டதைப் போல எழுத அனுமதிக்கிறது.
  • கோப்பு பறிப்பு: தூதர் எழுதும் ஒவ்வொரு கோப்பிலும், முக்கியமாக அணுகல் பதிவுகள், தற்போது ஒரு சுயாதீன தடுப்பு நூலைக் கொண்டுள்ளது. பயன்படுத்தும்போது கூட கோப்பு முறைமையால் தற்காலிக சேமிப்பில் உள்ள கோப்புகளுக்கு எழுதுவதே இதற்குக் காரணம் O_NONBLOCK சில நேரங்களில் தடுக்கப்படலாம் (பெருமூச்சு). பணியாளரின் நூல்கள் ஒரு கோப்பில் எழுத வேண்டியிருக்கும் போது, ​​தரவு உண்மையில் நினைவகத்தில் உள்ள ஒரு இடையகத்திற்கு நகர்த்தப்படுகிறது, அங்கு அது இறுதியில் நூல் வழியாக சுத்தப்படுத்தப்படுகிறது. கோப்பு பறிப்பு. நினைவக இடையகத்தை நிரப்ப முயலும் போது தொழில்நுட்ப ரீதியாக அனைத்து பணியாளர் இழைகளும் ஒரே பூட்டைத் தடுக்கக்கூடிய குறியீட்டின் ஒரு பகுதி இது.

இணைப்பு கையாளுதல்

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

இது பல முக்கியமான விளைவுகளைக் கொண்டுள்ளது:

  • தூதுவரில் உள்ள அனைத்து இணைப்புக் குளங்களும் ஒரு தொழிலாளி நூலுக்கு ஒதுக்கப்பட்டுள்ளன. எனவே, HTTP/2 இணைப்புக் குளங்கள் ஒரு நேரத்தில் ஒவ்வொரு அப்ஸ்ட்ரீம் ஹோஸ்டுக்கும் ஒரு இணைப்பை மட்டுமே உருவாக்கினாலும், நான்கு வேலை செய்பவர் த்ரெட்கள் இருந்தால், ஒரு நிலையான நிலையில் நான்கு HTTP/2 இணைப்புகள் இருக்கும்.
  • தூதுவர் இவ்வாறு செயல்படுவதற்குக் காரணம், அனைத்தையும் ஒரே ஒரு தொழிலாளி நூலில் வைத்து, கிட்டத்தட்ட எல்லா குறியீடுகளையும் தடுக்காமல், ஒற்றைத் திரிக்கப்பட்டதைப் போல எழுத முடியும். கிட்டத்தட்ட வரம்பற்ற எண்ணிக்கையிலான தொழிலாளர் நூல்களுக்கு நிறைய குறியீடுகள் மற்றும் அளவீடுகளை எழுதுவதை இந்த வடிவமைப்பு எளிதாக்குகிறது.
  • இருப்பினும், மெமரி பூல் மற்றும் இணைப்பு செயல்திறனின் நிலைப்பாட்டில் இருந்து, அதை உள்ளமைப்பது உண்மையில் மிகவும் முக்கியமானது என்பது முக்கிய எடுத்துக்காட்டல்களில் ஒன்றாகும். --concurrency. தேவைக்கு அதிகமாக வேலை செய்பவர் த்ரெட்களை வைத்திருப்பது நினைவகத்தை வீணடிக்கும், மேலும் செயலற்ற இணைப்புகளை உருவாக்கும் மற்றும் இணைப்பு பூலிங் விகிதத்தைக் குறைக்கும். Lyft இல், எங்கள் தூதர் பக்க கார் கண்டெய்னர்கள் மிகக் குறைந்த ஒத்திசைவுடன் இயங்குகின்றன, இதனால் செயல்திறன் அவர்கள் அருகில் அமர்ந்திருக்கும் சேவைகளுடன் ஏறக்குறைய பொருந்தும். நாங்கள் என்வாயை ஒரு எட்ஜ் ப்ராக்ஸியாக அதிகபட்ச ஒத்திசைவில் மட்டுமே இயக்குகிறோம்.

தடுக்காதது என்றால் என்ன?

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

தூதுவர் பல நீண்ட செயல்முறை பூட்டுகளைப் பயன்படுத்துகிறார்:

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

நூல் உள்ளூர் சேமிப்பு

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

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

தூதுவரின் TLS (நூல் உள்ளூர் சேமிப்பு) அமைப்பு பின்வருமாறு செயல்படுகிறது:

  • பிரதான தொடரிழையில் இயங்கும் குறியீடு முழு செயல்முறைக்கும் TLS ஸ்லாட்டை ஒதுக்கலாம். இது சுருக்கமாக இருந்தாலும், நடைமுறையில் இது ஒரு வெக்டருக்குள் ஒரு குறியீடாகும், இது O(1) அணுகலை வழங்குகிறது.
  • பிரதான நூல் தன்னிச்சையான தரவை அதன் ஸ்லாட்டில் நிறுவ முடியும். இது முடிந்ததும், தரவு ஒவ்வொரு தொழிலாளி தொடரிலும் ஒரு சாதாரண நிகழ்வு லூப் நிகழ்வாக வெளியிடப்படும்.
  • பணியாளரின் நூல்கள் அவற்றின் TLS ஸ்லாட்டிலிருந்து படிக்கலாம் மற்றும் அங்கு கிடைக்கும் எந்த த்ரெட்-லோக்கல் தரவையும் மீட்டெடுக்கலாம்.

இது மிகவும் எளிமையான மற்றும் நம்பமுடியாத சக்திவாய்ந்த முன்னுதாரணமாக இருந்தாலும், இது RCU (Read-Copy-Update) தடுப்பதை மிகவும் ஒத்திருக்கிறது. முக்கியமாக, வேலை இயங்கும் போது, ​​TLS ஸ்லாட்டுகளில் எந்த தரவு மாற்றங்களையும் பணியாளர் த்ரெட்கள் பார்க்காது. வேலை நிகழ்வுகளுக்கு இடையில் ஓய்வு காலத்தில் மட்டுமே மாற்றம் ஏற்படுகிறது.

தூதர் இதை இரண்டு வெவ்வேறு வழிகளில் பயன்படுத்துகிறார்:

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

கிளஸ்டர் புதுப்பிப்பு த்ரெடிங்

இந்தப் பகுதியில், ஒரு கிளஸ்டரை நிர்வகிக்க TLS (த்ரெட் லோக்கல் ஸ்டோரேஜ்) எவ்வாறு பயன்படுத்தப்படுகிறது என்பதை விவரிக்கிறேன். கிளஸ்டர் நிர்வாகத்தில் xDS API மற்றும்/அல்லது DNS செயலாக்கம் மற்றும் சுகாதார சோதனை ஆகியவை அடங்கும்.
[மொழிபெயர்ப்பு] தூதுவர் த்ரெடிங் மாதிரி

கிளஸ்டர் ஓட்ட மேலாண்மை பின்வரும் கூறுகள் மற்றும் படிகளை உள்ளடக்கியது:

  1. கிளஸ்டர் மேலாளர் என்பது அனைத்து அறியப்பட்ட கிளஸ்டர் அப்ஸ்ட்ரீம்கள், கிளஸ்டர் டிஸ்கவரி சர்வீஸ் (சிடிஎஸ்) ஏபிஐ, சீக்ரெட் டிஸ்கவரி சர்வீஸ் (எஸ்டிஎஸ்) மற்றும் எண்ட்பாயிண்ட் டிஸ்கவரி சர்வீஸ் (ஈடிஎஸ்) ஏபிஐகள், டிஎன்எஸ் மற்றும் செயலில் உள்ள வெளிப்புறச் சோதனைகள் ஆகியவற்றை நிர்வகிக்கும் என்வாயில் உள்ள ஒரு அங்கமாகும். ஒவ்வொரு அப்ஸ்ட்ரீம் கிளஸ்டரின் "இறுதியில் சீரான" காட்சியை உருவாக்குவதற்கு இது பொறுப்பாகும், இதில் கண்டுபிடிக்கப்பட்ட ஹோஸ்ட்கள் மற்றும் சுகாதார நிலை ஆகியவை அடங்கும்.
  2. சுகாதாரப் பரிசோதகர் செயலில் உள்ள சுகாதாரச் சோதனையைச் செய்து, சுகாதார நிலை மாற்றங்களை கிளஸ்டர் மேலாளரிடம் தெரிவிக்கிறார்.
  3. CDS (கிளஸ்டர் டிஸ்கவரி சர்வீஸ்) / SDS (ரகசிய கண்டுபிடிப்பு சேவை) / EDS (எண்ட்பாயிண்ட் டிஸ்கவரி சர்வீஸ்) / DNS ஆகியவை கிளஸ்டர் உறுப்பினர்களை தீர்மானிக்க செய்யப்படுகிறது. மாநில மாற்றம் கிளஸ்டர் மேலாளரிடம் திருப்பி அனுப்பப்படுகிறது.
  4. ஒவ்வொரு தொழிலாளி நூலும் ஒரு நிகழ்வு வளையத்தை தொடர்ந்து செயல்படுத்துகிறது.
  5. ஒரு கிளஸ்டருக்கான நிலை மாறிவிட்டது என்பதை கிளஸ்டர் மேலாளர் தீர்மானிக்கும் போது, ​​அது கிளஸ்டரின் நிலையின் புதிய படிக்க-மட்டும் ஸ்னாப்ஷாட்டை உருவாக்கி ஒவ்வொரு தொழிலாளி நூலுக்கும் அனுப்புகிறது.
  6. அடுத்த அமைதியான காலகட்டத்தின் போது, ​​ஒதுக்கப்பட்ட TLS ஸ்லாட்டில் உள்ள ஸ்னாப்ஷாட்டைப் பணியாளர் நூல் புதுப்பிக்கும்.
  7. ஒரு I/O நிகழ்வின் போது, ​​புரவலன் சமநிலையை ஏற்றுவதற்கு ஹோஸ்ட்டை தீர்மானிக்க வேண்டும், ஹோஸ்ட்டைப் பற்றிய தகவலைப் பெற, சுமை சமநிலையாளர் TLS (த்ரெட் லோக்கல் ஸ்டோரேஜ்) ஸ்லாட்டைக் கோருவார். இதற்கு பூட்டுகள் தேவையில்லை. லோட் பேலன்சர்கள் மற்றும் பிற கூறுகள் தற்காலிக சேமிப்புகள், தரவு கட்டமைப்புகள் போன்றவற்றை மீண்டும் கணக்கிடும் வகையில், டிஎல்எஸ் புதுப்பிப்பு நிகழ்வுகளைத் தூண்டலாம் என்பதையும் நினைவில் கொள்ளவும். இது இந்த இடுகையின் எல்லைக்கு அப்பாற்பட்டது, ஆனால் குறியீட்டில் பல்வேறு இடங்களில் பயன்படுத்தப்படுகிறது.

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

TLS ஐப் பயன்படுத்தும் பிற துணை அமைப்புகள்

TLS (த்ரெட் லோக்கல் ஸ்டோரேஜ்) மற்றும் RCU (Read Copy Update) ஆகியவை Envoyல் பரவலாகப் பயன்படுத்தப்படுகின்றன.

பயன்பாட்டின் எடுத்துக்காட்டுகள்:

  • செயல்பாட்டின் போது செயல்பாட்டை மாற்றுவதற்கான வழிமுறை: இயக்கப்பட்ட செயல்பாட்டின் தற்போதைய பட்டியல் பிரதான தொடரிழையில் கணக்கிடப்படுகிறது. ஒவ்வொரு தொழிலாளி நூலுக்கும் RCU சொற்பொருள்களைப் பயன்படுத்தி படிக்க-மட்டும் ஸ்னாப்ஷாட் வழங்கப்படுகிறது.
  • பாதை அட்டவணைகளை மாற்றுகிறது: ஆர்டிஎஸ் (ரூட் டிஸ்கவரி சர்வீஸ்) வழங்கிய ரூட் டேபிள்களுக்கு, மெயின் த்ரெட்டில் ரூட் டேபிள்கள் உருவாக்கப்படுகின்றன. RCU (Read Copy Update) சொற்பொருளைப் பயன்படுத்தி ஒவ்வொரு தொழிலாளி நூலுக்கும் படிக்க-மட்டும் ஸ்னாப்ஷாட் வழங்கப்படும். இது பாதை அட்டவணைகளை மாற்றுவதை அணுசக்தியாக ஆக்குகிறது.
  • HTTP தலைப்பு கேச்சிங்: ஒவ்வொரு கோரிக்கைக்கும் HTTP தலைப்பைக் கணக்கிடுவது (ஒரு மையத்திற்கு ~25K+ RPS ஐ இயக்கும் போது) மிகவும் விலை உயர்ந்தது. தூதர் தோராயமாக ஒவ்வொரு அரை வினாடியிலும் தலைப்பை மையமாகக் கணக்கிட்டு ஒவ்வொரு தொழிலாளிக்கும் TLS மற்றும் RCU வழியாக வழங்குகிறார்.

மற்ற வழக்குகள் உள்ளன, ஆனால் முந்தைய எடுத்துக்காட்டுகள் TLS எதற்காகப் பயன்படுத்தப்படுகிறது என்பதைப் பற்றிய நல்ல புரிதலை வழங்க வேண்டும்.

அறியப்பட்ட செயல்திறன் குறைபாடுகள்

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

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

முடிவுரை

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

குறியீட்டிற்கான இணைப்புகள்

இந்த இடுகையில் விவாதிக்கப்படும் இடைமுகங்கள் மற்றும் தலைப்புச் செயலாக்கங்களைக் கொண்ட கோப்புகளுக்கான இணைப்புகள்:

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

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