Как создать функциональный Pastebin

Как создать функциональный Pastebin

15 марта 2023 г.

Системные требования Pastebin

  • Клиент должен иметь возможность загружать текстовые данные и получать уникальный URL.
  • Полученный URL используется для доступа к текстовым данным

Хранение данных

Схема базы данных

Pastebin; Database schema

* Основными объектами базы данных являются таблица Pastes, таблица Users * Связь между таблицами Users и Pastes — 1-ко-многим

Тип хранилища данных

  • Содержимое вставки хранится в хранилище управляемых объектов, таком как AWS S3.
  • Для хранения метаданных (URL-адреса вставки) вставки используется база данных SQL, такая как Postgres или MySQL.

Дизайн высокого уровня

  1. Сервер создает уникальный идентификатор вставки (ID) для каждой новой вставки.
  2. Сервер кодирует идентификатор вставки для удобочитаемости.
  3. Сервер сохраняет идентификатор вставки в хранилище метаданных, а вставку — в хранилище объектов.
  4. Когда клиент вводит идентификатор вставки, сервер возвращает вставку.

Написать путь

Pastebin; Write path

  1. Клиент устанавливает HTTP-соединение с сервером
  2. Запись в Pastebin ограничена по скорости.
  3. Служба генерации ключей (KGS) создает уникальный закодированный идентификатор вставки.
  4. Хранилище объектов возвращает предварительно подписанный URL.
  5. URL для вставки (http://presigned-url/paste-id) создается путем добавления созданного идентификатора вставки к суффиксу предварительно подписанного URL.
  6. Вставляемое содержимое передается напрямую от клиента в хранилище объектов с использованием URL-адреса для вставки, чтобы оптимизировать расходы на пропускную способность и производительность.
  7. Хранилище объектов сохраняет вставку, используя URL-адрес для вставки.
  8. Метаданные вставки, включая URL-адрес вставки, сохраняются в базе данных SQL.
  9. Сервер возвращает идентификатор вставки клиенту для последующего доступа.

Читать путь

Pastebin; Read path

  1. Клиент выполняет DNS-запрос для идентификации сервера.
  2. К сети CDN отправляется запрос, чтобы убедиться, что запрошенная вставка находится в кеше CDN.
  3. Клиент устанавливает HTTP-соединение с балансировщиком нагрузки или обратным прокси-сервером.
  4. Запросы на чтение ограничены по скорости
  5. Балансировщик нагрузки делегирует подключение клиента к серверу со свободной емкостью
  6. Сервер проверяет наличие вставки, запрашивая фильтр Блума
  7. .
  8. Если вставка существует, проверьте, хранится ли она на сервере кеша.
  9. Получить метаданные для вставки из базы данных SQL
  10. Получить вставляемое содержимое из хранилища объектов, используя метаданные.


Также опубликовано здесь.

Избранное изображение источник.


Ссылки


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE