Gooood :)))) теперь мы в части 3 — мы хотим поговорить об архитектуре сервиса чата
Чат-сервис состоит из двух основных частей:
-
Chat App или клиентская часть, которая представляет собой настольное, веб-приложение или приложение для чата на смартфоне.
-
Chat Server Engine или серверная часть, которая представляет собой пул внешних серверов, отвечающих за работу чата. Именно здесь происходит вся магия чата.
Обе части содержат различные компоненты, которые взаимодействуют друг с другом и приводят чат в действие.
Chat Server Engine — это ядро архитектуры чата, которое обрабатывает доставку и отправку сообщений. Я хочу показать вам все компоненты службы чата:
-
Chat REST API обрабатывает задачи, которые не связаны непосредственно с отправкой и доставкой сообщений, такие как аутентификация пользователя, изменение настроек пользователя, приглашение друзей, загрузка пакетов стикеров и т.д. Chat App (клиентская часть чата) взаимодействует с Chat REST API через клиентскую библиотеку Chat REST API.
-
Chat WebSocket Server отвечает за передачу сообщений между пользователями. Chat App взаимодействует с Chat WebSocket Server через клиентскую библиотеку Chat WebSocket. Это соединение открыто в двух направлениях; это означает, что пользователям не нужно делать запросы на сервер, если для них есть какие-то сообщения, они просто получают их сразу.
-
Chat Media Storage Server — это пул серверов, отвечающих за хранение медиафайлов пользователей. Файлы загружаются на них через клиентскую библиотеку Chat Media Storage.
Chat App — это другая основная часть архитектуры чата, та, с которой непосредственно взаимодействуют пользователи. Оно разделено на три отдельных корневых компонента:
-
Chat Client Engine обрабатывает все коммуникации с Chat Server Engine через свои внутренние компоненты: Библиотека клиента Chat REST API, Библиотека клиента Chat WebSocket и Библиотека клиента Chat Media Storage. Он также включает в себя обработчик сообщений Chat Push Message Handler, который работает с push-уведомлениями.
-
Пользовательский интерфейс Chat UI отображает данные для пользователей с помощью своих виджетов: Chat Contact List UI, Chat Dialog UI, Chat Push Message Widget — расширение для мобильных приложений, позволяющее отвечать на сообщения, не открывая приложение, и Chat Internal Notification Widget — виджет, всплывающий в верхней части экрана, когда пользователь общается в диалоге, и уведомляющий о входящем сообщении в другом диалоге.
-
Chat Device Storage — это внутренняя база данных (читай: хранилище вашего устройства), которая хранит сообщения и файлы, чтобы пользователи могли получить к ним доступ в автономном режиме. Его внутренний компонент, Chat Media Cache, получает медиафайлы из Chat Media Storage и хранит их на устройстве, чтобы пользователь мог получить к ним доступ в любое время без необходимости каждый раз обращаться к Chat Media Storage.
Поэтому нам нужен протокол WebSocket, который позволяет открыть двусторонний интерактивный сеанс связи между браузером пользователя и сервером. Таким образом, вы можете отправлять сообщения на сервер и получать ответы, управляемые событиями, без необходимости опрашивать сервер для получения ответа.
В нашем проекте мы создаем сервер websocket с помощью nodejs и клиент websocket с помощью Golang.
Ссылки:
1) yellow.systems: Архитектура чат-службы
2) developer.mozilla.org: WebSocket
В части 4 мы собираемся написать наш сервер websocket с помощью nodejs😉