Спонзорирано

Vert.x за реактивни апликации: значење, функции и придобивки

Спонзорирано од Symphony Solutions

во Совети, Софтвер, Спонзорирани

Кога обемот на работа расте реактивните апликации се скалабилни, но и издржливи кога ќе се појават проблеми. Ако апликацијата е скалабилна и издржлива тоа значи дека истата реагира. Vert.x е алатка што се користи за создавање реактивни апликации на JVM користејќи асинхрон и неблокирачки модел на извршување. Бидејќи се базира на Netty, која е рамка за мрежна апликација управувана од настани и асинхрона, Vert.x помага да се изградат реактивни апликации користејќи го концептот на јамки, што значи е имплементација на шаблон на Multi-Reactor. 

Пајплајнот на настани (EventBus) секогаш слуша кога има нови настани. Кога и да се појави нов настан, тој го испраќа до некој кој знае како да го управува. 

Vert.x архитектура

Сликата погоре ја покажува традиционалната апликација на шаблонот на Reactor извршен од една нишка; ја намалува истовременоста бидејќи шаблонот што гарантира дека нема управувачи се извршува истовремено. Сепак, тоа исто така покажува дека јамката не смее да биде блокирана од ниту еден управувач на настани бидејќи во спротивно може значително да ги намали перформансите на целиот систем. Vert.x овде го олеснува пристапот користејќи Multi-Reactor, што значи користење на повеќе јамки кои се извршуваат на одделни нишки и повторно гарантира дека нема истовремено да се извршуваат управувачи. Multi-Reactor користи повеќе јамки, што значи дека се потребни повеќе процесори за да се зголеми перформансот.

Друг случај е кога иако користиме повеќе јамки, на некои настани им е потребно повеќе време да бидат обработени. Во овој случај, Vert.x обезбедува користење на работни нишки за скапи извршувања.

Vert.x терминологија

Vert.x има дефинирани поими. Ајде да ги разгледаме најпознатите термини подолу:

Вертикул (Verticle)

Вертикул е дел од Vert.x архитектурата. Тоа е парче код кој може да се распореди во Vert.x и се извршува во една нишка. Може да се смета како контролер кој ракува со servlet барања, и сета комуникација се асинхроно се извршува со настани. 

Типови на Вертикул:

Стандардни вертикули (Standard Verticules):

Целиот код се извршува во истиот циклус на настани

Worker вертикули (Worker verticules):

Не е извршено во јамки, туку со помош на една нишка од Vert.x. од базенот на работни нишки. Не треба да ги блокираме јамките на долготрајните задачи за да може да користат нишка од Vert.x базенот на работни нишки и со тоа воопшто да не ги блокира рамките. Тие можат да бидат извршени од различни нишки во различно време.

Како да се распореди worker вертикул?

Треба да креирате објект од класата на DeploymentOptions и да го поставите точно неговиот worker. Конечно, опциите за распоредување мора да се користат при распоредување на вертикулот. Проверете го едноставниот пример подолу:

  • Vert.x Инстанца (Vert.x Instance)

Извршување на вертикул во една нишка на Vert.x инстанца, која е извршена во JVM инстанца. Ако има многу вертикули, тие ќе бидат паралелно извршени во истатата Vert.x инстанца. Плус, изводливо е да се направат повеќекратни случаи на Vert.x групирани со користење на пајплајн на настани (Event Bus). Тоа е како контејнер на вертикули и влезна станица за API.

  • Истовременост (Concurrency)
    Вертикулната инстанца секогаш ветува дека е извршена во истата нишка. Нема да се појави застој или трка.
  • Јамки (Event Loops)
    Vert.x инстанцата внимателно управува со бројот на нишки до бројот на јадра на процесорот.
  • Пајплајн на настани (Event Bus)
    Тоа е лесен систен на дистрибуирани пораки што се користи за комуникација од точка до точка, како и модел за објавување/претплати, барање/одговор.
  • Споделени податоци (Shared Data)

Предавањето и споделувањето податоци меѓу нишките е многу важен концепт во асинхроното програмирање. Vert.x ги овозможува и двете, синхрони и асинхрони функционалности за споделување податоци. Функцијата за споделување податоци им овозможува на корисниците да користат споделени податоци помеѓу различни вертикули за истата Vert.x инстанца или кластер од Vert.x инстанци.

Vert.x користи Shared Map за глобален пристап до податоци.

Функции на Vert.x

Ајде да погледнеме низ списокот на функции карактеристични за Vert.x што го прават избор на многу програмери. Кои се предностите од користењето на Vert.x? 

  • Ракување со истовременост и висока скалабилност
    Vert.x е лесна рамка управувана од настани и неблокирачка апликациска рамка која им овозможува на програмерите да се справат со голема истовременост на извршување користејќи мал број на кернел нишки (kernel threads), така што значително ја зголемува скалабилноста на апликацијата. 
  • Полиглот (Polyglot)
    Vert.x е сличен на Node.js, но е и полиглотски и реактивен на JVM. Поддржува повеќе јазици како Java, JavaScript, Apache Groovy, Ruby, Scala, Kotlin.
  • Aвтоматско откажување (Издржливост/Resilient)
    Ако не успее да се изврши Vert.x инстанца во кластерско опкружување, тој автоматски ќе се рестартира на друг јазол од кластерот.
  • Брзина

Начинот на кој Vert.x го решава проблемот е тоа што секоја работа на I/O ја става во редица. Бидејќи ставањето на новите задачи во редица не е особено тешка операција, Vert.x може да одработи стотици илјадници во една секунда. 

  • Екосистем
    Web API, база на податоци, преноси на настани, клауд, регистри, безбедност…Vert.x ве покрива со сеопфатен end-to-end reactive клиенти за модерни апликации.
  • Кластирање (Clustering)

