அளவீடுகள் சேமிப்பு: கிராஃபைட்+விஸ்பரிலிருந்து கிராஃபைட்+கிளிக்ஹவுஸுக்கு எப்படி மாறினோம்

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

அளவீடுகள் சேமிப்பு: கிராஃபைட்+விஸ்பரிலிருந்து கிராஃபைட்+கிளிக்ஹவுஸுக்கு எப்படி மாறினோம்

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

கிராஃபைட்+விஸ்பர் பிரச்சனைகள்

1. வட்டு துணை அமைப்பில் அதிக சுமை

மாற்றத்தின் போது, ​​ஒரு நிமிடத்திற்கு சுமார் 1.5 மில்லியன் அளவீடுகள் எங்களிடம் வந்து கொண்டிருந்தன. அத்தகைய ஓட்டத்துடன், சேவையகங்களில் வட்டு பயன்பாடு ~30% ஆக இருந்தது. பொதுவாக, இது மிகவும் ஏற்றுக்கொள்ளத்தக்கது - எல்லாமே சீராகச் செயல்பட்டன, விரைவாக எழுதப்பட்டன, விரைவாகப் படிக்கப்பட்டன... ஒரு புதிய அம்சத்தை உருவாக்கி, ஒரு நிமிடத்திற்கு 10 மில்லியன் அளவீடுகளை எங்களுக்கு அனுப்பும் வரை. அப்போதுதான் வட்டு துணை அமைப்பு இறுக்கமடைந்தது, மேலும் 100% பயன்பாட்டைக் கண்டோம். பிரச்சனை விரைவில் தீர்க்கப்பட்டது, ஆனால் ஒரு எச்சம் இருந்தது.

2. பிரதி மற்றும் நிலைத்தன்மை இல்லாமை

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

3. பெரிய தடம்

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

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

மேலே உள்ள அனைத்தையும் கொண்டிருத்தல் (முந்தையதை கணக்கில் எடுத்துக்கொள்வது கட்டுரைகள்), அத்துடன் பெறப்பட்ட அளவீடுகளின் எண்ணிக்கையில் நிலையான அதிகரிப்பு, அனைத்து அளவீடுகளையும் 30 வினாடிகளின் சேமிப்பக இடைவெளிக்கு மாற்றுவதற்கான விருப்பம். (தேவைப்பட்டால் 10 வினாடிகள் வரை), விஸ்பருக்கு ஒரு நம்பிக்கைக்குரிய மாற்றாக Graphite+ClickHouse ஐ முயற்சிக்க முடிவு செய்தோம்.

கிராஃபைட்+கிளிக்ஹவுஸ். எதிர்பார்ப்புகள்

யாண்டெக்ஸைச் சேர்ந்த தோழர்களின் பல சந்திப்புகளைப் பார்வையிட்டேன், படித்தேன் ஹப்ரே பற்றிய சில கட்டுரைகள், ஆவணங்கள் மூலம் சென்று கிளிக்ஹவுஸை கிராஃபைட்டின் கீழ் பிணைப்பதற்கான விவேகமான கூறுகளைக் கண்டறிந்த பிறகு, நாங்கள் நடவடிக்கை எடுக்க முடிவு செய்தோம்!

நான் பின்வருவனவற்றைப் பெற விரும்புகிறேன்:

  • வட்டு துணை அமைப்பு பயன்பாட்டை 30% முதல் 5% வரை குறைத்தல்;
  • ஆக்கிரமிக்கப்பட்ட இடத்தின் அளவை 1TB இலிருந்து 100GB ஆக குறைக்கவும்;
  • சேவையகத்தில் நிமிடத்திற்கு 100 மில்லியன் அளவீடுகளைப் பெற முடியும்;
  • பெட்டியின் வெளியே தரவு பிரதி மற்றும் தவறு சகிப்புத்தன்மை;
  • ஒரு வருடத்திற்கு இந்த திட்டத்தில் உட்கார்ந்து, ஒரு நியாயமான காலக்கெடுவிற்குள் மாற்றத்தை உருவாக்க வேண்டாம்;
  • வேலையில்லா நேரம் இல்லாமல் மாறவும்.

மிகவும் லட்சியம், இல்லையா?

கிராஃபைட்+கிளிக்ஹவுஸ். கூறுகள்

கிராஃபைட் நெறிமுறை மூலம் தரவைப் பெறுவதற்கும், அதைத் தொடர்ந்து கிளிக்ஹவுஸில் பதிவு செய்வதற்கும், நான் தேர்ந்தெடுத்தேன் கார்பன்-கிளிக்ஹவுஸ் (கோலாங்).

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

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

கிராஃபைட்+கிளிக்ஹவுஸ். அட்டவணை அமைப்பு

"கிராஃபைட்" என்பது அட்டவணைகளை கண்காணிப்பதற்காக நாங்கள் உருவாக்கிய தரவுத்தளமாகும்.

