Φτιάξε μια ουρά εργασιών που κλιμακώνεται καθαρά
Υπάρχει μια ουρά εργασιών στη βάση δεδομένων — πίνακας jobs με status pending για τις μη εκτελεσμένες γραμμές. Πέντε workers την κοιτούν ταυτόχρονα: ο καθένας θέλει να αρπάξει την παλαιότερη εργασία και να τη σημειώσει ως «σε εξέλιξη». Ένα συνηθισμένο lock επιπέδου γραμμής με ένα limit κάνει και τους πέντε workers να συσσωρεύονται στην ίδια γραμμή και να σειριοποιούνται. Η θεραπεία είναι να παρακάμπτεις τις γραμμές που είναι ήδη κλειδωμένες και να παίρνεις την επόμενη ελεύθερη: κάθε worker παίρνει τη δική του εργασία και ο παραλληλισμός λειτουργεί χωρίς συγκρούσεις.
Ο jobs(id SERIAL, status, payload) περιέχει τέσσερις pending γραμμές (a, b, c, d). Άρπαξε μία pending εργασία από το jobs με το μικρότερο id, γύρνα την σε running — οι άλλες τρεις παραμένουν pending.
Συνδεθείτε για να δείτε το ιστορικό υποβολών
ΣύνδεσηΣυνδεθείτε για να χρησιμοποιήσετε τον AI Mentor
Σύνδεση