Как спроектировать канбан-доску
18 февраля 2023 г.Вот некоторые из популярных реализаций доски Канбан:
- Трелло
- Доска JIRA
- Планировщик Microsoft
- Доска асан
Требования
- Пользователь может создавать списки и назначать задачи на доске Канбан.
- Пользователь может видеть изменения на канбан-доске почти в реальном времени.
- Пользователь может вносить изменения на канбан-доске в автономном режиме.
- Канбан-доска распространяется
Хранение данных
Схема базы данных
* Основными объектами являются доски, списки и таблицы задач. * Связь между досками и таблицами списков 1-ко-многим * Связь между таблицами списков и задач 1 ко многим * Создана дополнительная таблица для отслеживания версий платы
Тип хранилища данных
* Хранилище документов, такое как MongoDB, сохраняет метаданные задач для улучшенной поддержки денормализации (возможность запрашивать и индексировать подполя документа) * Временные данные (уровень активности платы) хранятся на кэш-сервере, таком как Redis. * Очередь загрузки для активности форума реализована с использованием очереди сообщений, такой как Apache Kafka
Дизайн высокого уровня
- Изменения на канбан-доске синхронизируются в режиме реального времени через соединение WebSocket.
- Автономный клиент синхронизирует дельту изменений при повторном подключении.
Рабочий процесс
- Клиент-A создает WebSocket соединение с балансировщиком нагрузки, чтобы передавать изменения в режиме реального времени.
- Балансировщик нагрузки (HAProxy) использует циклический алгоритм для делегирования клиентского подключения серверу веб-сокетов со свободной емкостью< /li>
- Изменения на канбан-доске сохраняются в хранилище документов.
- Последовательное хеширование (ключ = идентификатор доски) используется для делегирования подключения WebSocket соответствующей публикации-подписки ( pub-sub) сервер
- Сервер публикации и подписки (Apache Kafka) делегирует подключение через веб-сокет подписанным серверам веб-сокетов.
- Сервер веб-сокетов получает изменения в хранилище документов
- Соединение WebSocket может устанавливать дуплексную связь с другими слушающими клиентами через балансировщик нагрузки.
- Клиент-Б получает изменения на доске Канбан.
- Кэш-сервер хранит временные метаданные, такие как уровень активности сеанса или временный ключ аутентификации.
- Очередь загрузки для воспроизведения изменений в последовательном порядке реализована с использованием очереди сообщений.
- Изменения асинхронно распространяются на подписчики (реплики) хранилища документов для обеспечения согласованности в конечном итоге.
- CDN предоставляет клиенту одностраничное динамическое приложение для уменьшения задержки.
- Одностраничное приложение кешируется в браузере, чтобы уменьшить задержку последующих запросов.
- Архитектура, управляемая событиями, может быть хорошим выбором для мгновенного распространения обновлений.
- Клиент вызывает логику сервера через тонкую оболочку через соединение WebSocket.
- Политика LRU используется для исключения серверов кеша
- Хранилище документов позволяет относительно просто запускать разные версии канбан-доски в одной и той же базе данных без значительных миграций схемы БД.
- Хранилище документов реплицируется с использованием топологии ведущий-ведомый.
- Онлайн-клиенты получают изменения из главного хранилища документов.
- Автономные клиенты получают изменения от подписчиков хранилища документов.
- Офлайн-клиенты локально сохраняют набор изменений с отметкой времени и отправляют дельту набора изменений при повторном подключении.
- Набор изменений воспроизводится в последовательном порядке, чтобы предотвратить сбои иерархии данных.
- Клиент синхронизирует только недавно просмотренные и отмеченные звездочкой доски для повышения производительности.
- Новый TCP WebSocket должен быть установлен при сбое сервера
- Для разрешения конфликтов на доске используется политика «последняя запись — победа».
- Для повышения отказоустойчивости в службе синхронизации должна быть реализована экспоненциальная отсрочка.
Ссылки
Также опубликовано здесь.
Избранное изображение источник.
Оригинал