Бөлүштүрүлгөн колдонмолордун курулуш блоктору. Нөлгө жакындоо

Бөлүштүрүлгөн колдонмолордун курулуш блоктору. Нөлгө жакындоо

Дүйнө бир ордунда турбайт. Прогресс жаңы технологиялык кыйынчылыктарды жаратат. Өзгөрүлүп жаткан талаптарга ылайык, маалыматтык системалардын архитектурасы өнүгөт. Бүгүн биз окуяга негизделген архитектура, конкуррент, конкуррент, асинхрония жана мунун баары менен Эрлангда кантип тынч жашай ала тургандыгы жөнүндө сүйлөшөбүз.

тааныштыруу

Долбоорланган системанын көлөмүнө жана ага коюлган талаптарга жараша биз, иштеп чыгуучулар, системада маалымат алмашуу ыкмасын тандайбыз. Көпчүлүк учурларда, кызматтардын өз ара аракеттенүүсүн уюштуруу үчүн жумушчу вариант брокер менен схема болушу мүмкүн, мисалы, RabbitMQ же kafka негизинде. Бирок кээде окуялардын агымы, SLA жана системаны көзөмөлдөө деңгээли даяр билдирүүлөр бизге ылайыктуу эмес. Албетте, сиз, мисалы, ZeroMQ же nanomsg колдонуу менен транспорттук катмар жана кластер түзүү үчүн жоопкерчиликти алуу менен системаны бир аз татаалдаштыра аласыз. Ал эми системанын стандарттык Erlang кластеринин өткөрүү жөндөмдүүлүгү жана мүмкүнчүлүктөрү жетиштүү болсо, анда кошумча объектти киргизүү маселеси деталдуу изилдөөнү жана экономикалык негиздемени талап кылат.

Реактивдүү бөлүштүрүлгөн тиркемелердин темасы кыйла кеңири. Макаланын форматында калуу үчүн, бүгүнкү талкуунун темасы Эрланг/Эликсирде курулган бир тектүү чөйрөлөр гана болот. Erlang/OTP экосистемасы эң аз күч менен реактивдүү архитектураны ишке ашырууга мүмкүндүк берет. Бирок кандай болгон күндө да бизге билдирүү катмары керек болот.

Теориялык негиз

Дизайн максаттарды жана чектөөлөрдү аныктоо менен башталат. Негизги максат өнүгүү үчүн өнүгүү чөйрөсүндө эмес. Биз коопсуз жана масштабдуу куралды алышыбыз керек, анын негизинде биз түзө алабыз жана эң негизгиси ар кандай деңгээлдеги заманбап тиркемелерди иштеп чыгабыз: кичинекей аудиторияны тейлеген бир сервердик тиркемелерден баштап, кийинчерээк 50гө чейин кластерлерге айланат. -60 түйүн, кластердик федерациялар менен аяктайт. Ошентип, негизги максат акыркы системаны иштеп чыгуу жана ээлик кылуу наркын азайтуу аркылуу максималдуу пайда болуп саналат.

Келгиле, акыркы система үчүн 4 негизги талаптарды белгилейли:

  • Сокуяга багытталган.
    Система ар дайым окуялардын агымынан өтүп, керектүү аракеттерди жасоого даяр;
  • Ммасштабдуулугу.
    Жеке блокторду тигинен да, туурасынан да масштабдаштырса болот. Бүт система чексиз горизонталдуу өсүүгө жөндөмдүү болушу керек;
  • Окатага сабырдуулук.
    Бардык деңгээлдер жана бардык кызматтар каталардан автоматтык түрдө калыбына келтирилиши керек;
  • Гкепилденген жооп убактысы.
    Убакыт баалуу жана колдонуучулар көпкө күтпөшү керек.

"Мүмкүн кичинекей мотор" жөнүндө эски жомок эсиңиздеби? Долбоорланган система прототип баскычынан ийгиликтүү чыгып, прогрессивдүү болушу үчүн анын пайдубалы минималдуу талаптарга жооп бериши керек. SMOG.

Инфраструктура куралы жана бардык кызматтар үчүн негиз катары билдирүүлөргө дагы бир пункт кошулат: программисттер үчүн колдонуунун жеңилдиги.

Окуяга багытталган

Тиркеме бир серверден кластерге өсүш үчүн анын архитектурасы бош байланышты колдоого алышы керек. Асинхрондук модель бул талапка жооп берет. Анда жөнөтүүчү жана алуучу билдирүүнүн маалыматтык жүктөмүнө кам көрөт жана системанын ичинде берүү жана маршруттоо жөнүндө кабатыр болбо.

Масштабдуулук

Масштабдуулук жана системанын натыйжалуулугу бири-бирине жакын. Колдонмо компоненттери бардык колдо болгон ресурстарды колдоно алышы керек. Биз кубаттуулуктарды канчалык эффективдүү пайдалана алсак жана иштетүү ыкмаларыбыз канчалык оптималдуу болсо, жабдууларга ошончолук азыраак акча сарптайбыз.

Бир машинанын ичинде Эрланг күчтүү атаандаштык чөйрөсүн түзөт. Параллелдүүлүк менен параллелизмдин ортосундагы баланс Erlang VM үчүн жеткиликтүү болгон операциялык системанын жиптеринин санын жана бул жиптерди колдонгон пландоочулардын санын тандоо менен орнотулушу мүмкүн.
Эрланг процесстери абалды бөлүшпөйт жана бөгөттөлбөгөн режимде иштейт. Бул салттуу бөгөттөөлөргө негизделген тиркемелерге караганда салыштырмалуу аз күтүү жана жогорку өткөрүү жөндөмдүүлүгүн камсыз кылат. Эрлангдын пландоочусу CPU менен IOнун адилет бөлүштүрүлүшүн камсыздайт, ал эми бөгөттөөнүн жоктугу тиркемеге эң жогорку жүктөмдөр же каталар учурунда да жооп берүүгө мүмкүндүк берет.