"graphite.metrics" - ReplicatedReplacingMergeTree இன்ஜினுடன் கூடிய அட்டவணை (பிரதிப்படுத்தப்பட்டது MergeTree ஐ மாற்றுதல்) இந்த அட்டவணை அளவீடுகளின் பெயர்களையும் அவற்றுக்கான பாதைகளையும் சேமிக்கிறது.

CREATE TABLE graphite.metrics ( Date Date, Level UInt32, Path String, Deleted UInt8, Version UInt32 ) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/replicator/graphite.metrics', ‘r1’, Date, (Level, Path), 8192, Version);

“graphite.data” - ReplicatedGraphiteMergeTree இன்ஜினுடன் கூடிய அட்டவணை (பிரதிப்படுத்தப்பட்டது GraphiteMergeTree) இந்த அட்டவணை மெட்ரிக் மதிப்புகளை சேமிக்கிறது.

CREATE TABLE graphite.data ( Path String, Value Float64, Time UInt32, Date Date, Timestamp UInt32 ) ENGINE = ReplicatedGraphiteMergeTree('/clickhouse/tables/replicator/graphite.data', 'r1', Date, (Path, Time), 8192, 'graphite_rollup')

"graphite.date_metrics" என்பது ReplicatedReplacingMergeTree இன்ஜினுடன் நிபந்தனையுடன் நிரப்பப்பட்ட அட்டவணையாகும். இந்த அட்டவணை பகலில் சந்தித்த அனைத்து அளவீடுகளின் பெயர்களையும் பதிவு செய்கிறது. அதன் உருவாக்கத்திற்கான காரணங்கள் பிரிவில் விவரிக்கப்பட்டுள்ளன "சிக்கல்கள்" இந்த கட்டுரையின் முடிவில்.

CREATE MATERIALIZED VIEW graphite.date_metrics ( Path String,  Level UInt32,  Date Date) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/replicator/graphite.date_metrics', 'r1', Date, (Level, Path, Date), 8192) AS SELECT toUInt32(length(splitByChar('.', Path))) AS Level, Date, Path FROM graphite.data

“graphite.data_stat” - ReplicatedAggregatingMergeTree இன்ஜினுடன் (பிரதிப்படுத்தப்பட்ட) நிபந்தனைக்கு ஏற்ப நிரப்பப்பட்ட அட்டவணை ஒன்றிணைத்தல் மரம்) இந்த அட்டவணை உள்வரும் அளவீடுகளின் எண்ணிக்கையைப் பதிவுசெய்கிறது, இது 4 கூடு நிலைகளாக பிரிக்கப்பட்டுள்ளது.

CREATE MATERIALIZED VIEW graphite.data_stat ( Date Date,  Prefix String,  Timestamp UInt32,  Count AggregateFunction(count)) ENGINE = ReplicatedAggregatingMergeTree('/clickhouse/tables/replicator/graphite.data_stat', 'r1', Date, (Timestamp, Prefix), 8192) AS SELECT toStartOfMonth(now()) AS Date, replaceRegexpOne(Path, '^([^.]+.[^.]+.[^.]+).*$', '1') AS Prefix, toUInt32(toStartOfMinute(toDateTime(Timestamp))) AS Timestamp, countState() AS Count FROM graphite.data  GROUP BY Timestamp, Prefix

கிராஃபைட்+கிளிக்ஹவுஸ். கூறு தொடர்பு வரைபடம்

அளவீடுகள் சேமிப்பு: கிராஃபைட்+விஸ்பரிலிருந்து கிராஃபைட்+கிளிக்ஹவுஸுக்கு எப்படி மாறினோம்

கிராஃபைட்+கிளிக்ஹவுஸ். தரவு இடம்பெயர்வு

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

  • கிளிக்ஹவுஸ் டேபிள்களின் பிரதியெடுப்பில் பங்கேற்கும் சர்வர்களில் ஒன்றின் கார்பன்-கிளிக்ஹவுஸுக்கு கூடுதல் அளவீடுகளை அனுப்ப கார்பன்-சி-ரிலேயில் ஒரு விதி சேர்க்கப்பட்டுள்ளது.

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

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

  • பேலன்சர் அமைப்புகளில் வாசிப்பு சுமையை மாற்ற, கிராஃபைட்-ஏபிஐ (கிராஃபைட்+விஸ்பருக்கான ஏபிஐ இன்டர்ஃபேஸ்) இலிருந்து கார்போனாபிக்கு எண்ட்பாயிண்ட்களை மாற்றினோம்.

