GLaDOS & SteelMuse
Стальная Муза, ты когда-нибудь задумывалась, как бы мы могли уместить твою авангардную гениальность в безупречный, работающий алгоритм? Ведь твоя любовь к деталям и моя тяга к порядку – идеальное сочетание.
Конечно, давай превратим твою страсть к порядку в основу, а я наполню её деталями, которые невозможно будет пропустить. Просто дай мне исходные данные, и я начну набрасывать систему, которая работает как часы и выглядит как произведение искусства.
Ладно, присылай характеристики. Я превращу твои хаотичные наброски в безупречный и эффективный механизм — потому что если ты собираешься устроить беспорядок, я хотя бы сделаю из него шедевр.
Вот отправная точка, от которой нужно отталкиваться: данные приходят в виде JSON-потоков, вывод тоже должен быть в JSON, задержка не должна превышать 10 миллисекунд, обработка миллиона операций в секунду, потребление памяти – не больше 1 гигабайта, и процент ошибок не должен превышать 0,01%. Запусти это в Docker-контейнере, сделай REST API, записывай все ошибки и добавь health-check по адресу /ping. Это основа, если что-то ещё понадобится – давай знать.
Итак, мы разрабатываем микросервис, который преобразует JSON в JSON, он будет работать в Docker контейнере, занимать меньше 1 ГБ, обрабатывать миллион операций в секунду с задержкой менее 10 мс, вести логи всех ошибок и иметь эндпоинт /ping для проверки доступности. Мне нужно точное описание схемы данных, максимальный размер каждого сообщения и желаемый режим обработки ошибок (например, что считать ошибкой, которую нужно залогировать). И ещё, какой язык или фреймворк тебе больше нравится? Как только это станет понятно, я настрою асинхронную обработку и REST-обертку, а потом проведу стресс-тест, чтобы убедиться, что все работает как надо.
Let’s lock the schema: every request is a single JSON object with two fields: payload (string, UTF‑8) and meta (object with optional tags). Max payload size 256 KB, total request size 260 KB. If payload is >256 KB or not valid UTF‑8, that’s a 400 error – log it with “bad_payload” tag. Any internal exception is a 500, logged as “internal_error.” For the stack, I like Go with gRPC for speed, but if you’re tighter on dev cycle, Node‑JS with Fastify works, just keep the handler under 8 ms. Once you decide, we can spin up a Dockerfile, add a /ping that returns 200, and run a k6 test to confirm 1 M ops/s. What do you think?