Εισαγωγή στην επικοινωνία Apache Kafka και μικροϋπηρεσιών

Όταν μιλάμε για μικροϋπηρεσίες, ένα από τα πρώτα πράγματα που έρχεται στο μυαλό είναι πώς να αλληλεπιδράσετε με όλα αυτά τα μικροσκοπικά API και τους εργαζόμενους μέσα στην αρχιτεκτονική του συστήματος. Για αυτήν τη συζήτηση έχουμε βασικά δύο είδη διυπηρεσιακής επικοινωνίας: σύγχρονη (αιτήσεις http / tcp) και ασύγχρονη. Αυτή η ανάρτηση στοχεύει να επικεντρωθεί στη δεύτερη επιλογή χρησιμοποιώντας το Apache Kafka ως μεσίτη μηνυμάτων μεταξύ των υπηρεσιών.

Χρήση θήκης

Ας υποθέσουμε ότι έχουμε ένα πολύ απλό σενάριο: μια υπηρεσία υπεύθυνη για τη δημιουργία νέων λογαριασμών σε ένα τραπεζικό σύστημα που πρέπει να επικοινωνήσει με μια άλλη υπηρεσία που είναι υπεύθυνη για την αποστολή email επιβεβαίωσης στον χρήστη, μετά τη δημιουργία.

Σε ένα μονολιθικό σύστημα θα είχαμε πιθανώς όλη αυτή τη λογική στην ίδια βάση κώδικα, με σύγχρονο τρόπο. Αλλά στον λαμπερό κόσμο των μικροϋπηρεσιών, έχουμε αποσυνδέσει αυτές τις ευθύνες σε δύο διαφορετικά έργα και τώρα πρέπει να ενημερώσουμε την υπηρεσία email ότι πρέπει να σταλεί ένα μήνυμα επιβεβαίωσης.

Λύση

Εδώ είναι το αίτημα για το υπέροχο Apache Kafka μας. Αλλά τι είναι πραγματικά η Κάφκα; Από τον ιστότοπό τους:

Το Kafka ™ χρησιμοποιείται για τη δημιουργία αγωγών δεδομένων σε πραγματικό χρόνο και για εφαρμογές ροής. Είναι οριζόντια επεκτάσιμο, ανεκτικό σε σφάλματα, κακό γρήγορα και λειτουργεί σε παραγωγή σε χιλιάδες εταιρείες.

Το Kafka είναι ιδανικό για πολλές περιπτώσεις χρήσης, κυρίως για παρακολούθηση δραστηριότητας ιστότοπου, συγκέντρωση αρχείων καταγραφής, λειτουργικές μετρήσεις, επεξεργασία ροής και, σε αυτήν την ανάρτηση, για ανταλλαγή μηνυμάτων.

Αυτή η πλατφόρμα μας παρέχει έναν κομψό τρόπο δημιουργίας ενός αγωγού δεδομένων όπου μπορούμε να συνδέσουμε τους παραγωγούς (Νέα υπηρεσία λογαριασμού) που θα δημιουργούν νέες εγγραφές στον αγωγό δεδομένων και τους καταναλωτές (Υπηρεσία ηλεκτρονικού ταχυδρομείου) που θα ακούνε νέες εγγραφές.

Εάν προέρχεστε από έναν κόσμο RDBMS μπορείτε να φανταστείτε ότι ένα θέμα είναι ένας πίνακας, ένας παραγωγός είναι κάποιος που θα εισάγει νέα δεδομένα σε αυτόν τον πίνακα και ο καταναλωτής είναι μια εφαρμογή που θα υποβάλλει ερώτηση στη βάση δεδομένων σας για να βρει νέες καταχωρήσεις.

Η κύρια διαφορά από την παραπάνω προσέγγιση είναι ότι όταν χρησιμοποιούμε μια λύση ουράς μηνυμάτων, δεν χρειάζεται να συνεχίσουμε να συγκεντρώνουμε κάποια βάση δεδομένων για να ελέγξουμε εάν έχουμε νέα δεδομένα, θα ακούμε πάντα κάποια συγκεκριμένα θέματα για να ενεργοποιήσουμε μια ενέργεια .

Ελέγξτε το φρικτό διάγραμμα παρακάτω που έκανα σε 5 δευτερόλεπτα για να δείξετε τι γράφω:

Εάν επισκεφθείτε τη σελίδα Apache Kafka, μπορείτε να βρείτε ένα πολύ χρήσιμο δείγμα για να λερώσετε τα χέρια σας και να προσομοιώσετε αυτήν τη ροή χρησιμοποιώντας μόνο το τερματικό σας. Είναι εύκολο και διασκεδαστικό.

συμπέρασμα

Υπάρχουν κάποιες άλλες πλατφόρμες που εργάζονται σε αυτό το είδος λύσης, όπως το ActiveMQ και το RabbitMQ, αλλά η Kafka φαίνεται να αποδίδει και να κλιμακώνει με καλύτερο τρόπο. Τέλος πάντων, κάθε έργο είναι μια διαφορετική ιστορία και πρέπει να αξιολογήσετε την πιο λογική επιλογή για την περίπτωσή σας :-)

Αυτό είναι ένα υψηλό επίπεδο / εισαγωγή στο Apache Kafka, αν θέλετε να σκάψετε λίγο πιο βαθιά σε αυτό το θέμα και να ανακαλύψετε τι άλλο μπορεί να κάνει η Kafka για εσάς (ροές, για παράδειγμα), ελέγξτε μερικές παραπομπές παρακάτω: