டரான்டூல் டேட்டா கிரிட்டின் கட்டிடக்கலை மற்றும் திறன்கள்

டரான்டூல் டேட்டா கிரிட்டின் கட்டிடக்கலை மற்றும் திறன்கள்

2017 ஆம் ஆண்டில், ஆல்ஃபா-வங்கியின் முதலீட்டு வணிகத்தின் பரிவர்த்தனை மையத்தை மேம்படுத்துவதற்கான ஒரு போட்டியில் நாங்கள் வெற்றிபெற்று வேலையைத் தொடங்கினோம் (ஹைலோட்++ 2018 இல் முதலீட்டு வணிகத்தின் மையத்தைப் பற்றிய அறிக்கையுடன் பேசினார் விளாடிமிர் ட்ரின்கின், ஆல்ஃபா வங்கியின் முதலீட்டு வணிகத்தின் பரிவர்த்தனை மையத்தின் தலைவர்). இந்த அமைப்பு பல்வேறு வடிவங்களில் வெவ்வேறு மூலங்களிலிருந்து பரிவர்த்தனை தரவை ஒருங்கிணைத்து, தரவை ஒரு ஒருங்கிணைந்த வடிவத்தில் கொண்டு வந்து சேமித்து அதற்கான அணுகலை வழங்க வேண்டும்.

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

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

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

டரான்டூல் டேட்டா கிரிட்டின் கட்டிடக்கலை மற்றும் திறன்கள்

இணைப்பு

வெளி உலகத்துடனான தொடர்புக்கு இணைப்பான் பொறுப்பு; அதன் பணி கோரிக்கையை ஏற்று, அதை அலசுவது, இது வெற்றியடைந்தால், செயலாக்கத்திற்கான தரவை உள்ளீட்டு செயலிக்கு அனுப்புவது. நாங்கள் HTTP, SOAP, Kafka, FIX வடிவங்களை ஆதரிக்கிறோம். IBM MQக்கான ஆதரவுடன், புதிய வடிவங்களுக்கான ஆதரவைச் சேர்க்க கட்டமைப்பு உங்களை அனுமதிக்கிறது. கோரிக்கையை பாகுபடுத்துவது தோல்வியுற்றால், இணைப்பான் பிழையை வழங்கும்; இல்லையெனில், கோரிக்கை வெற்றிகரமாக செயலாக்கப்பட்டது என்று பதிலளிக்கும், அதன் மேலும் செயலாக்கத்தின் போது பிழை ஏற்பட்டாலும் கூட. கோரிக்கைகளை எவ்வாறு மீண்டும் செய்வது என்று தெரியாத அமைப்புகளுடன் பணிபுரிவதற்காக இது குறிப்பாக செய்யப்பட்டது - அல்லது, மாறாக, அதை விடாமுயற்சியுடன் செய்யுங்கள். தரவை இழக்காமல் இருக்க, பழுதுபார்க்கும் வரிசை பயன்படுத்தப்படுகிறது: பொருள் முதலில் அதில் நுழைகிறது மற்றும் வெற்றிகரமான செயலாக்கத்திற்குப் பிறகு மட்டுமே அதிலிருந்து அகற்றப்பட்டது. பழுதுபார்க்கும் வரிசையில் மீதமுள்ள பொருட்களைப் பற்றிய விழிப்பூட்டல்களை நிர்வாகி பெற முடியும், மேலும் மென்பொருள் பிழை அல்லது வன்பொருள் செயலிழப்பை நீக்கிய பிறகு, மீண்டும் முயற்சிக்கவும்.

உள்ளீட்டு செயலி

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

கையாளுபவர்களை கோப்புகளில் விவரிக்கலாம்:

sum.lua

local x, y = unpack(...)
return x + y

பின்னர், கட்டமைப்பில் அறிவிக்கப்பட்டது:

functions:
  sum: { __file: sum.lua }

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

சேமிப்பு

