Веб-қызметтерге арналған жадтағы архитектура: технология негіздері мен принциптері

In-Memory - бұл қолданбаның жедел жадында сақталған кезде деректерді сақтауға арналған тұжырымдамалар жиынтығы, ал диск сақтық көшірме жасау үшін пайдаланылады. Классикалық тәсілдерде деректер дискіде, ал жады кэште сақталады. Мысалы, деректерді өңдеуге арналған сервері бар веб-қосымша оны жадқа сұрайды: ол оны қабылдайды, түрлендіреді және желі арқылы көптеген деректер тасымалданады. In-Memory жүйесінде есептеулер деректерге – сақтауға жіберіледі, олар өңделеді және желі аз жүктеледі.

Архитектурасының арқасында In-Memory деректерге қол жеткізуді бірнеше есе, ал кейде тіпті үлкен тәртіппен жылдамдатады. Мысалы, банк талдаушылары аналитикалық қосымшада өткен жылдағы динамикадағы берілген несиелер туралы есепті көргісі келеді. Бұл процесс классикалық ДҚБЖ-да бірнеше минутты алады, бірақ In-Memory көмегімен ол бірден пайда болады. Себебі бұл әдіс сізге көбірек ақпаратты кэштеуге мүмкіндік береді және ол жедел жадта «қолда» сақталады. Қолданбаға қатты дискіден деректерді сұраудың қажеті жоқ, оның қолжетімділігі желі және диск жылдамдығымен шектеледі.

In-Memory мүмкіндігімен басқа қандай мүмкіндіктер бар және бұл қандай тәсіл? Владимир Плигин - GridGain компаниясының инженері. Бұл шолу материалы In-Memory бағдарламасымен жұмыс істемеген және сынап көргісі келетін немесе бағдарламалық жасақтаманы әзірлеудегі және архитектуралық дизайндағы заманауи трендтерге қызығушылық танытатын веб-бағдарламаның серверлік әзірлеушілеріне пайдалы болады.

ескерту. Мақала Владимирдің #GetIT Conf конференциясындағы баяндамасының стенограммасына негізделген. Өзін-өзі оқшаулауды енгізгенге дейін біз Мәскеу мен Санкт-Петербургте әзірлеушілерге арналған кездесулер мен конференцияларды үнемі өткізіп тұрдық: біз тенденцияларды, қазіргі даму мәселелерін, проблемаларды және оларды шешу жолдарын талқыладық. Қазір конференция өткізу мүмкін емес, бірақ бұрынғы материалдармен бөлісетін кез келді.

In-Memory мүмкіндігін кім және қалай пайдаланады

In-Memory пайдаланушының жылдам әрекеттесуі немесе деректердің үлкен көлемін өңдеу қажет болған жағдайда жиі пайдаланылады.

  • Банктер мысалы, клиенттер қолданбаларды пайдаланған кездегі кідірістерді азайту немесе несие беру алдында клиентті талдау үшін In-Memory пайдаланыңыз.
  • Fintech деректерді өңдеу мен талдауды жүзеге асыратын банктерге арналған қызметтер мен қосымшалардың өнімділігін жақсарту үшін In-Memory қолданбасын пайдаланады. 
  • Сақтандыру компаниялары: тәуекелдерді есептеу үшін, мысалы, тұтынушылардың бірнеше жылдардағы деректерін талдау арқылы.
  • Логистикалық компаниялар. Олар көптеген деректерді өңдейді, мысалы, мыңдаған параметрлері бар жүк және жолаушыларды тасымалдаудың оңтайлы бағыттарын есептеп, жөнелтілімдердің күйін бақылайды.
  • Бөлшек сауда. In-Memory шешімдері тұтынушыларға жылдам қызмет көрсетуге және ақпараттың үлкен көлемін өңдеуге көмектеседі: жөнелтілімдер, шот-фактуралар, транзакциялар, қоймаларда мыңдаған тауарлардың болуы және аналитикалық есептерді дайындау.
  • В IOT In-Memory дәстүрлі дерекқорларды ауыстырады.
  • Фармацевтикалық компаниялар, мысалы, дәрілік композициялардың комбинацияларын сұрыптау үшін In-Memory пайдаланады. 

Мен сізге клиенттеріміздің In-Memory шешімдерін қалай пайдаланатынын және оларды өзіңіз қалай жүзеге асыра алатыныңыздың бірнеше мысалын айтып беремін.

