Создание службы чата с помощью GoLang и WebAssembly (часть 3)

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😉

Оцените статью
devanswers.ru
Добавить комментарий