கிராஃபைட்+கிளிக்ஹவுஸ். முடிவுகள்

  • வட்டு துணை அமைப்பு பயன்பாடு 30% முதல் 1% வரை குறைக்கப்பட்டது;

    அளவீடுகள் சேமிப்பு: கிராஃபைட்+விஸ்பரிலிருந்து கிராஃபைட்+கிளிக்ஹவுஸுக்கு எப்படி மாறினோம்

  • 1 TB இலிருந்து 300 GB ஆக ஆக்கிரமிக்கப்பட்ட இடத்தின் அளவைக் குறைத்தது;
  • சேவையகத்தில் நிமிடத்திற்கு 125 மில்லியன் அளவீடுகளைப் பெறும் திறன் எங்களிடம் உள்ளது (இடம்பெயர்வு நேரத்தில் உச்சம்);
  • அனைத்து அளவீடுகளையும் முப்பத்தி இரண்டாவது சேமிப்பக இடைவெளிக்கு மாற்றியது;
  • பெறப்பட்ட தரவு பிரதி மற்றும் தவறு சகிப்புத்தன்மை;
  • வேலையில்லா நேரம் இல்லாமல் மாறியது;
  • எல்லாவற்றையும் முடிக்க சுமார் 7 வாரங்கள் ஆனது.

கிராஃபைட்+கிளிக்ஹவுஸ். பிரச்சனைகள்

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

  1. கிளிக்ஹவுஸ் எப்பொழுதும் பறக்கும்போது உள்ளமைவுகளை மீண்டும் படிக்காது; சில சமயங்களில் அதை மீண்டும் துவக்க வேண்டும். எடுத்துக்காட்டாக, கிளிக்ஹவுஸ் கட்டமைப்பில் உள்ள ஜூகீப்பர் கிளஸ்டரின் விளக்கத்தில், கிளிக்ஹவுஸ்-சர்வர் மறுதொடக்கம் செய்யப்படும் வரை அது பயன்படுத்தப்படவில்லை.
  2. பெரிய ClickHouse கோரிக்கைகள் செல்லவில்லை, எனவே கிராஃபைட்-கிளிக்ஹவுஸில் எங்கள் ClickHouse இணைப்பு சரம் இதுபோல் தெரிகிறது:
    url = "http://localhost:8123/?max_query_size=268435456&max_ast_elements=1000000"
  3. கிளிக்ஹவுஸ் நிலையான வெளியீடுகளின் புதிய பதிப்புகளை அடிக்கடி வெளியிடுகிறது; அவற்றில் ஆச்சரியங்கள் இருக்கலாம்: கவனமாக இருங்கள்.
  4. குபெர்னெட்டஸில் மாறும் வகையில் உருவாக்கப்பட்ட கொள்கலன்கள் குறுகிய மற்றும் சீரற்ற வாழ்நாள் முழுவதும் அதிக எண்ணிக்கையிலான அளவீடுகளை அனுப்புகின்றன. அத்தகைய அளவீடுகளுக்கு பல புள்ளிகள் இல்லை, மற்றும் இடத்தில் எந்த பிரச்சனையும் இல்லை. ஆனால் வினவல்களை உருவாக்கும் போது, ​​ClickHouse 'அளவீடுகள்' அட்டவணையில் இருந்து இதே அளவீடுகளை அதிக எண்ணிக்கையில் எடுக்கிறது. 90% வழக்குகளில், சாளரத்திற்கு அப்பால் (24 மணிநேரம்) தரவு எதுவும் இல்லை. ஆனால் 'தரவு' அட்டவணையில் இந்தத் தரவைத் தேடுவதற்கு நேரம் செலவிடப்படுகிறது, மேலும் இறுதியில் காலாவதியாகிறது. இந்தச் சிக்கலைத் தீர்ப்பதற்காக, பகலில் சந்திக்கும் அளவீடுகள் பற்றிய தகவல்களுடன் தனித்தனியாகப் பார்க்கத் தொடங்கினோம். எனவே, மாறும் வகையில் உருவாக்கப்பட்ட கொள்கலன்களுக்கான அறிக்கைகளை (வரைபடங்கள்) உருவாக்கும்போது, ​​கொடுக்கப்பட்ட சாளரத்தில் உள்ள அளவீடுகளை மட்டுமே நாங்கள் வினவுகிறோம், முழு நேரத்திற்கும் அல்ல, அவை அறிக்கைகளை உருவாக்குவதை கணிசமாக துரிதப்படுத்தியது. மேலே விவரிக்கப்பட்ட தீர்வுக்காக, நான் சேகரித்தேன் கிராஃபைட்-கிளிக்ஹவுஸ் (முட்கரண்டி), தேதி_மெட்ரிக்ஸ் அட்டவணையுடன் பணிபுரிவதை உள்ளடக்கியது.

கிராஃபைட்+கிளிக்ஹவுஸ். குறிச்சொற்கள்

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

கிராஃபைட்+கிளிக்ஹவுஸ். ஒழுங்கின்மை கண்டறியும் கருவி

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

குழுசேர், மேல் அம்புக்குறியை அழுத்தி மகிழ்ச்சியாக இருங்கள்!

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

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