Η διχοτομία δεδομένων: επανεξέταση της σχέσης μεταξύ δεδομένων και υπηρεσιών

Γεια σε όλους! Έχουμε υπέροχα νέα, το OTUS ξεκινά το μάθημα ξανά τον Ιούνιο "Αρχιτέκτονας λογισμικού", σε σχέση με το οποίο παραδοσιακά μοιραζόμαστε χρήσιμο υλικό μαζί σας.

Η διχοτομία δεδομένων: επανεξέταση της σχέσης μεταξύ δεδομένων και υπηρεσιών

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

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

Οι εταιρείες, για παράδειγμα, είναι μια συλλογή κατανεμημένων συστημάτων που συμβάλλουν συλλογικά στην επίτευξη κάποιου στόχου. Έχουμε αγνοήσει αυτό το γεγονός εδώ και δεκαετίες, προσπαθώντας να επιτύχουμε ενοποίηση μέσω FTP αρχείων ή χρησιμοποιώντας εργαλεία ενοποίησης επιχειρήσεων, ενώ εστιάζουμε στους δικούς μας απομονωμένους στόχους. Αλλά με την εμφάνιση των υπηρεσιών, όλα άλλαξαν. Οι υπηρεσίες μας βοήθησαν να κοιτάξουμε πέρα ​​από τον ορίζοντα και να δούμε έναν κόσμο αλληλοεξαρτώμενων προγραμμάτων που συνεργάζονται. Ωστόσο, για να δουλέψουμε με επιτυχία, είναι απαραίτητο να αναγνωρίσουμε και να σχεδιάσουμε δύο θεμελιωδώς διαφορετικούς κόσμους: τον εξωτερικό κόσμο, όπου ζούμε σε ένα οικοσύστημα πολλών άλλων υπηρεσιών, και τον προσωπικό, εσωτερικό μας κόσμο, όπου κυβερνάμε μόνοι μας.

Η διχοτομία δεδομένων: επανεξέταση της σχέσης μεταξύ δεδομένων και υπηρεσιών

Αυτός ο κατανεμημένος κόσμος είναι διαφορετικός από αυτόν στον οποίο μεγαλώσαμε και τον έχουμε συνηθίσει. Οι αρχές της κατασκευής της παραδοσιακής μονολιθικής αρχιτεκτονικής δεν αντέχουν σε κριτική. Έτσι, η σωστή απόκτηση αυτών των συστημάτων είναι κάτι περισσότερο από τη δημιουργία ενός δροσερού διαγράμματος λευκού πίνακα ή μιας δροσερής απόδειξης της ιδέας. Το θέμα είναι να διασφαλιστεί ότι ένα τέτοιο σύστημα λειτουργεί με επιτυχία για μεγάλο χρονικό διάστημα. Ευτυχώς, οι υπηρεσίες υπάρχουν εδώ και αρκετό καιρό, αν και φαίνονται διαφορετικές. Μαθήματα SOA εξακολουθούν να είναι επίκαιρες, ακόμη και με Docker, Kubernetes και ελαφρώς άθλια γένια hipster.

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

Η ενθυλάκωση δεν θα είναι πάντα φίλος σας

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

Η διχοτομία δεδομένων: επανεξέταση της σχέσης μεταξύ δεδομένων και υπηρεσιών

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

Η διχοτομία δεδομένων: επανεξέταση της σχέσης μεταξύ δεδομένων και υπηρεσιών

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

Η διχοτομία δεδομένων: επανεξέταση της σχέσης μεταξύ δεδομένων και υπηρεσιών

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

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

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

Διχοτομία δεδομένων

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

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

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

Η διχοτομία δεδομένων: επανεξέταση της σχέσης μεταξύ δεδομένων και υπηρεσιών

Και εδώ προκύπτει ένα δίλημμα. Αντίφαση. Διχοτόμηση. Σε τελική ανάλυση, τα συστήματα πληροφοριών αφορούν την παροχή δεδομένων και οι υπηρεσίες αφορούν την απόκρυψη.

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

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

Η διχοτομία δεδομένων: επανεξέταση της σχέσης μεταξύ δεδομένων και υπηρεσιών

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

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

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

Η διχοτομία δεδομένων: επανεξέταση της σχέσης μεταξύ δεδομένων και υπηρεσιών

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

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

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

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

