Protokołów komunikacyjnych Service Broker

Service Broker używa protokół specyficznych broker komunikować brokerów zdalnego.Brokera zarządza połączeniami oddzielnie od normalnej puli połączeń klient.Aby dwa SQL Server wystąpień wymiany Service Broker wiadomości, każde wystąpienie musi mieć możliwość wysyłania ruchu TCP/IP do portu używanego przez inne wystąpienie dla Service Broker komunikacji.Umownie Service Broker często używa portu 4022 broker-broker komunikacji.Jednak portu dokładnie określono podczas tworzenia punktu końcowego.

Protokół warstwy

Service Broker przyjmuje podejście warstwowe do komunikacji.Każda warstwa opiera się na odpowiedniej warstwy, aby zapewnić niezawodne dostarczanie.To podejście umożliwia aplikacji działa bez wiedza z lokalizacji zdalnej usługa lub transportu fizyczne, używanym do komunikacji brokera.W większości przypadków te protokoły są przezroczyste dla aplikacji.Jednak aby zrozumieć rolę odgrywa poszczególnych warstw protokół może pomóc w rozwiązywaniu problemów z aplikacją.

Protokół najwyższego poziom, który używa brokera jest okno dialogowe protokołu.Okno dialogowe Warstwa protokół obsługuje transmisję sukcesywnych, wiarygodnych wiadomości.Okno dialogowe Warstwa protokół generuje sekwencję numerów dla wiadomości, generuje wiadomości potwierdzenia, dostarcza wiadomości do odpowiednich kolejek i fragmenty i wyciąć wiadomości.Okno dialogowe protokół obsługi uwierzytelnianie i szyfrowanie dla okna dialogowego.

Używa protokół okno dialogowe protokół sąsiadujących brokera do przesyłania wiadomości fragmentów.Protokół sąsiadujących broker obsługuje sieciowe transmisje wymieniane między dwoma wystąpieniami broker.

Protokół sąsiadujących broker wykorzystuje protokołu transportowego, takie jak TCP/IP, przenoszenia wiadomości broker broker.

Okno dialogowe protokołu

Okno dialogowe protokół zarządza deseń dostawy (EOIO) dokładnie once w prawidłowej kolejności wiadomości w konwersacji.Niniejszy Protokół nie opisano format, Service Broker za pomocą wiadomości w sieci.Zamiast tego protokół określa logiczne kroki wymagane do wiarygodnych konwersacji.Okno dialogowe protokół obsługuje zadania wymagane dla niezawodne dostarczanie tym generowanie i przetwarzanie komunikatów potwierdzenia.

Każdej stronie konwersacji jest punktem końcowym w warstwie protokół okno dialogowe widoku wykazu sys.conversation_endpoints zawiera informacje dotyczące okna dialogowego punktów końcowych protokół.Punkt końcowy konwersacji istnieje okres istnienia konwersacji.

Protokół sąsiadujących Broker

Warstwa protokół sąsiadujących broker obsługuje mechanika komunikacji między dwoma SQL Server wystąpień.Ta warstwa koduje każdego fragmentu wiadomości na standardowy format odpowiedni dla transmisji w sieci.W przeciwieństwie do warstwy protokół okno dialogowe Warstwa protokół sąsiadujących zna sieci transportu i odpowiednio formatuje fragmenty wiadomości.W efekcie warstwy protokół sąsiadujących broker zawiera warstwy abstrakcji między protokół okno dialogowe i warstwy protokół transportu.

Każdy Service Broker połączenie sieciowe jest punktem końcowym w warstwie protokół sąsiadujących.The dynamic management view sys.dm_broker_connections shows information about Service Broker network connections.Service Broker maintains the network connection while messages are actively exchanged.Service Broker closes the network connection when no messages have been sent or received over the network connection for a short period of time.

Protokół transportowy

Warstwa transportu protokół obsługuje sieci transmisji.Ta warstwa jest poza Service Broker.Na przykład wiadomości do broker uruchomiony w innym wystąpienie z SQL Server korzystać z protokół TCP/IP jako warstwa protokół transportu.

Service Broker endpoints set options for the transport protocol.SQL Server does not contain Service Broker endpoints by default.Aby uzyskać więcej informacji na temat tworzenia Service Broker punktu końcowego, zobacz Jak Uaktywnianie Service Broker Networking (Transact-SQL).

Service BrokerPrzetwarzanie wiadomości

Service Broker używa dwóch różnych kategoriach wiadomości.A sukcesywnych wiadomości jest komunikat, który musi zostać dostarczony do aplikacji tylko raz w kolejności.Unsequenced komunikat jest wiadomości, które mogą być przetwarzane natychmiast, niezależnie od kolejności, w której wiadomość dociera.

