Билдирүү брокерлерин түшүнүү. ActiveMQ жана Kafka менен кабарлашуунун механикасын үйрөнүү. 1-бөлүм

Баарына салам!

Кичинекей китепти которо баштады:
«Билдирүү брокерлерин түшүнүү',
автор: Якуб Кораб, басып чыгаруучу: O'Reilly Media, Inc., жарыяланган датасы: июнь 2017, ISBN: 9781492049296.

Китептин кириш сөзүнөн:
"... Бул китеп эки популярдуу брокердик технологияларды: Apache ActiveMQ жана Apache Kafkaны салыштыруу жана карама-каршы коюу аркылуу брокердик билдирүү системалары жөнүндө кантип ойлонууну үйрөтөт. Бул колдонуу учурларын жана алардын иштеп чыгуучуларын системалар ортосундагы ортомчулук билдирүүнүн бир эле чөйрөсүнө такыр башка мамиле жасоого алып келген өнүктүрүү стимулдарын баяндайт. Биз бул технологияларды башынан баштап карап чыгабыз жана ар кандай дизайн тандоолорунун таасирин баса белгилейбиз. Сиз эки продуктту тең терең түшүнөсүз, аларды кантип колдонуу керек жана колдонулбашы керек жана келечекте башка билдирүү технологияларын карап жатканда эмнеге көңүл буруу керектиги жөнүндө түшүнүккө ээ болосуз. ... "

Буга чейин которулган бөлүктөр:
1-глава Киришүү
3-бөлүм. Кафка

Аяктаган бөлүмдөрү которулган сайын жарыялайм.

1-ГЛАВА

тааныштыруу

Системалар аралык билдирүүлөр ITтин эң аз түшүнүктүү багыттарынын бири болуп саналат. Иштеп чыгуучу же архитектор катары сиз ар кандай алкактар ​​жана маалымат базалары менен жакшы тааныш болушуңуз мүмкүн. Бирок, сизде брокерге негизделген билдирүү технологиялары кандайча иштээрин гана биле аласыз. Эгер ушундай сезимде болсоңуз, кабатыр болбоңуз, сиз жакшы мамиледесиз.

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

тааныш угулат?

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

Брокерлердин кантип иштээрин терең түшүнбөстөн, адамдар өздөрүнүн билдирүү системалары жөнүндө акылга сыярлык көрүнгөн дооматтарды айтышат, мисалы:

  • Система билдирүүлөрдү эч качан жоготпойт
  • Кабарлар ырааттуу иштетилет
  • Керектөөчүлөрдү кошуу системаны тезирээк кылат
  • Кабарлар бир гана жолу жеткирилет

Тилекке каршы, бул билдирүүлөрдүн айрымдары кээ бир жагдайларда гана колдонулуучу божомолдорго негизделген, ал эми башкалары жөн эле туура эмес.

Бул китеп эки таанымал брокердик технологияларды: Apache ActiveMQ жана Apache Kafka салыштыруу жана карама-каршы коюу аркылуу брокердик билдирүү системалары жөнүндө ой жүгүртүүнү үйрөтөт. Бул колдонуу учурларын жана алардын иштеп чыгуучуларын системалар ортосундагы ортомчулук билдирүүнүн бир эле чөйрөсүнө такыр башка мамиле жасоого алып келген өнүктүрүү стимулдарын баяндайт. Биз бул технологияларды башынан баштап карап чыгабыз жана ар кандай дизайн тандоолорунун таасирин баса белгилейбиз. Сиз эки продуктту тең терең түшүнөсүз, аларды кантип колдонуу керек жана колдонулбашы керек жана келечекте башка билдирүү технологияларын карап жатканда эмнеге көңүл буруу керектиги жөнүндө түшүнүккө ээ болосуз.

Баштоодон мурун, келгиле, негизги нерселерди карап көрөлү.

Кабарлашуу системасы деген эмне жана ал эмне үчүн керек

Эки тиркеме бири-бири менен баарлашуусу үчүн алар адегенде интерфейсти аныкташы керек. Бул интерфейстин аныктамасы HTTP, MQTT же SMTP сыяктуу транспортту же протоколду тандоону жана системалар алмаша турган билдирүү форматтарын сүйлөшүүнү камтыйт. Бул каттуу процесс болушу мүмкүн, мисалы, XML схемасын билдирүү үчүн пайдалуу жүктөө талаптарын аныктоо же формалдуу азыраак болушу мүмкүн, мисалы, HTTP сурамынын кээ бир бөлүгү кардар идентификаторун камтый турган эки иштеп чыгуучунун ортосундагы макулдашуу. .

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

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

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

Пункттан-Пойнтка

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

