Zalety Service Broker
Funkcje Service Broker zapewniają szereg znaczące korzyści dla aplikacji baz danych.Te funkcje i korzyści obejmują:
Integracja bazy danych zwiększa wydajność aplikacji i upraszcza administrację.
Porządkowanie wiadomości i koordynacji rozwoju uproszczone stosowanie
Sprzęg luzem aplikacji zapewnia elastyczność obciążenia.
Blokowanie wiadomości pokrewne zezwala na więcej niż jedno wystąpienie aplikacji w celu przetwarzania wiadomości z tej samej kolejki, bez wyraźnej synchronizacji.
Automatyczna aktywacja pozwala aplikacjom skalować objętość wiadomości.
Integracja z bazy danych
Service Broker zintegrowanego projektu zapewnia korzyści dla wydajności aplikacji i administracji.
Integracja z SQL Server umożliwia transakcyjnej obsługi wiadomości bez dodano koszty i złożoność koordynatora transakcja rozproszona zewnętrznych.Aplikacja odbiera wiadomości jeden lub więcej, przetwarza wiadomości lub wiadomości i wysyła komunikat odpowiedzi w jednej bazie danych transakcji.Jeśli transakcja ulegnie awarii, wszystkie prace wycofuje i odebrana wiadomość jest zwracana do kolejki tak tego innego może podejmowana przetworzenie.Żadne akcje uwzględnione dopiero aplikacji zatwierdza transakcję.Wniosek pozostaje w stanie spójnym.
Administracji jest łatwiejsze w przypadku danych, wiadomości i logiki aplikacji w bazie danych, ponieważ Administracja dla aplikacji (odzyskiwanie, bezpieczeństwo, kopia zapasowai tak dalej) stają się częścią rutynowych administracji bazy danych, a administrator nie trzeba zarządzać trzy lub cztery oddzielne składniki.
Z tradycyjnych systemów obsługi wiadomości magazyn wiadomości i bazy danych może być niespójny.Na przykład, gdy jeden składnik zostanie przywrócone z kopia zapasowa, inny składnik należy też przywrócić z kopia zapasowa, podjętych w tym samym czas, lub inne informacje w magazynie wiadomości nie pasuje informacji w bazie danych.Ponieważ Service Broker przechowuje wiadomości i danych w tej samej bazie danych, niespójność problem nie występuje.
Typowe środowisko projektowania jest również korzyści integracja bazy danych.Część obsługi aplikacji i część danych aplikacji mogą w ten sam SQL Server języków i narzędzi w aplikacji Service Broker, wykorzystując programisty znajomości bazy danych programowania techniki programowania opartego na wiadomości.Przechowywane procedury, które implementują usługa Broker usługa mogą być napisane w albo Transact-SQL lub jednej wspólnej language runtime (CLR) języków.Programy poza użycia bazy danych Transact-SQL oraz interfejsy, takich jak ADO programowania znanych bazy danych.NET.
Ponadto integracja bazy danych umożliwia automatyczne zasób zarządzania.Service Broker jest uruchamiany w kontekście SQL Server wystąpienie, więc Service Broker monitoruje wszystkie wiadomości gotowy przekazywanych z wszystkich baz danych w wystąpienie.Dzięki temu każda baza danych do utrzymania własnej kolejki pomagając Service Broker zarządzać obciążenie zasób przez cały SQL Server wystąpienie.
Zamawianie i koordynację wiadomości
W tradycyjnych systemów obsługi wiadomości aplikacja została odpowiedzialny za zamawiania i koordynowanie wiadomości przychodzące mogą poza kolejnością.Na przykład a aplikacja wysyła wiadomości 1, 2 i 3.B aplikacji odbiera i potwierdza wiadomości 1 i 3, ale wystąpi błąd z komunikatem 2.A aplikacji wysyła ponownie komunikat 2, ale teraz Odebrano wiadomość po wiadomości 1 i 3.W przeszłości deweloper musiały albo napisz aplikację tak, aby kolejność wiadomości nie znaczenia, inaczej tymczasowo w pamięci podręcznej wiadomości 3 aż do odebrania wiadomości 2, dzięki czemu aplikacja może przetworzyć wiadomości w odpowiedniej kolejności.Ani rozwiązanie jest bardzo proste lub proste.
Inny problem z tradycyjnymi systemami zostało zduplikowane dostawy.W poprzednim przykładzie Jeśli aplikacja b odbiera wiadomości 2, ale wiadomość potwierdzenia do aplikacji, A jest utracone, A aplikacja wyśle wiadomości 2, powodując b aplikacji do odbierania wiadomości 2 dwa razy.Kod aplikacji musiały być w stanie zidentyfikować i odrzucić duplikat albo ponownie przetwórz duplikat bez negatywnych skutków.Obydwa podejścia zostały ponownie, trudne do wykonania.
Koordynacja wiadomości została również tradycyjnie trudny problem obsługi.Na przykład, aplikacja może przedłożyć setki lub tysiące żądań usługa.Usługa przetwarza żądania równolegle i zwraca odpowiedź tak szybko, jak usługa zakończy przetwarzanie żądania.Ponieważ każde żądanie ma różne kwoty czas do przetwarzania, aplikacja odbiera odpowiedzi w innej kolejności od kolejności, w jakiej aplikacji wysłane wiadomości wychodzącej.Jednak aby poprawnie przetworzyć odpowiedzi, aplikacji należy skojarzyć poszczególne odpowiedzi poprawne wiadomości wychodzących.W tradycyjnych systemów obsługi wiadomości każda aplikacja zarządzane stowarzyszenia, które dodane do kosztów i złożoności opracowywania aplikacji.
Service Broker rozwiązuje te problemy poprzez obsługę wiadomości zamówienia, dostarczania i identyfikacja konwersacji automatycznie.Po ustanowieniu konwersację między dwoma punktami końcowymi broker usługa aplikacja otrzymuje każdej wiadomości tylko raz i w kolejności, w którym wiadomość została wysłana.Aplikacja przetwarza wiadomości tylko raz, aby, bez dodatkowego kodu.Wreszcie Service Broker automatycznie dołącza identyfikator każdej wiadomości.Aplikacja zawsze powiedzieć konwersacji, które należy określoną wiadomość do.
Luźne sprzęgu i elastyczność obciążenia
Service Broker zapewnia luzem sprzężenia między aplikacją inicjujący i aplikacji miejsce docelowe.Aplikację można wysyłać wiadomości w kolejce, a następnie kontynuuj z aplikacją przetwarzania, polegając na Service Broker, aby zapewnić, że komunikat dociera do obiekt docelowy.To luźne sprzęgu zapewnia elastyczność planowania.Inicjator można wysłać wiele wiadomości, a wiele usług miejsce docelowe można przetwarzać je równolegle.Każda usługa miejsce docelowe przetwarza wiadomości w jego własnym tempie w zależności od aktualnego obciążenia pracą.
Kolejkowanie pozwala także systemy dystrybucji, przetwarzanie bardziej równomiernie zmniejszając wydajność szczytowa wymagane przez serwer.Może to poprawić ogólną przepustowość i wydajność aplikacji bazy danych.Na przykład wiele aplikacji bazy danych ma eliminator w transakcjach w określonych porach dnia, zwiększenie zużycia zasób i spowalniając czasy odpowiedzi.Service Broker te aplikacje wymagają nie wykonywanie wszystkich przetwarzania transakcji biznesowych po przedłożeniu wniosku.Zamiast tego aplikacja używa Service Broker wysyłanie informacji o transakcji na aplikacje wykonujące przetwarzanie w tle.Te aplikacje przetwarzania transakcji niezawodnie w okresie czas, podczas gdy nadal odbiera nowych transakcji biznesowych aplikacji hasło główne.
Jeśli obiekt obiekt docelowy nie jest natychmiast dostępne, wiadomość pozostaje w kolejce transmisji wysyłanie bazy danych.Service Broker prób wiadomości, dopóki pomyślnie wysłany komunikat lub do momentu wygaśnięcia ważności konwersacji umożliwiające niezawodne konwersacji kontynuować między dwiema usługami, nawet jeśli jedna usługa jest chwilowo niedostępny w pewnym momencie podczas konwersacji.Wiadomości w kolejce transmisji są częścią bazy danych; Service Broker dostarcza wiadomość, nawet jeśli wystąpienie zostanie przejęta awaryjnie lub ponownym uruchomieniu.
Blokowanie wiadomości pokrewne
Jedną z najtrudniejszych czynności do wykonania w tradycyjnych aplikacji obsługi wiadomości było umożliwienie wielu programów do czytania równolegle z tej samej kolejki.W tradycyjnych systemów obsługi wiadomości wiadomości można uzyskać przetwarzane kolejności podczas czytania z tej samej kolejki wielu programów lub wielu wątków.Service Broker zapobiega to sytuacji wystąpienia poprzez blokowanie grupa konwersacji.
Należy wziąć pod uwagę tradycyjne kolejności przetwarzania aplikacji.A, komunikat zawierający instrukcje dotyczące tworzenia nagłówka zamówienia i b komunikat zawierający instrukcje dotyczące tworzenia pozycji w wierszu zamówienia, zarówno otrzymanych przez kolejkę.Jeśli oba te komunikaty są dequeued przez oddzielny wniosek wystąpienia i przetwarzane w tym samym czas, próba zatwierdzanie towaru wiersza zamówienia może zatwierdzić najpierw i nie działać, ponieważ kolejność jeszcze nie istnieje.Niepowodzenie z kolei powoduje transakcji wycofać i wiadomość do niepełniącego i ponownie przetwarzane marnowania zasobów.Tradycyjnie programiści rozwiązać ten problem poprzez łączenie informacji z wiadomości a i b wiadomości w pojedynczej wiadomości.To podejście jest proste dla dwóch komunikatów, podejście to skaluje słabo systemów, które dotyczą koordynacji dziesiątek lub setek wiadomości.
Service Broker rozwiązuje ten problem, kojarząc pokrewne konwersacji grupa konwersacji.Service Broker automatycznie blokuje wszystkie wiadomości w tej samej grupa konwersacji można tylko te wiadomości odbierane i przetwarzane przez wystąpienie jednej aplikacji.Tymczasem inne wystąpienia aplikacji można kontynuować usuwać z kolejki i przetwarza wiadomości w innych grupach konwersacji.Dzięki temu wiele wystąpień aplikacji równoległych działać niezawodnie i wydajnie, bez konieczności skomplikowane blokowania kodu w aplikacji.
Automatyczna aktywacja
Jednym z najbardziej przydatnych funkcji Service Broker jest aktywacja.Aktywacja umożliwia aplikacji dynamicznie przeskalować sam dopasować wielkość wiadomości przychodzące w kolejce.Service Broker zawiera funkcje umożliwiające programów uruchamianych wewnątrz bazy danych i programów uruchamianych poza bazą danych, aby wykorzystać aktywacja.Jednakże Service Broker nie wymaga, że aplikacja używa aktywacja.
Service Broker monitoruje aktywność w kolejce, aby ustalić, czy aplikacja odbiera wiadomości dla wszystkich konwersacji, w których wiadomości.Aktywacja Service Broker uruchamia czytnika nowej kolejki po pracy dla czytnika kolejki do wykonania.Aby określić po pracy dla czytnika kolejki, Service Broker monitoruje aktywność w kolejce.Gdy liczba czytniki kolejki dopasowuje ruch przychodzący, kolejki okresowo osiągnie stan, gdy kolejka jest pusta, albo wszystkie wiadomości w kolejce należą do konwersacji przetwarzanego przez inny obiekt odczytujący kolejki.Jeśli kolejka nie osiąga ten stan na okres czas, Service Broker uaktywnia inne wystąpienie aplikacji.
Aplikacje używają różnych aktywacja podejścia dla programów uruchamianych wewnątrz bazy danych i programów uruchamianych poza bazą danych.Dla programów w bazie danych Service Broker rozpoczyna kolejną kopię procedura składowana, określony przez kolejkę.Dla programów uruchamianych poza bazą danych Service Broker generuje zdarzenie aktywacja.Program monitoruje to zdarzenie, aby określić, kiedy jest potrzebny inny obiekt odczytujący kolejki.
Service Broker nie zatrzymuje program uruchomiony przez aktywacja.Natomiast aktywowanego aplikacje są zapisywane automatycznie zamknięty po pewnym okresie czas bez żadnego komunikatu przybywających do przyjęcia.Aplikacja zaprojektowane w ten sposób można zezwolić na liczbę wystąpień aplikacji powiększać i zmniejszać dynamicznie jako ruch do zmiany usługa.Ponadto jeśli zostaje system niedziałający lub jest ponowny rozruch, aplikacje są uruchamiane automatycznie do czytania wiadomości w kolejce, po ponownym uruchomieniu systemu.
To zachowanie braku tradycyjnych systemów obsługi wiadomości i często końca w górę posiadające jedną zbyt dużo lub za mało zasobów poświęcone określonej kolejki na dowolnym podane czas.
Zobacz także