Менаџерот за кластери е одговорен за откривање на јазли и споделување податоци во различни Vert.x инстанци.

За да користите кластер менаџер во Vert.x:

  • Документација
    Официјалната Vert.x документација е многу обемна, групирана по теми и со многу прирачници и примери на повеќе програмски јазици. Овие примери вообичаено се чуваат доста едноставно. Со ова, читателот е фокусиран на една одредена алатка, и исто така овозможува да се разгледуваат случаите на Vert.x еден по еден.
  • Лесна за користење

Многу е лесно да се интегрира Vert.x во вашиот проект и неговата основна библиотека. Може да се користи и во проект за Spring Book, па така можете да ја искористите функцијата за вбризгување зависност на рамката Spring во Vert.x проект. 

Репери за Vert.x и Spring Boot рамка

Следниве неколку примери се за употреба на Vert.x наспроти Spring Boot, кои илустрираат како функционираат двете рамки под различни услови со различни нивоа на истовременост.

Vert.x пример:

Spring Boot пример:

Vert.x тест 1Spring Boot тест 1
Ниво на истовременост: 10Потребно време за тестирање: 58.640 сек.Завршени барања: 1000000Барања во секунда: 17053.09 [#/сек]Време по барање: 103.471 [мс]Ниво на истовременост: 10Потребно време за тестирање: 205.175 сек.Завршени барања: 1000000Барања во секунда: 4873.89 [#/сек]Време по барање: : 2.052 [мс]

Како што може да видите на првиот тест, Vert.x е значително побрз во споредба со Spring Boot. Погледнете го процесорот и меморијата за време на тестот:

1. Употреба на процесорот и меморијата за Vert.x:

2. Употреба на процесорот и меморијата за Spring Boot:

И очекувано, Vert.x троши многу помалку процесор и меморија со текот на времето. Но, ова е само еден многу едноставен тест. Поинтересен е вториот:

Vert.x тест 2Spring Boot тест 2
Ниво на истовременост: 10Потребно време за тестирање: 103.471сек.Завршени барања: 10000Барања во секунда: 96.65 [#/сек]Време по барање: 103.471 [мс]Ниво на истовременост: 10Потребно време за тестирање: 106.633 сек.Завршени барања: 10000
Барања во секунда: 93.78 [#/сек]Време по барање: 106.633 [мс]
Ниво на истовременост: 100Потребно време за тестирање: 10.488 сек.Завршени барања: 10000Барања во секунда: 953.46 [#/сек]Време по барање: 104.881 [мс]Ниво на истовременост: 100Потребно време за тестирање: 11.779 сек.Завршени барања: 10000Барања во секунда: 848.99 [#/сек]Време по барање: 117.787 [мс]

Поради времето на чекање 100 мс во него, минималното време по барање е 100 мс во овој тест, така што тука е релевантно само дополнителното време. Со 10 истовремени барања, веќе можете да ја забележите малата предност на Vert.x, но со 100 истовремени барања, разликата е многу поочигледна. Повторно како што се очекуваше, Vert.x е значително побрз. Поради користењето помалку нишки, Vert.x со својот неблокирачки пристап работи многу побрзо од Spring Boot, што треба да создаде најмалку 100 паралелни нишки во овој пример.

Која е иднината на Vert.x проектот?

Vert.x има многу добра документација што го олеснува разбирањето на секој детал со помош на едноставни примери. Во моментов, тоа го прави добра опција за користење во смисла на леснотија на распоредување и супер перформанси како асинхрон сервер. Постои одлична заедница на соработници кои продолжуваат да ги решаваат проблемите и објавуваат нови функции на Vert.x. Поддржан е и од тимот на заедницата на Фондацијата Eclipse. Силната заедница која се појави околу Vert.x го олеснува откривањето на сите негови предности, без разлика дали е тоа преку проучување на документацијата или кој било туторијал или пак пример на Vert.x чии можности допрва треба да ги истражите.

Заклучок

Да заклучиме, Vert.x е одлична алатка ако сакате неблокирачка стратегија во архитектура управувана од настани. Работи со вертикули и обезбедува околина безбедна за нишки. Vert.x го олеснува пишувањето истовремени апликации кои скалираат без никаков напор од една машина од ниска класа до кластер со неколку сервери од висока класа. На ова, додадете го фактот дека можете да ги користите најпопуларните јазици за JVM и вашиот сон ќе стане реалност.

                                                             Оркан Мирзајев, Сениор Јава програмер

Оркан работи во Symphony Solutions од ноември, 2021 година. Пред тоа, бил дел од E-Gov Azerbaijan како Сениор Јава програмер. Оркан има 8 годишно искуство во анализа, дизајн, програмирање, тестирање, деплојмент на финансиски институции, проекти на интеграција, како и развој на апликација за ситеми за управување.

Оркан го завршил своето формално образование и се стекнал со диплома по математичко инженерство при Техничкот универзитет во Истанбул. Поседува и неколку професионални сертификати во Oracle.

Референци

Стани премиум член и доби пристап до сите содржини, специјален попуст на над 2.200 производи во ИТ маркет, верификуван профил и можност за огласување на ИТ Огласник. Плус ќе го поддржиш медиумот кој го градиме цели 16 години!

basic

членство

42 ден./мес

зачлени се

1337

членство

125 ден./мес

зачлени се
* плаќањето е на годишно ниво

Доколку веќе имаш премиум членство, најави се тука.

Напомена:

Ова е комерцијален ПР текст закупен од страна на Symphony Solutions . IT.mk не сноси никаква одговорност за текстот и неговата содржина. Доколку сте заинтересирани да објавите промотивен текст, испратете го на [email protected]
види ги сите огласи на kariera.it.mk