Jellyfin uzgadnia większość zmian między urządzeniami za pośrednictwem centralnego serwera, który wykrywa aktualizacje biblioteki, zapisuje współdzielony stan i udostępnia klientom wynikowy widok.
Telefon, telewizor, przeglądarka i tablet zazwyczaj nie uzgadniają bezpośrednio między sobą zawartości biblioteki multimediów. Łączą się z tym samym serwerem Jellyfin, który przechowuje zindeksowane metadane biblioteki oraz stan poszczególnych użytkowników, taki jak postęp oglądania. Wykrywanie zmian w systemie plików, aktualizacje odtwarzania i odświeżanie klientów to osobne etapy, które zbiegają się na jednym serwerze będącym źródłem prawdy. Dlatego urządzenia zwykle uzgadniają stan po zaakceptowaniu zmiany przez serwer i odświeżeniu każdego klienta.
Serwer jest współdzielonym źródłem prawdy, a nie poszczególni klienci
Klienci wyświetlają widoki biblioteki i wysyłają działania użytkownika, ale trwały, współdzielony katalog znajduje się na serwerze. Dzięki tej architekturze telewizor i telefon mogą wyświetlać ten sam element bez kopiowania całej bazy danych między urządzeniami. Każdy klient może buforować stan prezentacji, jednak źródłem prawdy dla zawartości biblioteki i postępu użytkownika pozostaje centralny serwer.
Serwer multimediów jest zazwyczaj źródłem prawdy zarówno w kwestii faktycznie dostępnych treści, jak i tego, co było odtwarzane przez jego lokalnych użytkowników. Przydatny model źródła prawdy traktuje serwer multimediów do odtwarzania jako odrębny od przenośnych systemów śledzenia. Ta sama zasada wyjaśnia działanie klientów Jellyfin: dążą one do zgodności ze stanem serwera, zamiast wybierać zwycięzcę spośród równorzędnych urządzeń.
Ten model upraszcza zarządzanie konfliktami, ponieważ istnieje jedno miejsce, w którym zaakceptowane zmiany stają się trwałe. Klient może tymczasowo wyświetlać nieaktualne dane z pamięci podręcznej, ale nie staje się drugą równorzędną bazą danych tylko dlatego, że nie został jeszcze odświeżony. Uzgadnianie oznacza przywrócenie widoku klienta do stanu zaakceptowanego przez serwer.
Zmiany w systemie plików stają się stanem biblioteki dzięki wykrywaniu po stronie serwera
Dodanie, zastąpienie, zmiana nazwy lub usunięcie pliku multimedialnego najpierw zmienia zawartość pamięci masowej, a nie katalog Jellyfin. Serwer musi wykryć to zdarzenie w systemie plików za pomocą skanowania, mechanizmu monitorowania lub sygnału automatyzacji, sprawdzić daną ścieżkę i zaktualizować jej zindeksowaną reprezentację. Dopiero po zapisaniu tej zmiany klienci mogą otrzymać nowy widok biblioteki.
Ukierunkowane narzędzia automatyzacji, takie jak ukierunkowane aktualizacje biblioteki, istnieją dlatego, że wykrywanie można uruchamiać precyzyjniej, zamiast czekać na szerokie, zaplanowane skanowanie. Zasada architektoniczna pozostaje jednak taka sama: zdarzenie dotyczące pliku staje się aktualizacją biblioteki po stronie serwera, zanim stanie się zmianą interfejsu widoczną na różnych urządzeniach.
W czasie wykrywania oddziela to stan pamięci masowej od stanu katalogu. Plik może istnieć na dysku, choć klienci nadal go nie widzą, albo zindeksowany element może jeszcze przez krótki czas pozostać, dopóki jego usunięcie nie zostanie przetworzone. Pomiar czasu od zmiany w systemie plików do aktualizacji indeksu serwera różni się więc od pomiaru szybkości odświeżenia klienta po wcześniejszym zapisaniu zmiany przez serwer.
Postęp odtwarzania wraca do tego samego stanu użytkownika po stronie serwera
Postęp oglądania podąża inną ścieżką niż wykrywanie zmian w systemie plików. Plik multimedialny nie zmienia się, gdy widz dociera do czterdziestej minuty; klient zgłasza stan odtwarzania powiązany z uwierzytelnionym użytkownikiem, a serwer zapisuje tę aktualizację dotyczącą konkretnego użytkownika. Inne urządzenie zalogowane na to samo konto może później odczytać współdzielony stan serwera i wznowić od zaakceptowanej pozycji.
Dlatego Jellyfin może synchronizować historię oglądania między urządzeniami w różnych klientach bez bezpośredniego kopiowania lokalnego pliku postępu między telewizorem a telefonem. Oba urządzenia osiągają zgodność, ponieważ odczytują i zapisują dane w tym samym rekordzie użytkownika na serwerze, a nie dlatego, że uzgadniają stan w modelu peer-to-peer.
Kluczową granicą jest moment zapisu. Jeśli urządzenie przejdzie w tryb offline, zanim jego aktualizacja postępu dotrze do serwera, inne urządzenie może prawidłowo wyświetlać starszą wartość zapisaną na serwerze. Po przywróceniu połączenia ostateczny wynik zależy od tego, którą aktualizację aplikacja zaakceptuje i w jakiej kolejności. Lokalnego postępu zapisanego offline nie należy mylić ze stanem już zatwierdzonym i współdzielonym.
Klienci uzgadniają stan, odświeżając dane z serwera, a nie łącząc się ze sobą
Po zapisaniu zmiany przez serwer klienci nadal potrzebują odświeżenia, zdarzenia, działania nawigacyjnego lub kolejnego żądania, które pobierze nowy stan. Telewizor może zachowywać w pamięci nieaktualną siatkę okładek, podczas gdy przeglądarka już wyświetla aktualizację. Takie tymczasowe rozbieżności dotyczą pamięci podręcznej prezentacji, chyba że sam serwer zawiera sprzeczne rekordy.
Różnorodność klientów uwidacznia to rozróżnienie, ponieważ różni klienci Jellyfin mogą prezentować ten sam serwer za pomocą odmiennych interfejsów i zachowań podczas odtwarzania. Jeśli jeden klient wygląda na nieaktualny, a inny działa prawidłowo, najpierw sprawdź stan serwera, a następnie odśwież lub połącz ponownie nieaktualnego klienta, zanim uznasz rozbieżność za konflikt bazy danych.
To rozróżnienie ma znaczenie podczas debugowania. Jeśli dwóch klientów wyświetla różne dane, najpierw odczytaj lub sprawdź stan serwera. Jeśli serwer ma oczekiwaną wartość, a tylko jeden klient jest nieaktualny, prawdopodobną przyczyną jest odświeżanie lub pamięć podręczna. Jeśli sam serwer nie zawiera aktualizacji, zbadaj wykrywanie zmian, uprawnienia lub zdarzenie zapisu, zanim obwinisz drugiego klienta.
Granica awarii: oddzielne serwery nie uzgadniają automatycznie swoich baz danych
Model centralnego źródła prawdy obowiązuje w obrębie jednej instancji serwera Jellyfin. Jeśli gospodarstwo domowe korzysta z dwóch niezależnych serwerów, każdy z nich może gromadzić własnych użytkowników, stan oglądania, zmiany metadanych i modyfikacje bazy biblioteki. Nie należy zakładać, że bazy te wykryją się wzajemnie i bezpiecznie połączą tylko dlatego, że wskazują podobne pliki multimedialne.
Narzędzia międzyserwerowe, takie jak jawna synchronizacja stanu oglądania, istnieją właśnie dlatego, że niezależne serwery multimediów potrzebują wyraźnie określonego mechanizmu uzgadniania współdzielonego postępu. Takie narzędzie może synchronizować zdefiniowany podzbiór danych; nie przekształca jednak dwóch kompletnych baz Jellyfin w przezroczysty klaster multi-master.
Ta sama granica dotyczy urządzeń offline. Klient może zachować nieaktualny widok lokalny, ale nie należy traktować go jako autorytatywnej bazy danych, którą trzeba ręcznie połączyć z Jellyfin. Gdy pojawia się wielu autorów zmian lub wiele serwerów, przed nazwaniem projektu „uzgodnionym” należy określić, który stan jest nadrzędny, które pola są synchronizowane i jak rozwiązywane są sprzeczne aktualizacje.
Wykonaj czteroetapowy test uzgadniania na dwóch urządzeniach
Użyj dwóch klientów zalogowanych na to samo konto testowe oraz jednego znanego elementu multimedialnego. Najpierw dodaj plik testowy lub zmień jego nazwę i zmierz czas wykrycia go przez serwer. Następnie potwierdź, że po odświeżeniu oba klienty otrzymują nowy stan katalogu. W trzecim kroku zmień postęp oglądania na kliencie A i sprawdź, czy klient B otrzymuje zaakceptowaną przez serwer wartość. Na koniec uruchom ponownie serwer i zweryfikuj, czy zapisany stan został zachowany.
Wewnętrzne wyjaśnienie spójności stanu przy równoczesnych zmianach przedstawia uzupełniającą granicę bazy danych: zaakceptowane zapisy wymagają reguł transakcyjności i kolejności, aby nakładające się działania nie ujawniały nieukończonych aktualizacji. Test między urządzeniami dodaje do tej gwarancji trwałego stanu pomiar czasu wykrywania i odświeżania klienta.
Test można uznać za zaliczony tylko wtedy, gdy po każdym kroku serwer staje się tym samym obserwowalnym źródłem prawdy: zmiany w pamięci masowej są indeksowane raz, oba klienty dochodzą do tego samego wyniku biblioteki, postęp użytkownika nie jest powielany ani tracony, a ponowne uruchomienie nie cofa zapisanej aktualizacji. Jeśli rozbieżność nadal występuje, ustal, czy problem pojawił się podczas wykrywania, zapisu na serwerze, odświeżania klienta czy na granicy oddzielnych serwerów.
FAQ
Czy klienci Jellyfin synchronizują się bezpośrednio między sobą?
Zazwyczaj nie. Telefon, telewizor, przeglądarka i tablet osiągają zgodność za pośrednictwem serwera Jellyfin: klienci wysyłają aktualizacje do serwera, a później odczytują jego stan. Traktowanie klientów jako równorzędnych replik sprawia, że zwykłe opóźnienia odświeżania wyglądają jak konflikty, które w rzeczywistości nie istnieją.
Dlaczego jeden klient Jellyfin może wyświetlać nieaktualne dane biblioteki?
Serwer mógł już zapisać zmianę biblioteki lub odtwarzania, podczas gdy jeden klient nadal wyświetla starszy widok z pamięci podręcznej. Potwierdź stan po stronie serwera za pomocą innego klienta lub interfejsu internetowego, a następnie odśwież albo połącz ponownie nieaktualnego klienta, zanim zaczniesz badać problemy z wykrywaniem lub bazą danych.
Czy dwa oddzielne serwery Jellyfin mogą automatycznie synchronizować postęp oglądania?
Oddzielne serwery Jellyfin nie tworzą automatycznie systemu stanu multi-master. Jeśli ten sam użytkownik ma przenosić historię oglądania między niezależnymi serwerami, użyj jawnego procesu synchronizacji z określonym źródłem prawdy i przetestuj zachowanie w przypadku konfliktów, zanim zaczniesz na nim polegać.
Centrum Technologii i Sztucznej Inteligencji
Więcej do przeczytania

Jak częstotliwość tworzenia kopii zapasowych wpływa na jakość punktu odtwarzania w Jellyfin?
Krótsze odstępy między kopiami zapasowymi mogą ograniczyć utratę stanu Jellyfin, ale jakość punktu odzyskiwania zależy również od spójności przechwytywania, historii przechowywania oraz przetestowanych procedur...

Gdzie przebiega bezpieczna granica aktualizacji Jellyfin i dlaczego ma znaczenie?
Bezpieczne aktualizacje Jellyfin zapewniają możliwość przywrócenia zgodności środowiska uruchomieniowego ze stanem trwałym, ponieważ cofnięcie obrazu nie cofa zmian schematu, danych ani wtyczek.

Co powoduje, że Jellyfin przechowuje więcej danych tymczasowych, niż oczekiwano?
Tymczasowe dane Jellyfin mają różnych właścicieli i różny cykl życia; określ zasady przechowywania na podstawie twórcy, wartości ponownego użycia oraz wyzwalacza czyszczenia, który powinien...