Бул билдирүү моделинин үлгүсү чекитке. Почта бул жерде пакет бөлүштүрүү механизминин милдетин аткарып, ар бир пакеттин бир жолу жеткирилишин камсыздайт. Почтаны пайдалануу посылка жөнөтүү актысын бандерольди жеткирүүдөн бөлүп турат.
Классикалык билдирүү системаларында чекиттен чекитке модели аркылуу ишке ашырылат кезек. Кезек бир же бир нече керектөөчүлөр жазыла турган FIFO (биринчи кирген, биринчи чыккан) буферинин милдетин аткарат. Ар бир билдирүү гана жеткирилет жазылган керектөөчүлөрдүн бири. Кезек күтүүлөр, адатта, керектөөчүлөр арасында калыс билдирүүлөрдү таратууга аракет кылышат. Бул билдирүүнү бир гана керектөөчү алат.

Кезектерге «узак» деген термин колдонулат. ишенимдүүлүк керектөөчү билдирүүлөрдү жеткирүү кезегине жазылганга чейин жигердүү абоненттер жок болгон учурда билдирүүлөрдү жөнөтүү тутуму билдирүүлөрдү сактап кала тургандыгына кепилдик берүүчү кызмат касиети.

Ишенимдүүлүк менен көбүнчө чаташтырышат туруктуулук жана эки термин бири-бирин алмаштырса да, алар ар кандай функцияларды аткарышат. Туруктуулук билдирүү аны кабыл алуу жана керектөөчүгө жөнөтүү ортосунда кандайдыр бир сактагычка билдирүү системасы тарабынан жазылганын аныктайт. Кезекке жөнөтүлгөн билдирүүлөр туруктуу болушу да мүмкүн эмес.
Почтадан чекитке билдирүү колдонуу учуру билдирүү боюнча бир аракетти талап кылганда колдонулат. Мисал катары эсепке акча каражаттарын салуу же жеткирүү тапшырмасын аткаруу кирет. Эмне үчүн билдирүү системасы өз алдынча бир жолку жеткирүүнү камсыз кыла албастыгын жана эмне үчүн кезектер эң жакшы дегенде жеткирүү кепилдигин бере аларын кийинчерээк талкуулайбыз. жок дегенде бир жолу.

Жарыялоочу-Абонент

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

Бул билдирүү моделинин үлгүсү жарыялоо-жазылуу. Конференциялык чалуу берүү механизми катары иштейт. Сүйлөшүп жаткан адам учурда канча адам чалуу болуп жатканына маани бербейт - система учурда байланышта болгон ар бир адам айтылгандарды угарын камсыздайт.
Классикалык билдирүү системаларында жарыялоо-жазылуу билдирүү модели аркылуу ишке ашырылат чокулары. Тема конференция механизми сыяктуу эле берүү ыкмасын камсыз кылат. Темага билдирүү жарыяланганда, ал таратылат бардык жазылган колдонуучулар үчүн.

Темалар адатта ишенимсиз (чыдамсыз). Конференц-байланышта эмне деп айтылып жатканын уга албаган угуучу сыяктуу, угуучу оффлайн режимине өткөндө, теманын жазылуучулары оффлайн режиминде жөнөтүлгөн бардык билдирүүлөрдү өткөрүп жиберишет. Ушул себептен улам, биз чокулары жеткирүү кепилдик берет деп айта алабыз. бир жолудан ашык эмес ар бир керектөөчү үчүн.

Жарыялоо-жазылуу билдирүүлөрү, адатта, билдирүүлөр маалыматтык мүнөзгө ээ болгондо жана бир билдирүүнү жоготуу өзгөчө мааниге ээ болбогондо колдонулат. Мисалы, тема секундасына бир жолу сенсорлор тобунан температуранын көрсөткүчтөрүн бере алат. Учурдагы температурага кызыккан жана темага жазылган система кабарды өткөрүп жиберсе тынчсызданбайт - жакында башкасы келет.

гибриддик моделдер

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

Колдонуу учурлары көбүнчө жарыялоо-жазылуу жана чекиттен чекитке билдирүү моделдеринин аралашмасын талап кылат, мисалы, бир нече системалар билдирүүнүн көчүрмөсүн талап кылганда жана кабардын жоголушуна жол бербөө үчүн ишенимдүүлүк менен туруктуулук талап кылынат.

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

Гибриддик моделдер жаңы эмес жана көпчүлүк кабарлашуу системаларына, анын ичинде ActiveMQ (темалар менен кезектерди бириктирген виртуалдык же курама багыттар аркылуу) жана Кафкага (кызыр түрдө, анын көздөгөн дизайнынын негизги менчиги катары) колдонулушу мүмкүн.

Эми бизде кээ бир негизги терминология жана билдирүү системасы эмне үчүн пайдалуу болорун түшүнгөнүбүздөн кийин, келгиле, майда-чүйдөсүнө чейин карайлы.

Котормо аткарылды: tele.gg/middle_java

Кийинки которулган бөлүк: 3-бөлүм. Кафка

Уландысы бар…

Source: www.habr.com

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