Негізгі жад ретінде In-Memory

Біздің клиенттеріміздің бірі - АҚШ-тан медициналық ғылыми жабдықтардың ірі жеткізушісі. Олар негізгі деректер қоймасы ретінде In-Memory шешімін пайдаланады. Барлық деректер дискіде сақталады, ал белсенді пайдаланылатын деректердің ішкі жиыны жедел жадта сақталады. Сақтауға қол жеткізу әдістері стандартты болып табылады - GDBC (Жалпы деректер қоры қосқышы) және SQL сұрау тілі.

Веб-қызметтерге арналған жадтағы архитектура: технология негіздері мен принциптері

Бұл жиынтықта жадтағы дерекқор (IMDB) немесе жадқа бағытталған сақтау деп аталады. Бұл шешімдер класының көптеген атаулары бар, бұл жалғыз емес. 

IMDB мүмкіндіктері:

  • In-Memory жүйесінде сақталатын және SQL арқылы қол жеткізілетін деректер басқа тәсілдермен бірдей. Олар синхронизацияланған, тек ұсыну тәсілі, оларға жүгіну тәсілі әртүрлі. Мәліметтер арасында транзакциялық жұмыс істейді.

  • IMDB реляциялық дерекқорларға қарағанда жылдамырақ, себебі ол ақпаратты дискіден гөрі жедел жадтан алу жылдамырақ. 
  • Ішкі оңтайландыру алгоритмдерінде нұсқаулар аз.
  • IMDB қолданбалардағы деректерді, оқиғаларды және транзакцияларды басқару үшін қолайлы.

IMDBs ACID-ті ішінара қолдайды: атомдық, консистенция және оқшаулау. Бірақ олар «тұрақтылықты» қолдамайды - қуат өшірілгенде барлық деректер жоғалады. Мәселені шешу үшін суретті – қатты дискідегі дерекқордың сақтық көшірмесіне ұқсас дерекқордың «суретін» немесе қайта жүктегеннен кейін деректерді қалпына келтіру үшін транзакцияларды (журналдарды) жазуға болады.

Ақауларға төзімді қолданбаларды жасау үшін

Қатеге төзімді веб-қосымшаның классикалық архитектурасын елестетіп көрейік. Ол келесідей жұмыс істейді: барлық сұраулар серверлер арасында веб балансизатор арқылы таратылады. Бұл жүйе тұрақты, себебі серверлер бір-бірін көшіреді және оқыс жағдайларда сақтық көшірме жасайды.

Веб-қызметтерге арналған жадтағы архитектура: технология негіздері мен принциптері

Балансты бір сеанстағы барлық сұрауларды бір серверге бағыттайды. Бұл стиктік сеанс механизмі: әрбір сеанс жергілікті түрде сақталатын және өңделетін сервермен байланысты. 

Серверлердің бірі істен шыққанда не болады?

Веб-қызметтерге арналған жадтағы архитектура: технология негіздері мен принциптері

Архитектура қайталанатындықтан, қызмет әсер етпейді. Бірақ біз өлі сервер сеанстарының жиынын жоғалтамыз. Сонымен қатар, осы сеанстарға байланысты пайдаланушылар. Мысалы, клиент тапсырыс беріп, оны кенеттен кеңседен лақтырып жібереді. Ол қайтадан жүйеге кіріп, бәрін қайта жасау керек екенін түсінгенде бақытсыз болады.

Веб-бағдарлама көптеген пайдаланушыларға қолдау көрсету және олардың ыңғайлы жұмыс істеуі үшін баяуламау үшін қажет. Бірақ егер ол бас тартылса, әрбір келесі сұрауда сеанс дүкенімен байланысуға кететін уақыт артады. Бұл басқа пайдаланушылар үшін орташа күту уақытын арттырады. Бірақ олар үйренгеннен көп күткісі келмейді.

Бұл мәселені АҚШ-тан келген ірі PASS провайдері сияқты біздің басқа клиентіміз сияқты шешуге болады. Ол веб-сеанстарды кластерлеу үшін In-Memory пайдаланады. Мұны істеу үшін ол оларды жергілікті емес, орталықта - In-Memory кластерінде сақтайды. Бұл жағдайда сеанстар әлдеқайда жылдам қол жетімді, себебі олар ЖЖҚ-да бұрыннан бар.