Кластердик деңгээлде утилдештирүү маселеси да бар. Кластердеги бардык машиналар бир калыпта жүктөлүшү жана тармак ашыкча жүктөлбөшү маанилүү. Келгиле, кырдаалды элестетип көрөлү: колдонуучунун трафиги кирген баланстоочуларга (haproxy, nginx ж. Тиркеме инфраструктурасынын ичинде талап кылынган интерфейсти ишке ашыруучу кызмат акыркы миля болуп саналат жана алгачкы суроо-талапка жооп берүү үчүн бир катар башка кызматтарды талап кылышы керек. Ички суроо-талаптар да маршрутташтыруу жана тең салмактуулукту талап кылат.
Берилиштер агымын натыйжалуу башкаруу үчүн, билдирүүлөр иштеп чыгуучуларга маршрутту башкаруу жана жүктөмдү балансташтыруу үчүн интерфейс менен камсыз кылышы керек. Мунун аркасында иштеп чыгуучулар микросервис үлгүлөрүн (агрегатор, прокси, чынжыр, филиал ж.

Бизнес көз карашынан алганда, масштабдуулук тобокелдиктерди башкаруу инструменттеринин бири болуп саналат. Негизгиси жабдууларды оптималдуу пайдалануу менен кардарлардын суроо-талаптарын канааттандыруу болуп саналат:

  • прогресстин натыйжасында жабдуулардын кубаттуулугу жогорулаганда. Ал кемчиликсиз программалык камсыздоодон улам бош болбойт. Erlang вертикалдуу жакшы таразалайт жана ар дайым бардык CPU өзөктөрүн жана жеткиликтүү эстутумун колдоно алат;
  • Булут чөйрөлөрүндө биз учурдагы же болжолдонгон жүккө жараша жабдуулардын көлөмүн башкара алабыз жана SLA кепилдик бере алабыз.

катага сабырдуулук

Келгиле, эки аксиоманы карап көрөлү: “Ийгиликтерге жол берилбейт” жана “Ийгиликтер дайыма болот”. Бизнес үчүн программалык камсыздоонун бузулушу акчаны жоготууну, андан да жаманы репутацияны жоготууну билдирет. Мүмкүн болгон жоготуулар менен катага чыдамдуу программалык камсыздоону иштеп чыгууга кеткен чыгымдардын ортосунда тең салмактуулукту сактоо менен, көп учурда компромисс табууга болот.

Кыска мөөнөттө, каталарга чыдамкайлыкты камтыган архитектура, кластердик чечимдерди сатып алууга акчаны үнөмдөйт. Алар кымбат жана аларда мүчүлүштүктөр да бар.
Узак мөөнөттүү келечекте катага чыдамдуу архитектура өнүгүүнүн бардык этаптарында өзүн көп эсе төлөйт.
Код базасынын ичиндеги билдирүүлөр иштеп чыгуу стадиясында системанын ичиндеги компоненттердин өз ара аракеттенүүсүн деталдуу иштеп чыгууга мүмкүндүк берет. Бул катачылыктарга жооп берүү жана башкаруу тапшырмасын жеңилдетет, анткени бардык критикалык компоненттер каталарды чечет жана натыйжада түзүлгөн система дизайн боюнча катачылыктан кийин кантип автоматтык түрдө калыбына келүүнү билет.

Жооптуулук

Мүчүлүштүктөргө карабастан, өтүнмө суроо-талаптарга жооп берип, SLAга жооп бериши керек. Чындыгында адамдар күткүсү келбейт, андыктан бизнес ошого жараша ыңгайлашуусу керек. Барган сайын көбүрөөк тиркемелер жогорку жооп берет деп күтүлүүдө.
Жооптуу колдонмолор дээрлик реалдуу убакытта иштейт. Erlang VM жумшак реалдуу убакыт режиминде иштейт. Биржа соодасы, медицина жана өнөр жай жабдууларын көзөмөлдөө сыяктуу кээ бир аймактар ​​үчүн реалдуу убакыт режими маанилүү.
Жооптуу системалар UX жакшыртат жана бизнеске пайда алып келет.

Алдын ала кыскача маалымат

Бул макаланы пландаштырып жатканда, мен билдирүү брокерин түзүү жана анын негизинде татаал системаларды куруу тажрыйбасы менен бөлүшкүм келди. Ал эми теориялык жана мотивациялык бөлүгү абдан кенен болуп чыкты.
Макаланын экинчи бөлүгүндө мен алмашуу пункттарын ишке ашыруунун нюанстары, билдирүүлөрдүн үлгүлөрү жана аларды колдонуу жөнүндө сүйлөшөм.
Үчүнчү бөлүктө биз кызматтарды уюштуруунун, маршруттарды түзүүнүн жана балансташтыруунун жалпы маселелерин карайбыз. Келгиле, масштабдуулуктун практикалык жагы жана системалардын катачылыкка чыдамдуулугу жөнүндө сүйлөшөлү.

Биринчи бөлүктүн аягы.

Сүрөт @lucabravo.

Source: www.habr.com

Комментарий кошуу