Protokoły Communication usługa Broker
Service Broker używa protokół specyficznych brokera do komunikowania się ze zdalnym pośredników.Brokera zarządza połączeniami oddzielnie od normalnej puli połączeń klientów.Aby dwa SQL Server wystąpienia do wymiany Service Broker wiadomości, każde wystąpienie musi mieć możliwość wysłania ruchu TCP/IP do portu, który używa innego wystąpienia Service Broker komunikacji. Zgodnie z Konwencją, Service Broker często używa portu 4022 brokera do brokera komunikacji. Jednak dokładnie portu jest określony, po utworzeniu punktu końcowego.
Protokół warstwy
Service Broker Trwa warstwowego podejście do komunikacji.Każda warstwa opiera się na podstawowej warstwy, aby zapewnić niezawodne dostarczanie.Takie rozwiązanie pozwala aplikacjom działać bez wiedza na temat lokalizacji zdalnej usługa lub transport fizyczny, który brokera używa do komunikowania się.W większości przypadków te protokoły są niewidoczne dla aplikacji.Jednak opis poszczególnych warstw protokół odgrywa rolę może pomóc w rozwiązywaniu problemów z aplikacją.
Protokół najwyższego poziom, który korzysta z brokera jest okno dialogowe protokołu.Okno dialogowe Warstwa protokół obsługuje przesyłanie wiadomości niezawodnych i szeregowania.Okno dialogowe Warstwa protokół generuje sekwencję numerów dla wiadomości, generuje wiadomości potwierdzenia, dostarcza wiadomości do odpowiednich kolejek i fragmenty i reassembles wiadomości.Okno dialogowe protokół obsługi uwierzytelnianie i szyfrowanie dla okna dialogowego.
Używa protokołu okna dialogowego Protokół brokera sąsiadujących ze sobą do przesyłania wiadomości fragmentów.Protokół sąsiadujących ze sobą brokera obsługuje sieciowe transmisje wymieniane między dwoma wystąpieniami brokera.
Używa protokołu sąsiadujących ze sobą brokera Protokół transportu, takie jak TCP/IP, aby przenieść wiadomości brokera brokera.
Okno dialogowe protokół
Protokół okna dialogowego zarządza wzorzec dokładnie-tylko raz — w prawidłowej kolejności (EOIO) dostarczania dla wiadomości w konwersacji.Ten protokół nie opisano w formacie, Service Broker Używanie wiadomości w sieci. Zamiast tego protokół Określa logiczną czynności wymagane do niezawodnej konwersacji.Okno dialogowe protokół obsługuje zadań wymaganych dla niezawodne dostarczanie, łącznie z generowanie i przetwarzanie komunikatów potwierdzenia.
Po obu stronach konwersacji jest punktem końcowym w warstwie protokół oknach widoku wykazu sys.conversation_endpoints zawiera informacje dotyczące okna dialogowego punktów końcowych protokół.Punkt końcowy konwersacji istnieje dla okresu istnienia konwersacji.
Protokół Broker sąsiadujących ze sobą
W warstwie protokół brokera sąsiadujących ze sobą obsługuje mechanika komunikacji między dwoma SQL Server wystąpienia. Ta warstwa koduje każdego fragmentu wiadomości do standardowego formatu odpowiedniego do przesyłania za pośrednictwem sieci.Inaczej niż w oknie dialogowym Protokół warstwy w warstwie protokołu sąsiadujących ze sobą zna transportu sieciowego i odpowiednio formatuje fragmenty wiadomości.W efekcie warstwy protokół sąsiadujących ze sobą brokera zawiera warstwę abstrakcji między warstwą protokół okna dialogowego i warstw protokół transportu.
Każdy Service Broker połączenie sieciowe jest punktem końcowym w warstwie protokół sąsiadujących ze sobą. 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ół transportu
Warstwa protokół transportu obsługuje transmisję rzeczywistej sieci.Ta warstwa jest poza Service Broker. Na przykład wiadomości brokera, uruchomiony w innym wystąpieniu programu SQL Server za pomocą protokół TCP/IP w warstwie transportu protokół.
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 punkt końcowy, zobacz Jak Uaktywnianie usługa Broker Networking (języka Transact-SQL).
usługa Broker przetwarzania wiadomości
Service Broker używa dwie różne kategorie wiadomości.A szeregowania wiadomości jest wiadomość, która musi być dostarczana do aplikacji tylko raz w kolejności.An unsequenced message is a message that can be processed immediately, regardless of the sequence in which the message arrives.
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, utworzone przez aplikację.Każda wiadomość szeregowania ma numer sekwencyjny.wystąpienie, które pochodzi wiadomość tworzy numer kolejny komunikat i przypisuje numer porządkowy do wiadomości.Odbiorczy brokera wykorzystuje numer kolejny komunikat nakazać wiadomości daje do 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 oknie dialogowym z takim samym numerem sekwencji, okno dialogowe Warstwa protokół uzna wiadomości, jakby były zduplikowane 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.Zauważ, że Service Broker Tworzy unsequenced wiadomości w odpowiedzi na wiadomości przychodzące. Dlatego w przypadku utraty unsequenced wiadomości 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ących fragmentów w oryginalnej wiadomości.Dla małych wiadomości cała wiadomość znajduje się w jednym fragmencie.W przypadku dużych wiadomości Service Broker Tworzy wiele fragmentów.
Fragmenting wiadomości ma kilka zalet.Wysyłanie dużych wiadomości w niewielkich fragmentów zwiększa ogólną szybkość i niezawodność, podczas komunikowania się za pośrednictwem sieci stosunkowo powolne i zawodne, takich jak sieci Wide Area (WAN).W przypadku utraty fragment komunikatu w protokole ponownie wysyła tylko jeden fragment zamiast pełnej wiadomości.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 skrócenia czas oczekiwania małych wiadomości mają być przesyłane.
Gdy wiadomość jest są odbierane, częściowe wiadomość jest przechowywana w obiekt docelowy kolejki.Jeśli kolejka docelowa nie jest dostępne, są przechowywane w kolejce transmisji.Nie można odebrać wiadomości częściowe przez aplikację.The status kolumna for a partial message is zestaw to 2 (Disabled).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ć jednego lub kilku fragmentów wiadomości.Jeśli to możliwe potwierdzenie znajduje się w nagłówku wiadomości zwracane w jednej konwersacji.Jeśli wiadomości nie są gotowe do wysłania, Service Broker Zwraca komunikat potwierdzenia dedykowanego. Potwierdzenia wiadomości jest obsługiwane wyłącznie przez Service Broker; aplikacji korzystającej z Service Broker nie otrzyma wiadomości.
Nadawca zachowuje fragmenty komunikat, że odbiorcy nie zostało potwierdzone.Potwierdzenie nie zostanie odebrany w czasie oczekiwania przez system, nadawca wysyła fragmentu wiadomość ponownie.Jeśli potwierdzenia nie zostanie odebrany w czasie oczekiwania Service Broker wykładniczo zwiększa ilość czas przed następną próbą, aż do czas oczekiwania maksymalną. Czas początkowy oczekiwania na ponowną próbę wysłania jest kilka sekund.Czas oczekiwania maksymalna to około jednej minuty.Należy zauważyć, że czas oczekiwania nie jest przeznaczony do precyzyjnego; w zależności od ruchu w sieci i innych działań w SQL Server wystąpienie, fragmentu wiadomości nie może być ponowione przez kilka sekund, po przekroczeniu limitu czasu oczekiwania.
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 nie dostarczyć zduplikowanych wiadomości do kolejki.
Service Broker przy użyciu wiadomości potwierdzenia wiarygodnych wiadomości bez transakcji rozproszonych.Adresat wysyła potwierdzenie tylko po dodaniu wiadomości lub fragmentu wiadomości do kolejki.Nadawca przechowuje wiadomości w kolejce transmisji, dopóki nie nadejdzie potwierdzenia dla tej wiadomości.Chociaż nadawca i odbiorca nigdy nie udostępniaj transakcji, protokół gwarantuje, że nadawca nie powoduje usunięcia wiadomości z kolejki transmisji, aż adresat został pomyślnie odebrane wiadomości.
Sprawdzanie integralność wiadomości
Format, Service Broker używany do przesyłania wiadomości obejmuje sprawdzenie integralność wiadomości, aby ustalić, czy dany komunikat 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 obiekt docelowy dla wiadomości odszyfrowuje wiadomość, a następnie porównuje w podpisie wiadomości do nowego podpisu obliczone na rzeczywistą zawartość odebranych.Podpisy nie są zgodne, 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.The Broker:Corrupted Message zdarzenie class reports information when a message fails the message integralność check.
usługa Broker przenoszenia obiektów
A Service Broker transmisji obiekt jest obiektem w pamięci, która zarządza i zapisuje stan transmisji wiadomości dla okna dialogowego. Każdy punkt końcowy konwersacji ma jeden obiekt transmisji.
Okno dialogowe zażąda obiektu transmisji podczas jej wykonuje następujące czynności:
Wysyła wiadomość do kolejki transmisji.To jest następująca:
Wszystkie wiadomości wysłane do zdalnego wystąpienie Database Engine
Wiadomości z kolejki wysłanych 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.Przenoszenia obiektów są modyfikowane za każdym razem, Service Broker ma rejestrować zmiany w trakcie transmisji do okna dialogowego. Obiekty transmisji są około 1 KB.
Aby zwolnić pamięć, Service Broker okresowo zapisuje instancji obiektów transmisji nieaktywne w tempdb pracy tabel.Po pierwsze modyfikacji obiektu transmisji w pamięci jest oznaczony jako zanieczyszczony.Obiekt transmisji pozostaje oznaczony jako zanieczyszczony, dopóki go jest opróżniany z tabelą pracy.
Przesyłanie obiektów nie są używane do wysyłania lub odbierania wiadomości lokalne, które mogą być wstawiane bezpośrednio do obiekt docelowy kolejki.
Przepływ komunikacji sieciowej
Na poniższej ilustracji przedstawiono widok wysokiego poziom Service Broker komunikacja sieciowa między dwoma SQL Server wystąpienia.
Należy zauważyć, że konwersacji jest stałe połączenie logiczne.Rozmowy może występować w dowolnym okresie czas, a w tym okresie czas, do konwersacji można używać dowolną liczbę połączeń sieciowych.
Połączenia sieciowe występować między dwoma Service Broker punkty końcowe. Te połączenia za pomocą protokołu TCP/IP.Jeśli połączenie jest nieaktywny przez krótki czas SQL Server powoduje zamknięcie połączenia sieciowego.
Aby dostarczyć wiadomości, Service Broker przechowuje wiadomości w kolejce transmisji dla bazy danych, który wysłał wiadomość. Adresat dostarcza wiadomość bezpośrednio do kolejki w celu obiekt docelowy usługa.Jeśli kolejka ta jest wyłączona, wiadomość jest tymczasowo przechowywane w kolejce transmisji odbierający bazy danych.Usługa wysyłania do kolejki nie jest zaangażowany w operacji.Kolejki transmisji dla bazy danych, obsługującej usługa przyjęcia dotyczy tylko, jeśli kolejka docelowa jest wyłączona.