Service Broker używa kolejny wiadomości dla wszystkich typów zdefiniowanych przez użytkownika wiadomości, wiadomości okno dialogowe koniec i komunikaty o błędach, utworzony przez aplikację.Każda wiadomość sukcesywnych ma numer sekwencji.Wystąpienie pochodzi wiadomość tworzy numer kolejny komunikat i przypisuje numer sekwencyjny do wiadomości.Broker odbiorczy używa numer kolejny komunikat Aby zamówić wiadomości zapewnia aplikacji.For a given dialog, the application always receives the message with the lowest sequence number first.Service Broker also uses the message sequence number to detect duplicate messages.Gdy okno dialogowe Warstwa protokół otrzymuje dwa komunikaty na tym samym dialog z tym samym numerem, okno dialogowe Warstwa protokół uznaje wiadomości na duplikaty i odrzuca jeden.

Service Broker uses unsequenced messages for dedicated acknowledgement messages and error messages created by Service Broker.Service Broker takes no special precautions to deliver an unsequenced message.Jednakże należy zauważyć, że Service Broker tworzy unsequenced wiadomości w odpowiedzi na wiadomości przychodzące.Dlatego jeśli unsequenced wiadomości zostaną utracone, nadawca będzie ponawiał oryginalnej wiadomości; Adresat generuje następnie kolejny komunikat unsequenced.

Fragmentacja wiadomości

Service Broker dzieli wiadomości wychodzących na fragmenty i łączy przychodzące fragmentów w oryginalnej wiadomości.Dla małych wiadomości cały komunikat jest zawarty w jeden fragment.Dla dużych wiadomości Service Broker tworzy wiele fragmentów.

Fragmenting wiadomości ma kilka zalet.Wysyłanie dużych wiadomości w małe fragmenty zwiększa ogólną szybkość i niezawodność, podczas komunikacji w sieciach stosunkowo powolne i zawodne, takich jak sieci rozległych (WAN).W przypadku utraty fragmentu wiadomości protokół wysyła tylko jeden fragment zamiast całą wiadomość.Fragmenting large messages can also reduce the time required for a small message to reach the destination.Service Broker can send a fragment that contains a complete small message between fragments of a large message.To spowalnia dużych wiadomości nieco w celu zmniejszenia czas oczekiwania małych wiadomości przekazywane.

Gdy wiadomość jest są przegrupowywane, częściowe wiadomość jest przechowywana w obiekt docelowy kolejki.Jeśli obiekt docelowy kolejki nie jest dostępny, są przechowywane w kolejce transmisji.Nie można odebrać częściowe wiadomości przez aplikację.Stanu kolumna częściowe wiadomości jest zestaw do 2 (wyłączone).Ta wartość jest używana także komunikaty odebrane w nieprawidłowej kolejności.

Wiadomość potwierdzenia

Service Broker potwierdza każdej wiadomości odebrane.Potwierdzenie może potwierdzić jeden lub kilka fragmentów wiadomości.Jeśli to możliwe potwierdzenie znajduje się w nagłówku wiadomości zwróconych na tej samej konwersacji.Jeśli żadne inne komunikaty są gotowe do wysłania, Service Broker zwraca komunikat potwierdzenia dedykowanego.Komunikat potwierdzenia odbywa się całkowicie przez Service Broker; Aplikacja używająca Service Broker nie otrzymywać tych wiadomości.

Nadawca zachowuje fragmenty wiadomości, które nie zostało potwierdzone odbiornika.Jeśli nie wysyła się potwierdzenia otrzymania w ramach oczekiwania przez system czas, nadawca wysyła ponownie komunikat fragmentu.Jeśli nie wysyła się potwierdzenia otrzymania w czasie oczekiwania Service Broker wykładniczo zwiększa czas przed następną próbą maksymalnie oczekiwania czasu.Czas początkowy oczekiwania na ponowienie próby jest kilka sekund.Maksymalny czas oczekiwania jest około jednej minuty.Należy zauważyć, że czas oczekiwania nie ma być dokładne; w zależności od ruchu w sieci i inne działania w SQL Server instancji fragmentu wiadomości może nie ponowiona kilka sekund po oczekiwania czas wygasa.

Jeśli potwierdzenie zostanie utracony lub opóźnione, adresat może się pojawić zduplikowane wiadomości.W takim przypadek odbiorca potwierdza otrzymanie wiadomości zduplikowane, ale dostarczaj zduplikowanych wiadomości do kolejki.

