Το Apache Flink είναι ένα πλαίσιο επεξεργασίας ροής ανοιχτού κώδικα για την επεξεργασία απεριόριστων και περιορισμένων ροών δεδομένων. Στη λειτουργία του χρονικού παραθύρου του Flink, η σκανδάλη είναι μια πολύ σημαντική έννοια, η οποία καθορίζει πότε πρέπει να υπολογιστεί το παράθυρο και να βγουν τα αποτελέσματα. Οι ενεργοποιητές καθορίζουν τις συνθήκες για το πότε ένα παράθυρο είναι έτοιμο για επεξεργασία (δηλαδή όταν ενεργοποιούνται οι υπολογισμοί). τύπος παραθύρου
χρονικό παράθυρο(Time Windows): Windows που βασίζονται σε διαίρεση χρόνου, όπως παράθυρα κυλιόμενου χρόνου (Tumbling Time Windows) και συρόμενα παράθυρα χρόνου (Sliding Time Windows).
παράθυρο χρόνου εκδήλωσης(Windows Time Event): Ένα παράθυρο που βασίζεται σε χρονικές σημάνσεις συμβάντων, το οποίο μπορεί να χειριστεί δεδομένα εκτός σειράς.
Δώσει το έναυσμα για
Οι ενεργοποιητές χρησιμοποιούνται για τον καθορισμό των συνθηκών για το πότε ένα παράθυρο είναι έτοιμο για υπολογισμό. Το Flink παρέχει ορισμένους ενσωματωμένους κανόνες ενεργοποίησης και επιτρέπει στους χρήστες να προσαρμόζουν τους κανόνες ενεργοποίησης όπως απαιτείται.
Ενσωματωμένη σκανδάλη
ProcessingTimeTrigger: Έναυσμα που βασίζεται στο χρόνο επεξεργασίας που ενεργοποιείται κάθε φορά που επιτυγχάνεται το καθορισμένο χρονικό διάστημα.
EventTimeTrigger : Έναρξη με βάση την ώρα του συμβάντος, που ενεργοποιείται όταν φτάσει η ώρα λήξης του παραθύρου. Αυτό είναι κατάλληλο για την επεξεργασία παραγγελθέντων ή μη διατεταγμένων ροών δεδομένων χρόνου συμβάντων.
CountTrigger: Έναρξη με βάση τον αριθμό των στοιχείων, που ενεργοποιείται όταν ο αριθμός των στοιχείων στο παράθυρο φτάσει το καθορισμένο όριο.
Προσαρμοσμένη σκανδάλη
Οι χρήστες μπορούν να δημιουργήσουν προσαρμοσμένους κανόνες ετικέτας εφαρμόζοντας τη διεπαφή Trigger. Οι προσαρμοσμένοι κανόνες ενεργοποίησης μπορούν να αποφασίσουν πότε θα ενεργοποιήσουν υπολογισμούς παραθύρων με βάση πολύπλοκη λογική. Οι προσαρμοσμένοι κανόνες ετικέτας πρέπει συνήθως να εφαρμόζουν τις ακόλουθες μεθόδους:
oneElement(στοιχείο, χρονική σήμανση, παράθυρο, ctx): Καλείται όταν προστίθεται ένα στοιχείο στο παράθυρο.
onEventTime(time, window, ctx, out): Καλείται όταν φτάσει η ώρα συμβάντος του παραθύρου.
onProcessingTime(time, window, ctx, out): Καλείται όταν φτάσει η ώρα επεξεργασίας του παραθύρου.
onMerge(άλλο): Καλείται όταν συγχωνεύονται δύο παράθυρα (για παράδειγμα, χρησιμοποιούνται σε παράθυρα συνεδρίας).
canMerge(): Υποδεικνύει εάν η σκανδάλη υποστηρίζει τη συγχώνευση παραθύρων.
αποτέλεσμα
Η κύρια λειτουργία των ερεθισμάτων είναι να ελέγχουν τον υπολογισμό του χρονισμού των παραθύρων, καθιστώντας τις λειτουργίες παραθύρων του Flink πιο ευέλικτες και ισχυρές. Επιλέγοντας τους κατάλληλους κανόνες ενεργοποίησης, μπορείτε να βελτιστοποιήσετε την απόδοση και τη χρήση των πόρων των εφαρμογών επεξεργασίας ροής.
Παράδειγμα
Ακολουθεί ένα απλό παράδειγμα χρήσης παραθύρων και κανόνων Flink (υποθέτοντας ότι χρησιμοποιείται Java API):