Добавить ARCHITECTURE.md
This commit is contained in:
parent
528f27f51f
commit
cc200f90a6
53
ARCHITECTURE.md
Normal file
53
ARCHITECTURE.md
Normal 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 - метаданные
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user