Ten przykładowy przykład to prywatna kolejka czytania. Mały interfejs webowy przechowuje linki i notatki. Codzienne zadanie sprawdza krótką listę dozwolonych kanałów, a cotygodniowe zadanie eksportuje podsumowanie czytania. To ćwiczenie planistyczne, a nie twierdzenie, że klient używa tej konfiguracji lub że VPS uruchamia te zadania za Ciebie.
Oddziel usługę od zadania
Proces webowy jest usługą: powinien być dostępny, gdy otworzysz narzędzie, w ramach wybranych przez Ciebie kontroli dostępu. Odświeżanie kanałów jest zadaniem: uruchamia się, przetwarza ograniczoną pracę, zapisuje swój wynik i kończy. Nieskończona pętla z długim uśpieniem może zaciemnić, czy ostatnie odświeżenie się powiodło i dlaczego rozpoczęło się kolejne uruchomienie.
Utrzymuj pierwszy zakres mały. Pobieraj tylko źródła, do których masz pozwolenie, respektuj ich limity szybkości i zachowuj własne notatki niezależnie od importowanej treści kanałów. Prywatne narzędzie może nie potrzebować żadnego publicznego nasłuchu webowego, jeśli uzyskujesz do niego dostęp przez ustalone prywatne połączenie. Jeśli publikujesz punkt końcowy webowy, wdróż uwierzytelnianie i przejrzyj ścieżkę DNS, sieci i HTTPS.
Zaplanuj jednoczesną pracę
Cichy dashboard nie pokazuje szczytowego użycia pamięci przez zadanie. Policz, co może się nakładać: system operacyjny, proces webowy, magazyn danych, przetwarzanie kanałów oraz eksport lub wdrożenie. Ładowanie wszystkich dokumentów naraz do pamięci tworzy inne wymaganie niż przetwarzanie jednej ograniczonej partii na raz.
Dla ilustracji załóż, że arkusz planistyczny pozwala na 250 MiB na pracę systemu, 200 MiB na narzędzie webowe i magazyn danych, 400 MiB na ograniczone odświeżanie oraz 400 MiB na nakładający się eksport lub wdrożenie. Suma 1,250 MiB to wymyślony przydział wyjaśniający decyzję, a nie przetestowany ślad. Zmierz rzeczywiste zadania; ich nakładanie się i pliki tymczasowe mają znaczenie tak samo jak ich stan bezczynności.
Przykładowa konfiguracja zaczyna się od Seed i dodaje 1 GB pamięci. Dlatego określa 1 vCPU, 2 GB RAM i 25 GB SSD przy miesięcznej sumie częściowej $8.50 USD. Porównaj rzeczywistą dostępną pamięć z arkuszem i zmniejsz rozmiar partii zadań, zanim założysz, że potrzeba więcej CPU. przewodnik po ostrzeżeniach o zasobach wyjaśnia odczyty.
| Okres usługi | Przed zapisaniem | Zapisano | Zapłać raz |
|---|---|---|---|
| 1 miesiąc | $8.50 | $0.00 (0%) | $8.50 USD |
| 3 miesięcy | $25.50 | $0.00 (0%) | $25.50 USD |
| 6 miesięcy | $51.00 | $14.28 (28%) | $36.72 USD |
| 12 miesięcy | $102.00 | $51.00 (50%) | $51.00 USD |
Te sumy obejmują wybraną opcję pamięci i używają tych samych rabatów cyklicznych co przy kasie. W tym przykładzie nie wybrano żadnej opcji kopii zapasowej katalogu. Trzymaj magazyn kopii zapasowych i inne koszty zewnętrzne w oddzielnym budżecie; okres usługi to decyzja o wydatkach, a nie obietnica, że narzędzie nie wymaga konserwacji.
Zdefiniuj harmonogram i regułę pominiętego uruchomienia
Zapisz zamierzoną strefę czasową obok harmonogramu. Zdecyduj, czy pominięte uruchomienie powinno zostać nadrobione po powrocie serwera i czy spóźniony wynik ma jeszcze wartość. Dla tej kolejki czytania pojedyncze bieżące odświeżenie może być bardziej przydatne niż odtwarzanie każdego pominiętego dziennego odświeżenia.
W systemd timer aktywuje usługę. Jeśli ta docelowa usługa jest nadal aktywna, timer pozostawia ją uruchomioną, zamiast tworzyć kolejną instancję. Timer kalendarzowy używający Persistent=true może wywołać nadrobienie po ponownej aktywacji po pominiętym zdarzeniu; nie tworzy osobnego wykonania dla każdego pominiętego interwału. Zobacz zasady zachowania i trwałości timera. przewodnik po zadaniach zaplanowanych zamienia te wybory w ograniczony przykład.
Kontroluj nakładanie się i zapewnij bezpieczeństwo powtórzeń
Nadaj zaplanowanemu odświeżaniu i każdemu ręcznemu odświeżaniu tę samą ścieżkę wykonania. Jeśli inny punkt wejścia może uruchomić skrypt bezpośrednio, wspólna blokada może koordynować te próby. Narzędzie takie jak flock obsługuje wyłączną blokadę i nieblokującą politykę niepowodzenia; wszyscy istotni piszący muszą współpracować, a zachowanie systemu plików ma znaczenie. Zobacz podręcznik blokady i ograniczenia systemu plików.
Wybierz jawny wynik dla zajętej blokady, na przykład zapisanie, że to odświeżenie zostało pominięte, ponieważ poprzednie nadal działało. Nigdy nie pozwól, aby operator pomylił to pominięcie z udanym pobraniem. Oddzielnie identyfikuj importowane elementy za pomocą stabilnego identyfikatora źródła, aby ponowna próba mogła rozpoznać już zapisaną pracę. Blokada dotyczy pracy jednoczesnej; logika aplikacji odporna na duplikaty dotyczy pracy powtórzonej później.
Ogranicz żądania zewnętrzne i próby ponowienia. Niedostępny kanał powinien pozostawić przydatny zapis błędu, zamiast wstrzymywać zadanie na zawsze. Gdy eksport tworzy plik, przygotuj nowy wynik oddzielnie i opublikuj go dopiero po walidacji, aby dashboard mógł nadal używać poprzedniego kompletnego eksportu, gdy uruchomienie się nie powiedzie.
Zapisz przydatny wynik
Zaplanowana godzina na liście nie jest dowodem, że odświeżenie zostało ukończone. Zapisz czas rozpoczęcia i zakończenia, wynik zakończenia, liczbę uwzględnionych elementów oraz znacznik czasu ostatniego udanego pobrania danych. W przypadku narzędzia osobistego mały widok stanu może pokazywać ten znacznik czasu bez ujawniania tokenów ani surowych prywatnych notatek.
Przetestuj normalne uruchomienie, niedostępne źródło, drugie wywołanie w trakcie pracy oraz powtórzenie tego samego wejścia. Sprawdź zarówno wynik procesu, jak i zapisany rezultat. Jeśli usługa internetowa zatrzyma się, gdy zadania są kontynuowane, użyj listy kontrolnej pierwszych wskazówek aby odróżnić problem aplikacji od zachowania harmonogramu.
Oddziel odzyskiwanie danych od czyszczenia
Nieodwracalne dane to zapisana kolejka, stan odczytu i osobiste notatki. Konfiguracja, definicje harmonogramu i identyfikator wydania są potrzebne do odbudowania narzędzia. Dzienniki pomagają w dochodzeniu; tymczasowe pobrane pliki i wymienne eksporty mogą mieć inne zasady przechowywania. Sklasyfikuj te ścieżki przed automatyzacją czyszczenia.
Ustaw ograniczoną politykę przechowywania dzienników i ukończonych eksportów, a następnie obserwuj wzrost przed włączeniem usuwania. Twórz kopie zapasowe danych trwałych metodą odpowiednią dla ich mechanizmu przechowywania. W restic wybór migawki i jawnego celu testowego uwidacznia intencję przywracania; domyślne przywracanie może nadpisać istniejące pliki, więc użyj osobnego pustego miejsca docelowego. Zobacz zachowanie celu przywracania i nadpisywania.
W kopii testowej pobierz znaną notatkę, potwierdź jej stan odczytu i wygeneruj eksport. Zachowaj procedurę i wynik. ćwiczeniem przywracania wyjaśnia, dlaczego integralność repozytorium i użyteczna aplikacja to oddzielne kontrole.
Skonfiguruj tylko to, co potrafisz wyjaśnić
Otwórz konfigurator Seed, przejrzyj istniejące wybory i dodaj 1 GB RAM, aby dopasować do tego przykładu. Wybierz okres świadomie; link nie stosuje opcji za Ciebie. Wybierz Malezję, Rumunię lub Szwajcarię dla serwera i potwierdź lokalizację kopii zapasowej oraz zakres usług przed poleganiem na konfiguracji.
Wybór nazwy hosta lub otrzymanie danych do płatności nie instaluje narzędzia ani nie planuje jego zadań. Po uzgodnieniu dostępu postępuj zgodnie z przewodnikiem pierwszego dostępu i buduj jedno obserwowalne zadanie na raz. Dodawaj złożoność, gdy obecny wynik powie Ci, dlaczego jest potrzebna.
Wykorzystana dokumentacja
Główne źródła dla tej strony. Sprawdź dokumentację wersji zainstalowanej we własnym środowisku.