Rozpatrywanie wniosków niedostępny w ten sposób jest to wspólny wzór, gdy masz do czynienia z dużą liczbą wniosków.
To, czy powinieneś, a może to zrobić, zależy od wielu czynników.
Głównym czynnikiem jest: czy Twoi rozmówcy muszą synchronicznie widzieć odpowiedź na ich zapytania?
Co mam na myśli, to czy osoba dzwoniąca musi natychmiast i z całą pewnością stwierdzić, czy baza danych poprawnie wykonała swoje dane w ramach odpowiedzi na połączenie? Jeśli tak, to przyjęcie przetwarzania żądania w trybie offline nie jest tak naprawdę opcją.
Jednakże, jeśli jest dopuszczalne, że dzwoniący mogą otrzymać odpowiedź, że ich żądanie zostanie przetworzone w trybie offline (i wszelkie wymagane odpowiedzi również wysłane w trybie offline), to korzystanie z kolejki z pewnością będzie korzystne dla ogólnej architektury.
Pierwszą rzeczą, która zostanie wykorzystana, są problemy z dostępnością front-end.
Jeśli przetwarzasz tysiące żądań przez krótki czas, a każde żądanie jest obsługiwane przez wątek, który następnie znika i wstawia dane do bazy danych, najprawdopodobniej natkniesz się na problem, w którym nie ma dostępnego wątku dyspozytora obsługa żądań przychodzących.
Jednak zmniejszając ilość zadań zaplecza, które wykonuje IIS (zapisywanie do lokalnej kolejki jest naprawdę tanie w stosunku do wywołania bazy danych), zmniejszasz także prawdopodobieństwo awarii opartej na dostępności.
Po drugie, używając kolejki, będziesz mieć możliwość dławienia ruchu z powrotem, ponieważ masz kontrolę nad przepustowością w przetwarzaniu zaplecza.
Na przykład można mieć proces jednowątkowego procesu czytnika kolejki, który usuwa kolejkowanie żądania i przetwarza je w bazę danych. Jeśli zauważysz, że masz wiadomości budowane w kolejce, możesz po prostu skalować usługę czytnika kolejek, udostępniając więcej jej instancji.
Co to oznacza, że zmniejszasz prawdopodobieństwo problemów z rywalizacją bazy danych, ponieważ masz większą kontrolę nad liczbą dostępów do wątków w bazie danych w tym samym czasie.
Tak więc, używając kolejkowania, użytkownik ma mniej awarii i ma niższe koszty zarządzania, które są cechą dobrze napisanych aplikacji. Jest to szczególnie ważne, gdy rozważasz hosting bazy danych na swoim serwerze internetowym!
Należy również zapoznać się z wzorcem architektonicznym o nazwie CQRS, którego jedną z głównych zasad jest wykonywanie zapisywania bazy danych w trybie offline.
Cracking answer Hugh, bardzo dziękuję za to. Potwierdziłem to, co podejrzewałem i wiele więcej! –
+ 1 dla wspaniałej analizy i objaśnień opcji. Dziękuję Ci bardzo. –