சேமிப்பகம் நிலையான தரவைச் சேமிக்கிறது. சேமிப்பதற்கு முன், டேட்டா ஸ்கீமாவிற்கு எதிராக தரவு சரிபார்க்கப்படுகிறது. சுற்று விவரிக்க நாம் நீட்டிக்கப்பட்ட வடிவம் பயன்படுத்த அப்பாச்சி அவ்ரோ. ஒரு எடுத்துக்காட்டு:

{
    "name": "User",
    "type": "record",
    "logicalType": "Aggregate",
    "fields": [ 
        { "name": "id", "type": "string"}, 
        {"name": "first_name", "type": "string"}, 
        {"name": "last_name", "type": "string"} 
    ], 
    "indexes": ["id"] 
}

இந்த விளக்கத்தின் அடிப்படையில், DDL (தரவு வரையறை மொழி) தானாக டரான்டுலா DBMS மற்றும் வரைபடம் தரவு அணுகலுக்கான திட்டம்.

ஒத்திசைவற்ற தரவு நகலெடுப்பு ஆதரிக்கப்படுகிறது (ஒத்திசைவான ஒன்றைச் சேர்க்கும் திட்டங்கள் உள்ளன).

வெளியீட்டு செயலி

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

அளவிடுதல்

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

தரவு பண்புகள்

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

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

பணிகளை

சுவாரஸ்யமான அம்சங்களில், ஒரு அட்டவணையில், பயனரின் வேண்டுகோளின் பேரில் அல்லது சாண்ட்பாக்ஸிலிருந்து நிரல் ரீதியாக பணிகளைத் தொடங்கும் திறனைக் குறிப்பிடுவது மதிப்பு:

டரான்டூல் டேட்டா கிரிட்டின் கட்டிடக்கலை மற்றும் திறன்கள்

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

ஒருபோதும்

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

சேவைகள்

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

சேவை உள்ளமைவு கோப்பில் விவரிக்கப்பட்டுள்ளது:

services:
   sum:
      doc: "adds two numbers"
      function: sum
      return_type: int
      args:
         x: int
         y: int

GraphQL API தானாக உருவாக்கப்படும் மற்றும் அழைப்பிற்கு சேவை கிடைக்கும்:

query {
   sum(x: 1, y: 2) 
}

இது கையாளுபவரை அழைக்கும் sumஇது முடிவைத் தரும்:

3

வினவல் விவரக்குறிப்பு மற்றும் அளவீடுகள்

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

டரான்டூல் டேட்டா கிரிட்டின் கட்டிடக்கலை மற்றும் திறன்கள்

இயற்கையாகவே, இந்த அமைப்பு ப்ரோமிதியஸைப் பயன்படுத்தி சேகரிக்கப்பட்டு கிராஃபானாவைப் பயன்படுத்தி காட்சிப்படுத்தக்கூடிய உள் அளவீடுகளை வழங்குகிறது.

வரிசைப்படுத்த

டரான்டூல் டேட்டா கிரிட் RPM தொகுப்புகள் அல்லது ஒரு காப்பகத்திலிருந்து வரிசைப்படுத்தப்படலாம், விநியோகம் அல்லது அன்சிபில் இருந்து ஒரு பயன்பாட்டைப் பயன்படுத்தி, Kubernetes க்கான ஆதரவும் உள்ளது (Tarantool Kubernetes ஆபரேட்டர்).

வணிக லாஜிக்கை (உள்ளமைவு, கையாளுபவர்கள்) செயல்படுத்தும் பயன்பாடு, பயன்படுத்தப்பட்ட டரான்டூல் டேட்டா கிரிட் கிளஸ்டரில் UI மூலம் காப்பக வடிவில் அல்லது நாங்கள் வழங்கிய API மூலம் ஸ்கிரிப்டைப் பயன்படுத்தி ஏற்றப்படும்.

மாதிரி பயன்பாடுகள்

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

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

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

அடுத்து என்ன?

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

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

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

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