Πίνακας περιεχομένων

Εισαγωγή

Αυτή η σελίδα περιέχει όλες τις πληροφορίες που απαιτούνται για να συνεισφέρουν οι προγραμματιστές στην πλατφόρμα Hotmaps ή για να κατανοήσουν πώς λειτουργεί.

To Top

Ενσωμάτωση συνόλου δεδομένων

Η ενσωμάτωση νέων δημόσιων συνόλων δεδομένων αντιμετωπίζεται ως εξής:

  1. τα σύνολα δεδομένων πρέπει να προωθηθούν σε ένα αποθετήριο git ( Προσθήκη των συνόλων δεδομένων σας στο GitLab )
  2. κάθε βράδυ ένα σενάριο ενσωματώνει τα νέα / ενημερωμένα σύνολα δεδομένων στην πλατφόρμα DEV
  3. Αν όλα λειτουργούσαν καλά, το σύνολο δεδομένων είναι πλέον διαθέσιμο στην πλατφόρμα DEV και οι προγραμματιστές μπορούν να το ενσωματώσουν στον κώδικά τους
  4. Μόλις ολοκληρωθεί η κωδικοποίηση, τα νέα χαρακτηριστικά προστίθενται στην πλατφόρμα παραγωγής μέσω μιας νέας έκδοσης

Ενσωμάτωση δεδομένων

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

Ο πηγαίος κώδικας του σεναρίου ενοποίησης είναι διαθέσιμος σε αυτόν τον σύνδεσμο: Ενσωμάτωση δεδομένων

To Top

Προσθέστε τα σύνολα δεδομένων σας στο GitLab

Για να προσθέσετε σύνολα δεδομένων στη λίστα δημόσιων συνόλων δεδομένων, πρέπει να προωθηθούν σε ένα νέο αποθετήριο Git στο GitLab. Εδώ είναι ο οργανισμός GitLab όπου πρέπει να προωθηθούν σύνολα δεδομένων: Σύνολα δεδομένων στο GitLab .

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

Εδώ είναι η προδιαγραφή: Hotmaps_Data-upload-on-Gitlab_2017-12-04_V4.pdf

To Top

Κατάλογος κύριων αποθετηρίων

Ο κωδικός της εφαρμογής βρίσκεται στο GitHub κάτω από τον οργανισμό Hotmaps . Αυτός ο οργανισμός διαθέτει πολλά αποθετήρια

  • Το Hotmaps-toolbox-client περιέχει το frontend της εφαρμογής μας. Πρόκειται για ένα γωνιακό έργο (JavaScript)
  • Η υπηρεσία Hotmaps-toolbox-service περιέχει το API για την εφαρμογή μας. Βασίζεται στη φιάλη (Python)
  • το base-calculation-module είναι το βασικό πρότυπο που μπορείτε να χρησιμοποιήσετε για να δημιουργήσετε τις δικές σας μονάδες υπολογισμού για Hotmaps
  • μια λίστα ενοτήτων υπολογισμών

To Top

Πώς να συνεισφέρετε κώδικα

Εάν θέλετε να προσθέσετε κάποιο κωδικό στο Hotmaps έχετε δύο δυνατότητες: εάν θέλετε να ενημερώσετε απευθείας τη διεπαφή ή το backend, πρέπει να τροποποιήσετε το αποθετήριο πελάτη ή υπηρεσίας της εργαλειοθήκης. Εάν θέλετε να προσθέσετε τη δική σας μονάδα υπολογισμού, μπορείτε να δημιουργήσετε το δικό σας αποθετήριο ακολουθώντας το readme του αποθετηρίου base_calculation_module

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

Git_workflow

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

Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με τον τρόπο εργασίας σε αυτά τα έγγραφα:

To Top

Περιγραφή της υποδομής πληροφορικής

ReverseProxy_architecture_latest

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

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

  1. Reverse server proxy: χρησιμεύει ως μοναδικό σημείο εισόδου και διανέμει αιτήματα στις σωστές υπηρεσίες.
  2. Proxy-gen: είναι μια υπηρεσία που χαρτογραφεί αυτόματα όλες τις υπηρεσίες στον αντίστροφο διακομιστή μεσολάβησης. Επομένως, δεν είναι απαραίτητο να προσθέσετε χειροκίνητα μια νέα υπηρεσία στη διαμόρφωση διακομιστή μεσολάβησης
  3. lets-encrypt: είναι μια υπηρεσία που επιτρέπει τη χρήση του πρωτοκόλλου SSL. Είναι απαραίτητο για να ενεργοποιήσετε το πρωτόκολλο https. Τα πιστοποιητικά SSL υπογράφονται από μια διεύθυνση email που έχει διαμορφωθεί σε αυτήν την υπηρεσία.

Υπάρχουν τρία δίκτυα:

  • Το hotmaps_nginx επιτρέπει στον αντίστροφο διακομιστή μεσολάβησης να επικοινωνεί με το API, το frontend και το GeoServer. Επιτρέπει κυρίως τη διανομή ενός αιτήματος στη σωστή υπηρεσία μεταξύ των τριών.
  • Το hotmaps_backend επιτρέπει την επικοινωνία μεταξύ όλων των στοιχείων του backend: API, frontend, GeoServer και τη βάση δεδομένων PostgreSQL.
  • Το hotmaps_cm-net επιτρέπει την επικοινωνία μεταξύ κάθε μονάδας υπολογισμού και του API.

Κάθε μονάδα υπολογισμού έχει το δικό της κοντέινερ Docker.

To Top

Τρέξτε με το Docker