Η διχοτομία δεδομένων: επανεξέταση της σχέσης μεταξύ δεδομένων και υπηρεσιών

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

Η διχοτομία δεδομένων: επανεξέταση της σχέσης μεταξύ δεδομένων και υπηρεσιών
Κύκλος αποτυχίας δεδομένων

Ροές: μια αποκεντρωμένη προσέγγιση δεδομένων και υπηρεσιών

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

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

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

Η διχοτομία δεδομένων: επανεξέταση της σχέσης μεταξύ δεδομένων και υπηρεσιών

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

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

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

Η διχοτομία δεδομένων: επανεξέταση της σχέσης μεταξύ δεδομένων και υπηρεσιών
Εξαλείψτε τη διχοτομία δεδομένων διαχωρίζοντας τη ροή αμετάβλητης κατάστασης. Στη συνέχεια, προσθέστε αυτήν τη λειτουργία σε κάθε υπηρεσία χρησιμοποιώντας την Stateful Stream Processing.

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

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

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

Έτσι, η προσέγγιση που συζητείται σήμερα έχει πολλά πλεονεκτήματα:

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

Όπως μπορείτε να δείτε, αυτό δεν είναι απλώς REST. Λάβαμε ένα σύνολο εργαλείων που σας επιτρέπουν να εργάζεστε με κοινόχρηστα δεδομένα με αποκεντρωμένο τρόπο.

Δεν καλύφθηκαν όλες οι πτυχές στο σημερινό άρθρο. Πρέπει ακόμα να καταλάβουμε πώς να ισορροπήσουμε μεταξύ του παραδείγματος αιτήματος-απόκρισης και του παραδείγματος που βασίζεται σε συμβάντα. Αλλά θα το αντιμετωπίσουμε την επόμενη φορά. Υπάρχουν θέματα που πρέπει να γνωρίσετε καλύτερα, για παράδειγμα, γιατί είναι τόσο καλή η Stateful Stream Processing. Θα μιλήσουμε για αυτό στο τρίτο άρθρο. Και υπάρχουν και άλλες ισχυρές κατασκευές τις οποίες μπορούμε να εκμεταλλευτούμε αν καταφύγουμε σε αυτές, για παράδειγμα, Ακριβώς μια φορά Επεξεργασία. Είναι μια αλλαγή παιχνιδιών για κατανεμημένα επιχειρηματικά συστήματα επειδή παρέχει εγγυήσεις συναλλαγών για XA σε κλιμακούμενη μορφή. Αυτό θα συζητηθεί στο τέταρτο άρθρο. Τέλος, θα χρειαστεί να εξετάσουμε τις λεπτομέρειες εφαρμογής αυτών των αρχών.

Η διχοτομία δεδομένων: επανεξέταση της σχέσης μεταξύ δεδομένων και υπηρεσιών

Αλλά προς το παρόν, απλώς θυμηθείτε αυτό: η διχοτόμηση των δεδομένων είναι μια δύναμη που αντιμετωπίζουμε κατά τη δημιουργία επιχειρηματικών υπηρεσιών. Και αυτό πρέπει να το θυμόμαστε. Το κόλπο είναι να ανατρέψετε τα πάντα και να αρχίσετε να αντιμετωπίζετε τα κοινά δεδομένα ως αντικείμενα πρώτης κατηγορίας. Η Stateful Stream Processing παρέχει έναν μοναδικό συμβιβασμό για αυτό. Αποφεύγει τα κεντρικά "Στοιχεία του Θεού" που εμποδίζουν την πρόοδο. Επιπλέον, διασφαλίζει την ευελιξία, την επεκτασιμότητα και την ανθεκτικότητα των αγωγών ροής δεδομένων και τα προσθέτει σε κάθε υπηρεσία. Επομένως, μπορούμε να επικεντρωθούμε στη γενική ροή της συνείδησης στην οποία μπορεί να συνδεθεί οποιαδήποτε υπηρεσία και να εργαστεί με τα δεδομένα της. Αυτό κάνει τις υπηρεσίες πιο επεκτάσιμες, εναλλάξιμες και αυτόνομες. Έτσι, όχι μόνο θα φαίνονται καλά στους λευκούς πίνακες και στις δοκιμές υποθέσεων, αλλά θα λειτουργούν και θα εξελίσσονται για δεκαετίες.

Μάθετε περισσότερα για το μάθημα.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο