Czy WhatsApp używa MQTT
Za kulisami aplikacji czatu
W użyciu jest wiele aplikacji czatowych, ale tylko kilka z nich wyróżnia się ze względu na cechy, które przyciągają użytkowników. Dwie najlepsze aplikacje na czacie są uważane za Facebook Messenger i WhatsApp. Chociaż firmy te są dyskretnie architektury swoich aplikacji, udało mi się znaleźć fragmenty informacji z artykułów i forów na blogach. Jest to ich skład, a fakty te mogą być przestarzałe, ponieważ wszystkie te aplikacje są często aktualizowane.
1. komunikator facebookowy
Messenger z Facebooka jest jedną z najpopularniejszych aplikacji na czat. Kilka lat temu Messenger nie był w najlepszej formie. Jego wydajność i wykorzystanie przestrzeni zaczęły pozostawać w tyle. Wysłannik używał modelu opartego na ciągnięciu. Za każdym razem, gdy aplikacja była doceniana z lekkim powiadomieniem o pchaniu o dostępności nowych wiadomości, a następnie aplikacja ciągnęła i otrzymywała ciężką odpowiedź JSON zawierającą widok rozmowy. Ale później Messenger został zaktualizowany, aby użyć modelu migawki opartej na push + delta.
Kluczowe punkty:
- Messenger miał problemy z wykorzystaniem wydajności i przestrzeni.
- Początkowo wykorzystał model oparty na pobieraniu do pobierania wiadomości.
- Później przełączył się na model migawki oparty na push + delta.
Pytania:
- Jakie były problemy z Messenger początkowo?
- Na jaki model przeszedł Messenger w celu pobierania wiadomości?
Odpowiedzi:
- Messenger miał problemy z wykorzystaniem wydajności i przestrzeni.
- Messenger przełączył się z modelu opartego na pullu na migawkę opartą na push + Delta.
2. WhatsApp
WhatsApp opiera się na stosie Lyme/Lyce.
W zakulisach WhatsApp jedną z najbardziej fascynujących i ważnych rzeczy jest backend napisany w Erlang. Erlang ma ogromny wkład w uczynienie WhatsApp jedną z najlepszych aplikacji do czatu na świecie.
„Dlaczego Erlang?”
Erlang jest ogólnym, równoczesnym, funkcjonalnym językiem programowania. Obszary, w których wiadomo, że Erlang jest przydatna, to obsługa wielu połączeń i komunikatów routingu, biorąc pod uwagę niektóre aspekty wiadomości. Ponieważ Erlang pokazuje świetną wydajność w tych scenariuszach, większość aplikacji związanych z telekomunikacją używa Erlang w swoich implementacjach.
Początkowa implementacja serwera WhatsApp została wykonana za pomocą Ejabberd, który jest open source JABBER/XMPP Serwer informacyjno-instantycznych napisany w Erlang. Protokół przesyłania wiadomości stosowany do implementacji to XMPP (rozszerzalny protokół wiadomości i obecności).
Kolejnym ważnym aspektem aplikacji czatu jest baza danych. Przez większość czasu baza danych może stać się wąskim gardłem w aplikacjach do przesyłania wiadomości w czasie rzeczywistym. WhatsApp używa mnesii, o której wiadomo, że jest to rozproszona komunikacja w czasie rzeczywistym. Jednym z ważnych aspektów mnesii jest to, że można ją ponownie skonfigurować w czasie wykonywania.
Chociaż WhatsApp jest uważany za dość prosty w porównaniu z usługami Messenger, takimi jak Facebook Messenger, jego projekt nie jest prosty. Poniższy schemat pokazuje bardzo abstrakcyjny widok architektury Whatsapp.
Automatyzacja domu oparta na WhatsApp: Protocol Mostkowanie z MQTT
W tym artykule będziemy kontrolować urządzenia, które nie obsługują WhatsApp, ale obsługują inne protokoły komunikacji, takie jak MQTT, TCP, IMAP itp. Jeśli dom jest zainstalowany z urządzeniami do automatyzacji domowej, które nie obsługują WhatsApp, będziemy komunikować się z tymi urządzeniami (kontrolerów) za pomocą protokołów obsługiwanych przez te urządzenia. W ten sposób będziemy mogli kontrolować urządzenia domowe podłączone do tych urządzeń.
Wymagane elementy:
- WhatsApp API oparte na Python – Yowsup
- Biblioteka MQTT – Paho
- Python Id
- Arduino Ide
Techniczne spostrzeżenia:
Mostkowanie protokołu może również kontrolować urządzenia, które nie obsługują interfejsu API WhatsApp. Oznacza to, że po prostu wyślemy dane z jednego protokołu do drugiego. W tym artykule pokazano most MQTT i WhatsApp do kontrolowania urządzeń.
Schemat blokowy:
Cała komunikacja będzie za pośrednictwem skryptu Pythona, który jest instalowany w systemie opartym na systemie Linux. Skrypt Python będzie miał bibliotekę API WhatsApp i MQTT do komunikowania się z obiema protokołami. Skrypt może wysyłać i odbierać wiadomości na WhatsApp i MQTT.
Pytania:
- Jakie są wymagane komponenty do automatyzacji domu opartego na WhatsApp z MQTT?
- Jaki jest cel mostkowania protokołu w automatyzacji domu?
Odpowiedzi:
- Wymagane komponenty do automatyzacji domowej opartej na WhatsApp z MQTT to WhatsApp API oparte na Python (YowsUp), MQTT Library (PAHO), Python ID i Arduino IDE.
- Mostkowanie protokołu umożliwia komunikację i kontrolę urządzeń, które nie obsługują interfejsu API WhatsApp poprzez wysyłanie danych z jednego protokołu (e.G., MQTT) do innego.
Czy WhatsApp używa MQTT
Po zakończeniu połączenia możemy wysyłać wiadomości za pomocą tego
publikować.singiel (temat, message_data, nazwa hosta =”pośrednik.Hivemq.com”)
Za kulisami aplikacji czatu
Jest wiele aplikacji czatu jest w użyciu. Ale tylko nieliczne z nich wyróżniają się ze względu na cechy, które przyciągają użytkowników. Dwie z tych najlepszych aplikacji do czatu są uważane za Facebook Messenger i WhatsApp. Chociaż firmy te są dyskretne w zakresie architektury swoich aplikacji, udało mi się znaleźć bity i informacje z artykułów i forów. Jest to ich skład i te fakty mogą być przestarzałe, ponieważ wszystkie te aplikacje są często aktualizowane.
1. komunikator facebookowy
Facebook’S Messenger to jedna z najpopularniejszych aplikacji do czatu. Kilka lat temu Messenger nie był’t na tym’S najlepszy kształt. To’S Performance and Space Używanie zaczęło się zaczepić. Wysłannik używał modelu opartego na ciągnięciu. Za każdym razem aplikacja była potwierdzona lekkim powiadomieniem o dostępności nowych wiadomości, a następnie aplikacja ciągnęła i otrzymywała ciężką odpowiedź JSON zawierającą widok rozmowy. Ale później Messenger został zaktualizowany, aby korzystać z migawki opartej na push + Delta Model.
MQTT jest protokołem łączności maszynowej (M2M). Został zaprojektowany jako niezwykle lekki transport publikowania/subskrypcji przesyłania wiadomości – MQTT.org
Kolejną interesującą zmianą, która została dokonana w infrastrukturze Messenger, jest przejście z JSON na Oszczędność. Ta poważna zmiana spowodowała zmniejszenie wielkości ładunku o 50%.
Nastąpiła znaczna poprawa również po stronie sekundy. Wcześniej każda wiadomość została napisana do tradycyjnego warstwy pamięci przed wysłaniem Messengera wyzwalacza w celu odczytania wiadomości z warstwy pamięci, która sprawiła, że skalowanie problematyczne. Ale proces został całkowicie zastąpiony przy użyciu uporządkowanej wdrożenia kolejki stworzonej przez samego Facebooka, nazywany “Irys”. Jedną z interesujących cech IRIS jest użycie wskazówek, które ułatwiają synchronizację wiadomości między Messenger a poziomem przechowywania. Poniższy obraz wyraźnie pokazuje, jak nastąpi synchronizacja wiadomości w Messenger
Wyżej opisana procedura była w stanie usunąć zależność dostarczania wiadomości od dostępności i prędkości pisania używanego poziomu pamięci. Iris przechowuje w nim wiadomości’S Mieć zapasowe, dopóki wszystkie komunikaty są prawidłowo zsynchronizowane.
Kolejnym interesującym faktem jest to, że magazyn podkładu IRIS został zbudowany za pomocą MySQL i Flash.
2. WhatsApp
WhatsApp opiera się na stosie Lyme/Lyce.
W zasięgu za kulisami WhatsApp jedna z najbardziej fascynujących i ważnych rzeczy jest backend napisany w Erlang. Erlang ma ogromny wkład w uczynienie WhatsApp jedną z najlepszych aplikacji na czacie na świecie.
Dlaczego Erlang ?
Erlang jest ogólnym, równoczesnym, funkcjonalnym językiem programowania. Obszary, w których znany jest Erlang
> Obsługa wielu połączeń
> Wiadomości routingowe, biorąc pod uwagę niektóre aspekty wiadomości
Ponieważ Erlang pokazuje świetną wydajność w danych scenariuszach, większość aplikacji związanych z telekomunikacją używa Erlang w swoich implementacjach.
Początkowa implementacja serwera WhatsApp została wykonana za pomocą Ejabberd. Który jest serwerem informacyjnym JABBER/XMPP, napisany w Erlang. Protokół przesyłania wiadomości, który stosowany do implementacji to XMPP (rozszerzalny protokół przesyłania wiadomości i obecności).
Kolejnym ważnym aspektem aplikacji czatu jest baza danych. Przez większość czasu baza danych może stać się wąskim gardłem w aplikacjach do przesyłania wiadomości w czasie rzeczywistym. WhatsApp używa mnesii, o której wiadomo, że jest rozproszoną dbmsem komunikacji w czasie rzeczywistym. Jednym z ważnych aspektów mnesii jest to, że można ją ponownie skonfigurować w czasie wykonywania.
Chociaż WhatsApp jest uważany za dość prosty w porównaniu z usługami Messenger, takimi jak Facebook Messenger, to’S Projekt ISn’T prosty. Poniższy schemat pokazuje bardzo abstrakcyjny widok architektury Whatsapp,
Automatyzacja domu oparta na WhatsApp: Protocol Mostkowanie z MQTT
W tym artykule będziemy kontrolować urządzenia, które nie obsługują WhatsApp, ale obsługują inne protokoły komunikacji, takie jak MQTT, TCP, IMAP itp. Jeśli dom jest zainstalowany z urządzeniami do automatyzacji domowej, które nie obsługują WhatsApp, będziemy komunikować się z tymi urządzeniami (kontrolerów) za pomocą protokołów obsługiwanych przez te urządzenia.
W ten sposób będziemy mogli kontrolować urządzenia domowe podłączone do tych urządzeń.
Wymagane komponenty
Wymagane narzędzia/ biblioteki
WhatsApp API oparte na Python-Yowsup
Biblioteka MQTT – Paho
Python Id
Arduino Ide
Techniczne spostrzeżenia
Mostkowanie protokołu może również kontrolować urządzenia, które nie obsługują API WhatsApp. Oznacza to, że po prostu wyślemy dane z jednego protokołu do drugiego. W tym artykule pokazano most MQTT i WhatsApp do kontrolowania urządzeń.
Schemat blokowy
Rysunek 1 Mostkowanie protokołu WhatsApp i MQTT
Cała komunikacja będzie za pośrednictwem skryptu Pythona, który jest zainstalowany w systemie opartym na systemie Linux. Skrypt Python będzie miał bibliotekę API WhatsApp i MQTT do komunikowania się z obiema protokołami.
Skrypt może wysyłać i odbierać wiadomości na WhatsApp i MQTT.
Mikrokontroler (ATMEGA 328P) jest podłączony do urządzeń domowych przez obwody przekaźnika. Do celów komunikacyjnych ESP jest podłączony do mikrokontrolera.
ESP jest instalowany z kodem, który odbiera wiadomości na określony temat i wysyła polecenia do mikrokontrolera za pośrednictwem szeregowego UART.
Tak więc, gdy każdy użytkownik wysyła wiadomości na WhatsApp, trafia do mikrokontrolera za pośrednictwem naszego skryptu Python.
Schemat obwodu
Ta płyta jest podłączona do przełącznika światła z obwodem przekaźnika. Możemy również zabrać tablicę Arduino UNO zamiast naszej dostosowanej tablicy 328.
Jak działa system
Gdy użytkownik wysyła wiadomość do naszego systemu Linux na WhatsApp, skrypt odczytuje wiadomość. Urządzenie IoT, które obsługuje protokół MQTT, słucha wiadomości na określony temat. Te wiadomości nakazują urządzenie, aby włączyć i wyłączać urządzenie.
Tak więc teraz wiadomości odczytane przez skrypt Python są skanowane pod kątem poleceń, jeśli znaleziono. Określone polecenia są wysyłane do urządzenia w protokole MQTT. Gdy urządzenie odczytuje te polecenia, działa na nich, obracając piny wysoko (włączone), niski (wyłączony)
Zrozumienie kodu źródłowego
Mamy dwa rodzaje kodu źródłowego, jeden dla Arduino + ESP, a drugi dla skryptu Pythona zainstalowanego w Linux.
Kod dla Arduino
Arduino jest zainstalowany z kodem, który odbiera dane dotyczące serialu. Kiedy odbierane jest określone strrowanie, jak “NA” Włączy szpilkę przekaźnikową (wysoko) i po otrzymaniu “WYŁĄCZONY” wyłącza przekaźnik.
if (rec == “NA”)
DigitalWrite (przekaźnik, wysoki);
Seryjny.wydrukować(“Przekaźnik jest włączony”);
REC = “”;
>
if (rec == “WYŁĄCZONY”)
DigitalWrite (przekaźnik, niski);
Seryjny.wydrukować(“Przekaźnik jest wyłączony”);
REC = “”;
>
Kod dla ESP
ESP jest powiązany z Arduino na porcie szeregowym, a także subskrybowany w temacie MQTT, aby odbierać z niego dane. Zasadniczo wysyła dane otrzymane w temacie MQTT do portu szeregowego i danych z serialu do tematu MQTT.
Aby dowiedzieć się więcej o ESP i MQTT, zapoznaj się z naszymi wcześniejszymi artykułami.
Kod skryptu Python
Skrypt Python jest zainstalowany z “Yowsup” API WhatsApp do czytania i wysyłania wiadomości z WhatsApp. W tym skrypcie są dwa pliki uruchomić.py I warstwa.py.
Zrozumienie uruchomienia pliku.py
Zadzwonimy do naszych bibliotek u góry pliku
z Yowsup.stosy importuj YowStackBuilder
z Yowsup.warstwy.Auth Import AutherRor
z Yowsup.Warstwy importują yowlayerevent
z Yowsup.warstwy.Importowanie sieci YowNetworkLayer
z Yowsup.Env Import Yowsupenv
Dołączymy również plik warstwy na górze, ponieważ klasa główna “Echolayer” istnieje w tym pliku.
z echolayer importowania warstwy
Możemy nazwać plik warstwy wszystko, ale musimy umieścić tę samą nazwę tutaj.
W środku py, Zadeklarujemy naszą główną zmienną hasła i zdarzeń, które chcemy wystąpić.
poświadczenia = (“91xxxxxxxxxx”, “HKHWVW5/WNR493HXK8NKL/HTPNO =”)
Teraz przekazujemy je do warstwy i budujemy stos. Również pętla, która utrzyma połączenie na żywo, jest wywoływana.
stos.setCredentials (poświadczenia)
stos.nadawanie (Yowlayerevent (YownetWorkLayer.Event_state_connect)) #Sending sygnału połączenia
stos.Loop () #This to program MainLoop
Zrozumienie warstwy plików.py
Ten plik zawiera bibliotekę protokołu dla MQTT i jest w stanie odbierać wiadomości z WhatsApp.
Rozumiejąc, w jaki sposób wiadomości są odbierane z WhatsApp
Ten plik zawiera klasę, która odbędzie dowolne wiadomości przychodzące do tego numeru, a to będzie jednostka zwrotna, dzięki czemu każda inna pętla może być uruchomiona w pliku.
@ProtocolentityCallback“wiadomość”)
def onmessage (self, messageProtocolety):
Jeśli prawda:
Dane dotyczące wiadomości i formularz numeru, z którego pojawiła się wiadomość, można uzyskać poniżej.
Inspirming_Message_Data = MessageProtocolety.getBody ()
To otrzyma ciało wiadomości, które jest prawdziwą wiadomością. Będzie przechowywać w zmiennej ciągu “Inspirming_message_data”
Inspirming_Message_Sender = MessageProtocolety.uzyskać od()
Ta linia będzie przechowywać przychodzący numer kontaktowy komunikatu w zmiennej ciągu “Inspirming_message_sender”
Zrozumienie warstw MQTT do wysyłania i odbierania
Po pierwsze, zaimportujemy biblioteki niezbędne dla MQTT.
Import Paho.MQTT.Klient jako MQTT
Import Paho.MQTT.publikuj jako publikację
Teraz zadeklarujemy zmienną o nazwie klienta z klientem MQTT.
klient = MQTT.Klient()
Teraz wykonamy dwa zwrotne funkcje 1. Do otrzymywania wiadomości, 2. Robienie czegoś na połączeniu z powodzeniem.
klient.on_connect = on_connect
klient.on_message = on_message
Na koniec połączymy się z brokerem MQTT na porcie i uruchomimy klienta w pętli bez blokady
klient.łączyć(“pośrednik.Hivemq.com”, 1883, 60)
klient.loop_start ()
Po zakończeniu połączenia możemy wysyłać wiadomości za pomocą tego
publikować.singiel (temat, message_data, nazwa hosta =”pośrednik.Hivemq.com”)
Gdy na WhatsApp jest odbierana jakaś wiadomość, jest przechowywana w ciągu, a następnie ten ciąg jest skanowany dla niektórych słów kluczowych, które definiują tę wiadomość jako polecenie włączenia/wyłączania światła.
elif (“włączone światła” In Incoming_Msg): #DO coś na meczu
Jeśli warunek jest dopasowany, wysyłamy polecenie sterowania do brokera MQTT.
publikować.pojedynczy(“TS/światło”, “NA”, nazwa hosta =”pośrednik.Hivemq.com”)
Po otrzymaniu nierozpoznanej wiadomości wiadomość na WhatsApp odpowiada, że jest to nieprawidłowe.
I w ten sposób możemy używać mostkowania protokołu do sterowania urządzeniami za pomocą WhatsApp.
Xanecs/Axiom
Ten zatwierdzenie nie należy do żadnego oddziału w tym repozytorium i może należeć do widelca poza repozytorium.
Przełącz gałęzie/tagi
Tagi gałęzi
Nie mogło załadować gałęzi
Nic do pokazania
Nie mogło załadować tagów
Nic do pokazania
Nazwa już używana
Tag już istnieje z podaną nazwą gałęzi. Wiele poleceń git akceptuje nazwy tagów i gałęzi, więc tworzenie tej gałęzi może powodować nieoczekiwane zachowanie. Czy na pewno chcesz utworzyć tę gałąź?
Anuluj Utwórz
- Lokalny
- Kodespaces
Https github cli
Użyj git lub kasy z SVN za pomocą adresu URL internetowego.
Pracuj szybko z naszym oficjalnym CLI. Dowiedz się więcej o CLI.
Rejestracja jest wymagana
Zaloguj się, aby korzystać z kodesprzeń.
Uruchamianie pulpitu Github
Jeśli nic się nie stanie, pobierz github komputer i spróbuj ponownie.
Uruchamianie pulpitu Github
Jeśli nic się nie stanie, pobierz github komputer i spróbuj ponownie.
Uruchamianie Xcode
Jeśli nic się nie stanie, pobierz Xcode i spróbuj ponownie.
Uruchamianie kodu Visual Studio
Twój kodespace otworzy się po gotowaniu.
Wystąpił problem z przygotowaniem kody.
Najnowsze zatwierdzenie
GIT Stats
Akta
Nie udało się załadować najnowszych informacji o zatwierdzeniu.
Najnowsza wiadomość o zatwierdzeniu
Popełnić czas
Readme.MD
Axiom to program Python, który łączy się z serwerem MQTT i zapewnia interfejs z usługą przesyłania wiadomości WhatsApp.
- Klon to repozytorium.
- Zainstaluj zależności
PIP Instaluj YowsUp2 Paho-Mqtt
- Edytuj Waserver/Config.py . Według CLI YowsUp2 mogą być wymagane poświadczenia. Spójrz tutaj.
- Uruchomić
Python Waserver/Waserver.py
- Utwórz Waserver/Config-Prod.py
- Wybuduj obraz z dostarczonym plikiem Docker . Oddzielne pliki konfiguracyjne pozwalają na różne konfiguracje deweloperów/produkcji.
Aby odbierać wiadomości Subskrybuj WhatsApp/Incoming . Wiadomość będzie wyglądać tak:
< "telefon": "4915112345678", "wiadomość": "Witam od człowieka!" >
Numer telefonu w tym przykładzie byłby zwykle pisany +49 151 12345678 . W przypadku wiadomości grupowych numer telefonu znajduje się w formularzu 4915112345678-1400000000 (numer telefonu twórcy grupy i znacznik czasu tworzenia UNIX).
Aby wysyłać wiadomości, publikuj na WhatsApp/wychodzący:
< "telefon": "4915112345678", "wiadomość": "Witam z bota!" >
Obecnie zaimplementowane jest tylko polecenie
Aby otrzymać informacje o grupie (członkowie, tytuł), publikuj na WhatsApp/CMD
< „CMD”: "grupa_info", "telefon": "4915112345678-1400000000", "oddzwonić": "Any_String_Here" >
Oddzwanianie zostanie użyte do identyfikacji odpowiedzi na to polecenie. Wskazane jest użycie do tego UUID. Odpowiedź zostanie opublikowana na temat WhatsApp/IQ:
< „CMD”: "grupa_info", "oddzwonić": "Any_String_Here", "Identyfikator grupy": "4915112345678-1400000000", "Uczestnicy": < „4915112345678”: "Admin", „4915187654321”: zero, >, "temat": "Przykładowa grupa" >
O
MQTT-Interface dla usługi przesyłania wiadomości WhatsApp
Jak WhatsApp w kolejce Twoje wiadomości?
Elo, kolego! To’będzie prawie dwa lata pandemii za kilka miesięcy i sposób, w jaki dostosowaliśmy nasz styl życia, och, chłopcze! Wszyscy pozostaliśmy w kontakcie, a nawet wykonaliśmy naszą pracę przy użyciu różnych platform przesyłania wiadomości. Wykorzystanie wielu platform, w tym WhatsApp, Instagram i Facebook, znacznie wzrosło. WhatsApp był ten z najwyższym użyciem, a w Indiach WhatsApp’Największy rynek w tym roku! Ale czy wiesz, że WhatsApp używa jednej z bardzo podstawowych struktur danych, kolejki, która jest używana przez tę platformę przesyłania wiadomości do pomyślnego dostarczania wiadomości?
Co to jest kolejka?
Kolejka, jak wskazuje nazwa, jest dokładnie taka jak ta w prawdziwym życiu. Kolejka ma dwa końce, głowę i ogon, a elementy są dodawane tylko na końcu ogona i usuwane z końca. Wyobraź sobie grupę ludzi czekających w kolejce, by zdobyć pizzę, a pierwszą osobę, która tam dotarła, ja.mi., Pierwszy w linii, miałby preferencje i byłby tym, który otrzymałby pizzę lub być “wypchnięty.” Ta koncepcja technicznie jest znana jako FIFO lub pierwsza w pierwszym wyjściu.
Co to jest kolejka wiadomości?
Jak wskazuje tytuł, kolejka wiadomości to kolejka pełna wiadomości. Ta usługa asynchroniczna służy do przesyłania wiadomości lub danych między dwiema osobami lub grupą osób. Osobą, która wysyła wiadomość do kolejki, jest producent, a ta, która otrzymuje wiadomość, jest konsument. Z kolejki’S Punkt widzenia, wiadomość to tylko zbiór bajtów i może być czymkolwiek z normalnej wiadomości tekstowej lub wiadomości zawierającej klient’S ID ZALEJEMU lub nawet komunikat o błędzie.
- W systemie kolejki wiadomości istnieje wiele serwerów znanych jako brokerzy. Ci brokerzy są bardzo niezawodni i skalowalni i tworzą klaster. Po wyprodukowaniu lub wysyłaniu wiadomości ze strony producenta wiadomość jest przechowywana w kolejce wiadomości, dopóki konsument będzie dostępny, aby przyjmować wiadomości.
- Gdy konsument lub odbiorca będzie dostępny do przekazania wiadomości, kolejka przekazuje komunikat do konsumenta i czeka, aż konsument całkowicie przetworzy wiadomość.
- Po przetworze konsumenta przekazu jest on całkowicie usuwany z kolejki.
Rozwiązania kolejki wiadomości
Istnieje wiele oprogramowania typu open source i bezpłatnych, które jest używane do kolejkowania wiadomości.
Kafka: Apache Kafka’System przesyłania wiadomości S to dobrze przemyślany system publikowania i system kolejkowania, który może obsługiwać bardzo wysokie ilości danych. Kafka jest odporna na uszkodzenia i nieustannie monitoruje węzły za pośrednictwem różnych usług.
Królik MQ: Rabbitmq jest jednym z najczęściej używanych systemów brokerów przesyłania wiadomości otwartych, które pierwotnie wdrożyły zaawansowany protokół kolejkowania komunikatów (AMQP). Kolejki to pojedynczy wątek w tym systemie, a jedna kolejka może obsłużyć do 50 000 wiadomości.
Amazon Sqs: Amazon Simple Queue Service to rozproszony system kolejki komunikatów używany do oddzielenia różnych mikrousług i aplikacji bez konieczności utrzymania kolejki wiadomości. Amazon SQS zapewnia również interfejs API usług internetowych, do którego użytkownicy mogą uzyskać dostęp do używania wspólnych języków programowania.
ActiveMQ: ActivEMQ to kolejny system brokera wiadomości napisany w Javie i ma pełny klient serwisowy Java. Ma wbudowane obsługę AJAX i REST oraz obsługuje różne protokoły, takie jak AMQP, MQTT, Stomp itp.
Jak WhatsApp dostarcza Twoje wiadomości?
Zanim przejdziemy do sposobu, w jaki wiadomości są w kolejce w WhatsApp, niech’s rozumie samą aplikację. Kodowany za pomocą języka programowania Erlang, WhatsApp jest najczęściej używany z prawie 2 miliardami użytkowników miesięcznych. WhatsApp korzysta z protokołu rozszerzonego rozszerzenia i obecności (XMPP), aby ułatwić wiadomości błyskawiczne między dwiema stronami. Początkowo WhatsApp rozpoczął od korzystania z serwera Ejabbered. Przy tak dużej liczbie użytkowników codziennie, konieczne jest, aby serwery skutecznie obsługiwać obciążenie, a system jest niezawodny. W latach kod został zrestrukturyzowany, przełączając z XMPP na wewnętrznie zaprojektowany protokół i modyfikując niektóre podstawowe komponenty w celu poprawy i osiągnięcia optymalnej wydajności serwera.
W miarę jak wysyłasz wiadomość, jest ona w kolejce na serwerze, dopóki odbiornik nie połączy się w celu odzyskania tych wiadomości. Więc kiedy napiszesz do swojego przyjaciela, a jeśli oni nie mają’t mają dostęp do Internetu, aby odbierać wiadomości, wiadomości te są kolejkami na serwerach WhatsApp, a proces ten jest znany jako “magazyn i naprzód” mechanizm. Tylko wtedy, gdy odbiornik zaakceptuje wiadomości, są wyciekane z serwera i usuwane z kolejki. Później, gdy odbiornik ma połączenie internetowe, wiadomości te są do nich dostarczane lub są pobierane przez odbiornik. Kiedy odbiornik w końcu potwierdza, że wiadomość została odebrana, pomyślne pobieranie wiadomości jest odesłane z powrotem na serwer WhatsApp, a wtedy zobaczysz podwójny znak kleszczy obok wiadomości.
Te struktury danych trwają długo, a dobre zrozumienie tego zajmie ci również długą drogę. Więc następnym razem, gdy nauczyciel zacznie omawiać struktury danych, zwróć tam dobrą uwagę. Tak? Dobra?
Cóż, do zobaczenia następnym razem!