Service Broker stosuje komunikat potwierdzenia wiarygodnych wiadomości bez transakcji rozproszonych.Adresat wysyła potwierdzenie tylko po dodaniu fragmentu wiadomości lub wiadomości do kolejki.Nadawcy przechowuje wiadomości w kolejce transmisji, dopóki nie nadejdzie potwierdzenie dla tej wiadomości.Chociaż nadawca i adresat nigdy nie udostępniaj transakcji, protokół gwarantuje, że nadawca nie usuwa wiadomości z kolejki transmisji aż pomyślnie odebrania wiadomości przez adresata.

Sprawdzanie integralności wiadomości

Format, Service Broker używany do przesyłania wiadomości obejmuje sprawdzenie integralność wiadomości, aby ustalić, czy danej wiadomości został zmieniony lub uszkodzony podczas transportu.

The message integrity check is an MD5 signature for the contents of the message.SQL Server encrypts the signature with the session key for the message, and includes the signature in the message headers.

obiekt docelowy dla wiadomości odszyfrowuje wiadomość, a następnie porównuje w podpisie wiadomości do nowego podpisu obliczoną rzeczywistą zawartość odebrane.Jeśli podpisy nie pasują do siebie, wiadomość została uszkodzona lub zmieniona podczas przesyłania.The message fails the message integrity check.SQL Server discards the message and does not acknowledge the message to the sender.Broker: uszkodzony komunikat klasa zdarzenia raportuje informacje podczas sprawdzania integralność wiadomości awarii wiadomość.

Service Broker przenoszenia obiektów

A Service Broker transmisji obiekt jest obiektem w pamięci, który zarządza i rejestruje Państwo transmisji wiadomości dla okna dialogowego.Każdy punkt końcowy konwersacji ma jeden obiekt transmisji.

Okno dialogowe żąda obiektu transmisji wykonuje następujące czynności:

  • Wysyła wiadomość do kolejki transmisji.To obejmuje:

    • Wszystkie wiadomości wysłane do zdalnego wystąpienie Aparat baz danych

    • Wiadomości wysłane kolejek w lokalne wystąpienie, jeśli wiadomości nie można bezpośrednio wstawiać do obiekt docelowy kolejki

  • Odbiera wiadomości zdalnych lub wiadomości z kolejki lokalnej transmisji.

A transmission object is created the first time that a dialog requests one.Service Broker uses the same transmission object for subsequent requests from that dialog.Obiekty transmisji są zmodyfikowane co czas , Service Broker ma rejestrować zmiany w stanie transmisji dla okna dialogowego.Obiekty transmisji są około 1 KB.

Aby zwolnić pamięć, Service Broker okresowo zapisuje partie nieaktywny transmisji obiektów w tempdb pracy tabel. Gdy obiekt transmisji najpierw zmodyfikowany w pamięci jest oznaczony jako zanieczyszczony.Obiekt transmisji pozostaje oznaczony jako zanieczyszczony, dopóki jest opróżniany pracy tabela.

Obiekty transmisji nie są używane do wysyłania lub odbierania wiadomości lokalnych, które mogą być wstawiane bezpośrednio do obiekt docelowy kolejki.

Przepływ komunikacji sieciowej

Następująca ilustracja przedstawia wysokiej -poziom widoku Service Broker komunikacji sieciowej między dwoma SQL Server wystąpień.

Komunikacja w sieci brokera między dwoma wystąpieniami

Zauważ, że konwersacji jest trwałe połączenie logiczne.Konwersacja może wystąpić w jakimkolwiek okresie czasi w tym okresie czas, konwersacji można użyć dowolnej liczby połączeń sieciowych.

Połączenia sieciowe występować między dwoma Service Broker punkty końcowe.Za pomocą tych połączeń TCP/IP.Jeśli połączenie jest nieaktywny przez krótki czas, SQL Server zamyka połączenie sieciowe.

Dostarczyć wiadomości, Service Broker przechowuje wiadomości w kolejce transmisji dla bazy danych, które wysłane wiadomości.Adresat dostarcza wiadomość bezpośrednio do kolejki dla obiekt docelowy usługa.Jeśli kolejki jest wyłączona, wiadomości w kolejce transmisji odbierający bazy danych jest posiadane tymczasowo.Usługa wysyłania do kolejki nie jest zaangażowane w operację.Kolejki transmisji dla bazy danych, obsługującym usługa odbierający jest zaangażowanych jedynie, jeśli obiekt docelowy kolejki jest wyłączona.

Zobacz także

Koncepcje