1.1 பயன்பாட்டு கட்டமைப்பு

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

பெரிய சர்வர் பயன்பாடுகளுக்கான பிரபலமான கட்டமைப்புகளின் எடுத்துக்காட்டுகள்:

  • அடுக்கு கட்டிடக்கலை (Layered Architecture).
  • அடுக்கு கட்டிடக்கலை.
  • சேவை சார்ந்த கட்டிடக்கலை (SOA).
  • மைக்ரோ சர்வீஸ் கட்டிடக்கலை (மைக்ரோ சர்வீஸ் ஆர்கிடெக்சர்).

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

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

"தேவையான இடங்களில் மாற்றங்களைச் செய்யுங்கள்" என்றால் என்ன? நீங்கள் மாற்றங்களைச் செய்யத் தேவையில்லாத இடங்கள் உள்ளதா? சரியாக.

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

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

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

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

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

1.2 கிளையன்ட்-சர்வர் தொடர்பு பற்றிய கருத்து

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

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

பின்வரும் எடுத்துக்காட்டுகளை சேவையகமாக வழங்கலாம்:

  • டாம்கேட் போன்ற இணைய சேவையகங்கள்.
  • MySQL போன்ற தரவுத்தள சேவையகங்கள்.
  • ஸ்ட்ரைப் போன்ற கட்டண நுழைவாயில்கள்.

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

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

Tomcat மற்றும் அதன் சேவையகங்கள் எவ்வாறு செயல்படுகின்றன என்பதை நினைவில் கொள்க? சேவையகம் ஒரு HTTP செய்தியைப் பெறுகிறது, அதைத் திறக்கிறது, தேவையான அனைத்து தகவல்களையும் அங்கிருந்து பிரித்தெடுத்து, அதைச் செயலாக்குவதற்காக சேவையகத்திற்கு அனுப்புகிறது. பின்னர் செயலாக்க முடிவு மீண்டும் ஒரு HTTP-பதிலில் தொகுக்கப்பட்டு கிளையண்டிற்கு அனுப்பப்படும்.

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

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

1.3 ஒரு முக்கியமான நுணுக்கம்

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

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

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

  • லாஜிக் எளிமைப்படுத்தல் : சேவையகத்திற்கு கிளையன்ட் மற்றும் எதிர்காலத்தில் அதன் தரவை எவ்வாறு பயன்படுத்தும் என்பது பற்றி எதுவும் தெரியாது.
  • பலவீனமான கிளையண்டுகள் இருக்கலாம் : அனைத்து வள-தீவிர பணிகளும் சேவையகத்திற்கு மாற்றப்படும்.
  • கிளையன்ட் குறியீடு மற்றும் சர்வர் குறியீட்டின் சுயாதீன வளர்ச்சி.
  • பல்வேறு கிளையண்டுகள், எடுத்துக்காட்டாக டாம்கேட் மற்றும் வெவ்வேறு உலாவிகள்.

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

கிளையன்ட்-சர்வர்

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

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

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

முக்கியமான பொருட்களின் வாழ்க்கைச் சுழற்சியை கண்காணிக்க வேண்டும்:

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

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

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

1.4 கிளையண்ட்-சர்வர் கட்டமைப்பு

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

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

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

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

இரண்டு அடுக்கு கிளையன்ட்-சர்வர் தொடர்பு மாதிரியை ஒரு எளிய வரைபடமாக வரையலாம்.

இரண்டு அடுக்கு கிளையன்ட்-சர்வர் கட்டமைப்பு

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