RedBoard: доска для совместной работы, управляемая Redis

Обзор моей работы

RedBoard — это демонстрация приложения для совместной доски, управляемого функциями реального времени Redis.

Я был очарован технологией многопользовательского редактирования Figma с 2019 года, когда они опубликовали статью о том, как она работает. Я хотел использовать этот хакатон как возможность попытаться реализовать минимальное воспроизведение этой технологии, используя все, что я мог почерпнуть из этой статьи и некоторых других материалов, которыми Figma поделилась публично. Я благодарен их команде инженеров за то, что они нашли время поделиться со всеми нами тем, что они создали и чему научились!

Высокоуровневый дизайн RedBoard в значительной степени основан на этой диаграмме архитектуры, представленной командой Figma для демонстрации использования FigJam для создания таких диаграмм, но, конечно, значительно упрощен и использует только Redis для хранения и обмена сообщениями. Журналирование реализовано с помощью потоков Redis, а контрольные точки складывают эти потоки в значения RedisJSON. На этой диаграмме не показано присутствие, или трансляция в реальном времени действий, выполняемых другими пользователями на том же форуме. Присутствие реализовано с помощью Pub/Sub.

Бэкэнд реализован с помощью Redis и Rust, а фронтэнд — с помощью React и Recoil, он же стек RRRR 🙂 . Они взаимодействуют между собой с помощью двухфазного протокола через WebSocket-соединение, а бэкенд-приложение представляет собой, по сути, очень простое хранилище документов в реальном времени с использованием многопользовательской стратегии координации изменений Figma.

Этот проект стал отличным учебным опытом, и, если не считать всего остального, он помог мне по-настоящему осознать, насколько сложно построить подобную систему с качеством производства и в больших масштабах. Кроме того, использование Redis для обработки всех необходимых данных вдохновило меня на некоторые новые способы использования Redis в моей профессиональной работе в StructionSite.

Категория заявки:

Причудливые дикие карты

Используемый язык

Rust

Ссылка на код

lukewestby / redboard

Работа для хакатона Redis/DEV 2022 года

RedBoard

Доска для совместной работы, управляемая Redis и вдохновленная Figma. Пожалуйста, ознакомьтесь с моим сообщением о проекте для объяснения моих целей и вдохновения для этого проекта.

Как это работает

Бэкенд-приложение — это, по сути, очень простое, универсальное JSON-хранилище реального времени. Оно позволяет нескольким клиентам изменять групповой JSON по ID таким образом, что последняя запись, полученная сервером, всегда выигрывает, и все клиенты получают инкрементное уведомление о правильном состоянии объектов. Визуальная функциональность приложения для конечного пользователя строится поверх этого хранилища, но хранилище ничего не знает о значении объектов, которые оно хранит.

Некоторые важные термины:

  • доска: коллекция объектов, доступных для просмотра, которые могут одновременно редактировать многие люди.
  • Объект: отдельный визуальный элемент на доске
  • Изменение: структурированное представление редактирования объекта.
    • { type: "Insert", id: "<UUID>", "object": { "property1": "hello", ... } }
Посмотреть на GitHub

Дополнительные ресурсы / информация

  • Заметка в блоге о многопользовательской технологии Figma: https://www.figma.com/blog/how-figmas-multiplayer-technology-works/
  • Диаграмма многопользовательской архитектуры Figma: https://www.figma.com/community/file/989634471195357925
  • Recoil: https://recoiljs.org/

  • Ознакомьтесь с Redis OM, клиентскими библиотеками для работы с Redis как многомодельной базой данных.
  • Используйте RedisInsight для визуализации данных в Redis.
  • Зарегистрируйтесь для получения бесплатной базы данных Redis.

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