Добавить ARCHITECTURE.md

This commit is contained in:
denis 2026-03-25 17:53:16 +03:00
parent 528f27f51f
commit cc200f90a6

53
ARCHITECTURE.md Normal file
View File

@ -0,0 +1,53 @@
### Архитектура выполнения
```txt
┌─────────────────────────────────────────────────────────────┐
│ TestRunner │
│ Создаёт N workers (по умолчанию 4) │
└──────┬──────────┬──────────┬──────────┬─────────────────────┘
│ │ │ │
▼ ▼ ▼ ▼
Worker 1 Worker 2 Worker 3 Worker 4
│ │ │ │
│ │ │ │
┌───▼──────────▼──────────▼──────────▼───┐
│ Общий пул из 1000 файлов │
│ file_0.dat, file_1.dat, ... file_999 │
└─────────────────────────────────────────┘
```
Каждый worker работает в бесконечном цикле:
``` go
for {
1. Выбрать операцию на основе весов
(30% write, 30% read, 40% stat)
2. Выбрать случайный файл из пула
3. Выполнить операцию
4. Записать метрики
5. Повторить
}
```
#### Ключевые моменты
1. Независимость workers
* Каждый worker работает сам по себе
* Никакой синхронизации между ними
* Могут одновременно работать с одним файлом
2. Случайность выбора
* Файл выбирается случайно из всего пула
* Один файл может быть выбран несколько раз
* Другой файл может не быть выбран вообще
3. Размеры динамические
* Write каждый раз выбирает новый размер
* Read читает текущий размер файла
* Stat - метаданные