Τι είναι το Traefik;
Το Traefik είναι ένας σύγχρονος αντίστροφος διακομιστής μεσολάβησης και εξισορρόπησης φορτίου επτά επιπέδων, με επίκεντρο μια βασική ιδέα — Service Discovery First.
Η μεγαλύτερη διαφορά από τους παραδοσιακούς αντίστροφους διακομιστές μεσολάβησης (όπως το Nginx) είναι ότι δεν χρειάζεται να γράψετε με μη αυτόματο τρόπο μεγάλο αριθμό αρχείων διαμόρφωσης. Το Traefik «παρατηρεί» προληπτικά το περιβάλλον χρόνου εκτέλεσης και δημιουργεί αυτόματα κανόνες δρομολόγησης.
Λόγω της δυνατότητας "υπηρεσία ως διαμόρφωση", το Traefik είναι ιδιαίτερα κατάλληλο για αυτά τα σενάρια:
- Docker / Docker Σύνθεση
- Kubernetes (Ελεγκτής εισόδου)
- Αρχιτεκτονική μικροϋπηρεσιών
- Διαδικτυακές υπηρεσίες για μικρές ομάδες ή ανεξάρτητους προγραμματιστές
Με απλά λόγια, εάν η υπηρεσία σας είναι «δυναμική», η Traefik είναι πολύ λιγότερο απροβλημάτιστη από τους παραδοσιακούς αντίστροφους πράκτορες.
Δείκτης αναφοράς
διάθεση
Θέλω να ευχαριστήσω τον exoscale.ch VincentBernat, ο οποίος παρείχε γενναιόδωρα την υποδομή που απαιτείται για τη συγκριτική αξιολόγηση.
Το δοκίμασα χρησιμοποιώντας 4 εικονικές μηχανές, διαμορφωμένες ως εξής:
32 GB μνήμης 8 πυρήνες CPU Μονάδα στερεάς κατάστασης 10 GB Ubuntu 14.04 LTS 64-bit
Εγκαθιδρύω
Μια εικονική μηχανή χρησιμοποιείται για την εκκίνηση του εργαλείου συγκριτικής αξιολόγησης wrk Μια εικονική μηχανή για Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Ποιος διαμορφώνει δύο εικονικές μηχανές για δύο διακομιστές υποστήριξης στο Go; Κάθε εικονική μηχανή έχει ρυθμιστεί χρησιμοποιώντας τους ακόλουθους περιορισμούς:
Nginx
Παρακάτω είναι η μέθοδος χρήσης για το αρχείο διαμόρφωσης Nginx /etc/nginx/nginx.conf:
Ακολουθούν τα αρχεία διαμόρφωσης εικονικής φιλοξενίας Nginx που χρησιμοποιούνται:
Τράεφικ
Τα ακόλουθα είναι τα αρχεία που χρησιμοποιούνται για το traefik.toml:
έκβαση Ουάμι:
wrk -t20 -c1000 -d60s -H "Κεντρικός υπολογιστής: test.traefik" --καθυστέρηση http://IP-whoami:80/bench Εκτέλεση δοκιμής 1m @ http://IP-whoami:80/bench 20 σπειρώματα και 1000 συνδέσεις Στατιστικά νήματος Μ.Ο. Stdev Max +/- Stdev Καθυστέρηση 70,28 ms 134,72 ms 1,91 δευτ. 89,94% Req/Sec 2.92k 742.42 8.78k 68.80% Κατανομή καθυστέρησης 50% 10,63 ms 75% 75,64 ms 90% 205,65 ms 99% 668,28 μ.μ. 3476705 αιτήματα σε 1.00m, 384.61MB ανάγνωση Σφάλματα υποδοχής: σύνδεση 0, ανάγνωση 0, εγγραφή 0, χρονικό όριο 103 Αιτήματα/δευτ.: 57894.35 Μεταφορά/δευτ.: 6.40MB Nginx:
wrk -t20 -c1000 -d60s -H "Κεντρικός υπολογιστής: test.traefik" --καθυστέρηση http://IP-nginx:8001/bench Εκτέλεση δοκιμής 1m @ http://IP-nginx:8001/bench 20 σπειρώματα και 1000 συνδέσεις Στατιστικά νήματος Μ.Ο. Stdev Max +/- Stdev Καθυστέρηση 101,25 ms 180,09 ms 1,99 δευτερόλεπτα 89,34% Req/Sec 1,69 χιλ. 567,69 9,39 χιλ. 72,62% Κατανομή καθυστέρησης 50% 15,46 ms 75% 129,11 ms 90% 302,44 ms 99% 846,59 ms 2018427 αιτήματα σε 1.00m, 298.36MB ανάγνωση Σφάλματα υποδοχής: σύνδεση 0, ανάγνωση 0, εγγραφή 0, χρονικό όριο 90 Αιτήματα/δευτ.: 33591.67 Μεταφορά/δευτ.: 4.97MB Τράεφικ
wrk -t20 -c1000 -d60s -H "Κεντρικός υπολογιστής: test.traefik" --καθυστέρηση http://IP-traefik:8000/bench Εκτέλεση δοκιμής 1m @ http://IP-traefik:8000/bench 20 σπειρώματα και 1000 συνδέσεις Στατιστικά νήματος Μ.Ο. Stdev Max +/- Stdev Καθυστέρηση 91,72 ms 150,43 ms 2,00 δευτερόλεπτα 90,50% Req/Sec 1,43 χιλ. 266,37 2,97 χιλ. 69,77% Κατανομή καθυστέρησης 50% 19,74 ms 75% 121,98 ms 90% 237,39 ms 99% 687,49 ms 1705073 αιτήματα σε 1.00m, 188.63MB ανάγνωση Σφάλματα υποδοχής: σύνδεση 0, ανάγνωση 0, εγγραφή 0, χρονικό όριο 7 Αιτήματα/δευτ.: 28392.44 Μεταφορά/δευτ.: 3.14MB
συμπέρασμα Η ταχύτητα του Traefik είναι σαφώς πιο αργή από αυτή του Nginx, αλλά το χάσμα δεν είναι τεράστιο: το Traefik χειρίζεται 28,392 αιτήματα ανά δευτερόλεπτο, ενώ το Nginx χειρίζεται 33,591 αιτήματα ανά δευτερόλεπτο, με αναλογία απόδοσης 85%. Για ένα νέο έργο, αυτό είναι πολύ καλό :)!
Μερικοί τομείς προς βελτίωση:
Χρήση GO_REUSEPORT οθονών
Κάθε πυρήνας CPU εκτελεί μια ξεχωριστή παρουσία διακομιστή GOMAXPROCS=1 (τα σημεία αναφοράς δείχνουν ότι το Traefik έχει πολύ περισσότερη εναλλαγή περιβάλλοντος από το nginx).
Αρχικός:Η σύνδεση με υπερσύνδεσμο είναι ορατή. |