Веб-қызметтерге арналған жадтағы архитектура: технология негіздері мен принциптері

Сервер бұзылған кезде, баланстауыш классикалық архитектурадағы сияқты бұзылған серверден сұрауларды басқа серверлерге жібереді. Бірақ маңызды айырмашылық бар: сеанстар In-Memory кластерінде сақталады және серверлер құлаған сервердің сеанстарына қол жеткізе алады.

Бұл архитектура бүкіл жүйенің ақауларға төзімділігін арттырады. Сонымен қатар, таяқша сеансы механизмінен мүлдем бас тартуға болады.

Гибридті транзакциялық аналитикалық өңдеу (HTAP)

Әдетте транзакциялық және аналитикалық жүйелер бөлек сақталады. Олар бөлінген кезде, негізгі негіз жүктеме астында болады. Аналитикалық өңдеу үшін деректер репликаға көшіріледі, осылайша аналитикалық өңдеу транзакциялық процестерге кедергі келтірмейді. Бірақ көшіру кешігумен жүреді — кешігусіз көшіру мүмкін емес. Егер біз мұны синхронды түрде жасасақ, ол негізгі базаны да баяулатады және біз ешқандай ұтыс алмаймыз.

HTAP-та бәрі басқаша жұмыс істейді - бірдей деректер қоймасы қолданбалардан транзакциялық жүктеме үшін және аяқталуына көп уақыт кетуі мүмкін аналитикалық сұраулар үшін пайдаланылады. Деректер жедел жадта болғанда аналитикалық сұраулар жылдам орындалады, ал деректер қоры бар сервер аз жүктеледі (орташа).

Веб-қызметтерге арналған жадтағы архитектура: технология негіздері мен принциптері

Гибридті тәсіл транзакцияны өңдеу мен аналитика арасындағы қабырғаны бұзады. Егер аналитиканы бір жадта орындасақ, онда жедел жадтағы деректерге аналитикалық сұраулар іске қосылады. Олар әлдеқайда дәлірек, түсінікті және барабар.

In-Memory шешімдерінің интеграциясы

(салыстырмалы) қарапайым әдіс - барлығын нөлден дамытыңыз. Біз деректерді дискіде сақтаймыз және ыстық деректерді жадта сақтаймыз. Бұл серверді қайта жүктеуден немесе үзілістерден аман қалуға көмектеседі.

Деректер дискіде сақталған кезде мұнда жұмыс істейтін екі негізгі сценарий бар. Біріншіден, біз кластердің немесе бөліктердің бұзылуынан немесе тұрақты қайта жүктелуінен аман қалғымыз келеді - біз оны қарапайым дерекқор ретінде пайдаланғымыз келеді. Екінші сценарийде, деректер тым көп болғанда, олардың бір бөлігі жадта болады.

Егер барлығын нөлден құру мүмкін болмаса, In-Memory жүйесін бұрыннан бар компьютерге біріктіруге болады. қолданыстағы архитектура. Бірақ барлық In-Memory шешімдері бұл үшін қолайлы емес. Міндетті үш шарт бар. In-Memory шешімі мыналарды қолдауы керек:

  • оның астында орналасатын дерекқорға қосылудың стандартты тәсілі (мысалы, MySQL);
  • жадпен өзара әрекеттесу логикасын қайта жазбау және өзгертпеу үшін стандартты сұрау тілі;
  • транзакциялық - өзара әрекеттесу семантикасын сақтау.

Егер барлық үш шарт орындалса, онда интеграция мүмкін болады. Қолданба мен мәліметтер базасының арасына жадтағы деректер торын орналастырамыз. Енді жазу сұраулары негізгі дерекқорға беріледі, ал оқу сұраулары деректер кэште болмаса, негізгі дерекқорға беріледі.

Веб-қызметтерге арналған жадтағы архитектура: технология негіздері мен принциптері

Егер деректерге жылдам қол жеткізу және оны өңдеу сіз үшін маңызды болса, мысалы, бизнес-аналитика үшін In-Memory бағдарламасын енгізу туралы ойлануға болады. Ал жүзеге асыру үшін жаңа архитектураны жобалау кезінде екі әдісті де қолдануға болады.

Ақпарат көзі: www.habr.com

пікір қалдыру