Hotmaps χρησιμοποιεί Docker λογισμικού και Docker-Σύνθεση εργαλείο για τη διαχείριση των εμπορευματοκιβωτίων. Ένα αρχείο docker-compose.yml περιέχει ολόκληρη τη διαμόρφωση της αρχιτεκτονικής Docker (διαμόρφωση κοντέινερ, δίκτυα, σύνδεσμοι, ...). Αυτό επιτρέπει την εκτέλεση κοντέινερ με μία απλή εντολή:

 docker-compose up

Υπάρχουν περισσότερα σχετικά με το docker-compose στον ιστότοπο του Docker: Σύνθεση αναφοράς γραμμής εντολών και Σύνθεση αναφοράς αρχείων .

Υπάρχει μόνο ένα κοντέινερ που εκτελείται ξεχωριστά από τα άλλα: είναι η βάση δεδομένων επειδή πρέπει να παραμείνει ενήμερη. Αυτός είναι ο λόγος για τον οποίο δεν βρίσκεται στο αρχείο διαμόρφωσης docker-compose.

To Top

Υποδομή διακομιστή

Υποδομή

Προς το παρόν, ο διακομιστής φιλοξενείται στο HES-SO στην Ελβετία. Υπάρχουν 2 διαθέσιμα μηχανήματα: ένα για ανάπτυξη (ανάπτυξη και δοκιμή) και ένα για παραγωγή (η πραγματική εργαλειοθήκη, διαθέσιμη στο www.hotmaps.eu ).

Και οι δύο μηχανές έχουν την ίδια προδιαγραφή:

  • CPU: Intel Xeon E5-2680 v4 (8) @ 2.4GHz)
  • RAM: 16 GB
  • HDD: 500 GB
  • Λειτουργικό σύστημα: Ubutnu 16.04 LTS

Εκτέλεση

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

Για παράδειγμα, παρακάτω είναι τα αποτελέσματα της πρώτης έκδοσης beta έναντι των μελλοντικών δοκιμών κυκλοφορίας. Η νέα έκδοση περιλαμβάνει ορισμένες βελτιώσεις απόδοσης.

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

Έκδοση beta του Μαρτίου 2019

| Σημ. Προσομοιωμένων χρηστών | Μέσος χρόνος | Διάμεσος | Μέγιστος χρόνος | Ελάχιστο χρόνο | Ποσοστό σφαλμάτων | | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 1 | 1042 | 1042 | 1042 | 1042 | 0 | | 20 | 3608 | 3858 | 4475 | 2156 | 0 | | 50 | 7337 | 7595 | 11791 | 1568 | 0 | | 100 | 13897 | 13644 | 24492 | 1875 | 0 | | 200 | 27135 | 26380 | 51967 | 3045 | 0 | | 300 | 41237 | 43083 | 73245 | 3223 | 10.67 |

Τελική κυκλοφορία (Αύγουστος 2020)

| Σημ. Προσομοιωμένων χρηστών | Μέσος χρόνος | Διάμεσος | Μέγιστος χρόνος | Ελάχιστο χρόνο | Ποσοστό σφαλμάτων | | --------------------- | ------------ | ------ | -------- | -------- | -------------------- | | 1 | 1025 | 970 | 1151 | 956 | 0 | | 20 | 1671 | 1732 | 2085 | 1113 | 0 | | 50 | 3527 | 3622 | 5593 | 982 | 0 | | 100 | 6648 | 6764 | 11854 | 1118 | 0 | | 200 | 12904 | 12801 | 24163 | 1192 | 0 | | 300 | 19521 | 19382 | 38116 | 1060 | 0 |

To Top

ΔΙΑΒΑΣΤΕ

Διαβάστε

To Top

Πώς να ορίσετε δείκτες

Ορισμός δείκτη

To Top

Πώς να παραθέσω

Daniel Hunacek, Lucien Zuber, Matthieu Dayer, στο Hotmaps Wiki, τμήμα προγραμματιστών (Σεπτέμβριος 2020)

To Top

Συγγραφείς και κριτικοί

Αυτή η σελίδα γράφτηκε από τους Daniel Hunacek, Lucien Zuber και Matthieu Dayer ( HES-SO ).

☑ Αυτή η σελίδα αξιολογήθηκε από τον Mostafa Fallahnejad ( EEG - TU Wien ).

To Top

Αδεια

Πνευματικά δικαιώματα © 2016-2020: Daniel Hunacek, Lucien Zuber και Matthieu Dayer

Creative Commons Attribution 4.0 Διεθνής άδεια

Αυτό το έργο έχει άδεια βάσει της διεθνούς άδειας Creative Commons CC BY 4.0.

SPDX-License-Identifier: CC-BY-4.0

Άδεια χρήσης-Κείμενο: https://spdx.org/licenses/CC-BY-4.0.html

To Top

Αναγνώριση

Θα θέλαμε να εκφράσουμε τη βαθύτατη εκτίμησή μας στο Σχέδιο Hotmaps «Ορίζοντας 2020 » (Συμφωνία επιχορήγησης αριθμός 723677), το οποίο παρείχε τη χρηματοδότηση για τη διεξαγωγή της παρούσας έρευνας

To Top

This page was automatically translated. View in another language:

English (original) Bulgarian* Czech* Danish* German* Spanish* Estonian* Finnish* French* Irish* Croatian* Hungarian* Italian* Lithuanian* Latvian* Maltese* Dutch* Polish* Portuguese (Portugal, Brazil)* Romanian* Slovak* Slovenian* Swedish*

* machine translated