Sobes.tech
Назад к вопросам
Senior
3

Сервис обработки обращений от пользователей Пользователь может отправить репорт Админы могут обрабатывать репорты Админ может дать фидбек пользователю DAU = 100 Availabilty = 99.95 % RPS = 100

Компании, где спрашивали
X5 techX5 tech

Ответ от нейросети

sobes.tech AI

Для сервиса обработки обращений от пользователей с такими требованиями (DAU=100, Availability=99.95%, RPS=100) можно предложить следующую архитектуру и подходы на Go:

  1. API для пользователей:
  • Эндпоинт для создания репорта (POST /reports).
  • Валидация и сохранение репорта в базу данных.
  1. API для админов:
  • Получение списка репортов с фильтрами и пагинацией.
  • Обработка репортов (изменение статуса, добавление комментариев).
  • Отправка фидбека пользователю (например, через email или push-уведомления).
  1. Технологии:
  • Go для backend с использованием фреймворка типа Gin или Echo.
  • База данных: PostgreSQL или MongoDB для хранения репортов.
  • Кэширование (Redis) для ускорения чтения часто запрашиваемых данных.
  1. Обеспечение доступности (99.95%):
  • Горизонтальное масштабирование сервиса.
  • Использование health checks и автоматического рестарта.
  • Репликация базы данных.
  1. Обработка нагрузки (RPS=100):
  • Go отлично справляется с высокой нагрузкой благодаря горутинам.
  • Использовать пул соединений к базе.

Пример простого обработчика создания репорта на Go с Gin:

package main

import (
    "net/http"
    "github.com/gin-gonic/gin"
)

type Report struct {
    UserID  string `json:"user_id" binding:"required"`
    Message string `json:"message" binding:"required"`
}

func createReport(c *gin.Context) {
    var report Report
    if err := c.ShouldBindJSON(&report); err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }
    // TODO: сохранить report в БД
    c.JSON(http.StatusCreated, gin.H{"status": "report created"})
}

func main() {
    r := gin.Default()
    r.POST("/reports", createReport)
    r.Run(":8080")
}

Такой сервис можно расширять, добавляя аутентификацию, авторизацию, уведомления и аналитику.