Apache Flink on avoimen lähdekoodin virrankäsittelykehys rajoittamattomien ja rajattujen tietovirtojen käsittelyyn. Flinkin aikaikkunatoiminnassa triggeri on erittäin tärkeä käsite, joka määrittää milloin ikkuna tulee laskea ja tulokset tulostetaan. Liipaisimet määrittelevät ehdot, jolloin ikkuna on valmis käsiteltäväksi (eli kun laskelmat käynnistetään). ikkunan tyyppi
aikaikkuna(Time Windows): Aikajakoon perustuvat ikkunat, kuten rullaavat aikaikkunat (Tumbling Time Windows) ja liukuvat aikaikkunat (Sliding Time Windows).
tapahtuman aikaikkuna(Tapahtuman aikaikkunat): Tapahtuman aikaleimoihin perustuva ikkuna, joka pystyy käsittelemään epäjärjestyksessä olevia tietoja.
Laukaista
Liipaisimia käytetään määrittämään ehdot, jolloin ikkuna on valmis laskentaa varten. Flink tarjoaa joitain sisäänrakennettuja laukaisimia ja antaa käyttäjille mahdollisuuden mukauttaa laukaisimia tarpeen mukaan.
Sisäänrakennettu liipaisin
ProcessingTimeTrigger: Käsittelyaikaan perustuva laukaisu, joka käynnistyy aina, kun määritetty aikaväli saavutetaan.
EventTimeTrigger : Tapahtuma-aikaan perustuva laukaisu, joka laukeaa, kun ikkunan päättymisaika saavuttaa. Tämä sopii tilattujen tai tilaamattomien tapahtuma-aikaisten tietovirtojen käsittelyyn.
CountTrigger: Elementtien määrään perustuva liipaisin, joka laukeaa, kun ikkunan elementtien määrä saavuttaa määritetyn kynnyksen.
Mukautettu laukaisin
Käyttäjät voivat luoda mukautettuja triggereitä ottamalla käyttöön Trigger-käyttöliittymän. Mukautetut liipaisimet voivat päättää, milloin käynnistävät ikkunalaskelmat monimutkaisen logiikan perusteella. Mukautettujen triggereiden on yleensä otettava käyttöön seuraavat menetelmät:
onElement(elementti, aikaleima, ikkuna, ctx): Kutsutaan, kun elementti lisätään ikkunaan.
onEventTime(aika, ikkuna, ctx, ulos): Kutsutaan, kun ikkunan tapahtumaaika saapuu.
onProcessingTime(aika, ikkuna, ctx, ulos): Kutsutaan, kun ikkunan käsittelyaika saapuu.
onMerge(other): Kutsutaan, kun kaksi ikkunaa yhdistetään (käytetään esimerkiksi istuntoikkunoissa).
voi yhdistää(): Ilmaisee, tukeeko liipaisin ikkunoiden yhdistämistä.
vaikutus
Triggerien päätehtävä on ohjata ikkunoiden laskenta-ajoitusta, mikä tekee Flinkin ikkunatoiminnoista joustavampia ja tehokkaampia. Valitsemalla sopivat triggerit voit optimoida streaminkäsittelysovellustesi suorituskyvyn ja resurssien käytön.
Esimerkki
Tässä on yksinkertainen esimerkki Flink-ikkunoiden ja laukaisimien käyttämisestä (olettaen, että Java API on käytössä):