mirror of
https://github.com/ada-dmitry/ada-dmitry.github.io.git
synced 2026-09-24 01:10:35 +00:00
Refactor code structure for improved readability and maintainability
This commit is contained in:
+6
-6
@@ -59,8 +59,8 @@ defaults:
|
|||||||
toc: true # оглавление справа
|
toc: true # оглавление справа
|
||||||
toc_sticky: true
|
toc_sticky: true
|
||||||
author_profile: false
|
author_profile: false
|
||||||
show_date: false
|
show_date: true
|
||||||
show_date_modified: false
|
show_date_modified: true
|
||||||
- scope:
|
- scope:
|
||||||
path: ""
|
path: ""
|
||||||
type: "posts"
|
type: "posts"
|
||||||
@@ -71,8 +71,8 @@ defaults:
|
|||||||
toc: true # оглавление справа
|
toc: true # оглавление справа
|
||||||
toc_sticky: true
|
toc_sticky: true
|
||||||
author_profile: true
|
author_profile: true
|
||||||
show_date: false
|
show_date: true
|
||||||
show_date_modified: false
|
show_date_modified: falturse
|
||||||
- scope:
|
- scope:
|
||||||
path: ""
|
path: ""
|
||||||
type: "pages"
|
type: "pages"
|
||||||
@@ -83,8 +83,8 @@ defaults:
|
|||||||
toc: false # оглавление справа
|
toc: false # оглавление справа
|
||||||
toc_sticky: false
|
toc_sticky: false
|
||||||
author_profile: true
|
author_profile: true
|
||||||
show_date: false
|
show_date: true
|
||||||
show_date_modified: false
|
show_date_modified: true
|
||||||
|
|
||||||
obsidian:
|
obsidian:
|
||||||
vault: "_notes" # где лежат md-файлы Obsidian
|
vault: "_notes" # где лежат md-файлы Obsidian
|
||||||
|
|||||||
@@ -0,0 +1,95 @@
|
|||||||
|
---
|
||||||
|
title: "RAID — Redundant Array of Independent Disks"
|
||||||
|
description: "Заметки по теме RAID"
|
||||||
|
---
|
||||||
|
|
||||||
|
**RAID** — технология объединения нескольких физических дисков в единый логический массив для повышения:
|
||||||
|
- надёжности хранения,
|
||||||
|
- скорости работы,
|
||||||
|
- отказоустойчивости.
|
||||||
|
|
||||||
|
> 🧠 Полное название: *Redundant Array of Independent Disks* — избыточный массив независимых дисков.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Уровни RAID
|
||||||
|
|
||||||
|
### 🔹 RAID 0 — *Striping*
|
||||||
|
- Данные разбиваются на блоки и записываются параллельно на все диски массива
|
||||||
|
- **Преимущество**: высокая скорость записи и чтения
|
||||||
|
- **Недостаток**: нет отказоустойчивости — сбой одного диска приводит к потере всех данных
|
||||||
|
|
||||||
|
> 💡 Используется там, где важна производительность, а не надёжность (например, временные рендер-файлы)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔹 RAID 1 — *Mirroring*
|
||||||
|
- Полная зеркализация данных на два диска
|
||||||
|
- При записи информация дублируется
|
||||||
|
- **Преимущество**: высокая надёжность (один диск может выйти из строя)
|
||||||
|
- **Недостаток**: в 2 раза меньше доступного объёма (50% от общего)
|
||||||
|
|
||||||
|
> 💡 Подходит для критичных систем с небольшими объёмами
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔹 RAID 10 (1+0) — *Комбинация зеркалирования и чередования*
|
||||||
|
- Минимум 4 диска
|
||||||
|
- Два массива RAID 1, объединённые в RAID 0
|
||||||
|
- **Преимущество**: высокая скорость + высокая надёжность
|
||||||
|
- **Недостаток**: половина пространства теряется
|
||||||
|
|
||||||
|
> 💡 Один из самых сбалансированных по цене/производительности уровней RAID
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔹 RAID 5 — *Striping with Parity*
|
||||||
|
- Минимум 3 диска
|
||||||
|
- Данные и контрольные суммы (чётность) распределяются между всеми дисками
|
||||||
|
- **Преимущество**: выдерживает отказ одного диска
|
||||||
|
- **Недостаток**: при восстановлении возможны просадки в скорости
|
||||||
|
|
||||||
|
> 💡 Очень популярен в корпоративных хранилищах
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔹 RAID 6 — *Striping with Double Parity*
|
||||||
|
- Минимум 4 диска
|
||||||
|
- Использует два блока чётности, может выдержать отказ двух дисков
|
||||||
|
- **Преимущество**: высокая надёжность
|
||||||
|
- **Недостаток**: больше вычислительная нагрузка на запись
|
||||||
|
|
||||||
|
> 💡 Используется в критичных системах с большим объёмом данных
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ Аппаратный vs программный RAID
|
||||||
|
|
||||||
|
| Тип | Преимущества | Недостатки |
|
||||||
|
|------------|--------------------------------------|--------------------------------|
|
||||||
|
| **Аппаратный** | Выделенный RAID-контроллер, кэш, батарея | Дороже, сложнее заменить |
|
||||||
|
| **Программный**| Не требует спец. оборудования | Загрузка на CPU, меньше функций|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧠 Ключевые понятия
|
||||||
|
|
||||||
|
- **Чётность (Parity)** — метод вычисления контрольных сумм для восстановления данных
|
||||||
|
- **Hot Spare** — резервный диск, который автоматически заменяет вышедший из строя
|
||||||
|
- **Rebuild** — процесс восстановления массива после сбоя
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Итоги
|
||||||
|
|
||||||
|
| Уровень RAID | Мин. дисков | Скорость | Надёжность | Эффективность |
|
||||||
|
|--------------|-------------|----------|-------------|----------------|
|
||||||
|
| RAID 0 | 2 | ⭐⭐⭐⭐ | ❌ | 100% |
|
||||||
|
| RAID 1 | 2 | ⭐⭐ | ✅✅ | 50% |
|
||||||
|
| RAID 10 | 4 | ⭐⭐⭐ | ✅✅✅ | 50% |
|
||||||
|
| RAID 5 | 3 | ⭐⭐⭐ | ✅ | ~67–80% |
|
||||||
|
| RAID 6 | 4 | ⭐⭐ | ✅✅ | ~50–75% |
|
||||||
|
|
||||||
|
> 💬 Выбор RAID зависит от задач: хранения логов, БД, виртуализации, архивов и т.д.
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
title: "Split-brain"
|
||||||
|
layout: single
|
||||||
|
---
|
||||||
|
|
||||||
|
**Split-brain** — ситуация, при которой узлы кластера теряют связь друг с другом и каждый считает себя активным. В результате возникает конфликт за управление ресурсами.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ Почему это опасно
|
||||||
|
|
||||||
|
- Два узла работают с одним ресурсом одновременно
|
||||||
|
- Возможна потеря, дублирование или порча данных
|
||||||
|
- Нарушение целостности и доступности системы
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧪 Типовой сценарий
|
||||||
|
|
||||||
|
1. Узлы теряют связь между собой
|
||||||
|
2. Каждый считает, что другой "упал"
|
||||||
|
3. Оба активируют сервисы
|
||||||
|
4. Сервис работает параллельно на двух узлах → конфликт
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ Способы предотвращения
|
||||||
|
|
||||||
|
- **Quorum (кворум)** — решение принимает большинство узлов
|
||||||
|
- **STONITH (Shoot The Other Node In The Head)** — принудительное выключение "лишнего" узла
|
||||||
|
- **Arbiter (арбитр)** — третий узел/устройство для голосования
|
||||||
|
- **Shared storage lock** — блокировка доступа на уровне хранилища
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧰 Примеры технологий с защитой от split-brain
|
||||||
|
|
||||||
|
- Pacemaker + Corosync (STONITH, quorum)
|
||||||
|
- Ceph (кворум через CRUSH)
|
||||||
|
- Galera Cluster (wsrep-cluster)
|
||||||
|
- DRBD (dual-primary блокировка)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 См. также:
|
||||||
|
- [[Кластеры высокой доступности]]
|
||||||
|
- [[Геораспределённые кластеры и ЦОД]]
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
---
|
||||||
|
title: "Виды кластеров высокой доступности"
|
||||||
|
layout: single
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
Кластер — группа серверов, объединённых логически и работающих как единый ресурс. Применяются для обеспечения высокой доступности, отказоустойчивости и масштабируемости.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔁 Активный / Пассивный
|
||||||
|
|
||||||
|
- Один узел активен, другие — в ожидании (standby)
|
||||||
|
- Пассивный включается при сбое активного
|
||||||
|
- Прост в реализации, но ресурсы используются неэффективно
|
||||||
|
|
||||||
|
📌 Примеры: Microsoft Failover Cluster, Patroni
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧭 Активный / Активный
|
||||||
|
|
||||||
|
- Все узлы обрабатывают запросы одновременно
|
||||||
|
- При отказе одного — нагрузка перераспределяется
|
||||||
|
- Требует балансировки и синхронизации
|
||||||
|
|
||||||
|
📌 Примеры: Galera Cluster, MySQL Group Replication, Kubernetes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧩 Модульная избыточность
|
||||||
|
|
||||||
|
- Все узлы дублируют друг друга и одновременно выполняют одинаковые действия
|
||||||
|
- Система сохраняет работоспособность при отказе одного или нескольких узлов
|
||||||
|
|
||||||
|
📌 Применяется в критически важных системах (финансы, медицина)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌍 Геораспределённый кластер
|
||||||
|
|
||||||
|
- Узлы размещены в разных дата-центрах или городах
|
||||||
|
- Обеспечивает катастрофоустойчивость
|
||||||
|
- Использует синхронную или асинхронную репликацию
|
||||||
|
|
||||||
|
📌 Примеры: VMware vSAN Stretch Cluster, Ceph, DRBD
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ Кластеры вычислений (HPC)
|
||||||
|
|
||||||
|
- Для параллельных и ресурсоёмких расчётов
|
||||||
|
- Используются в научных и аналитических задачах
|
||||||
|
|
||||||
|
📌 Примеры: SLURM, Apache Mesos
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Сравнение
|
||||||
|
|
||||||
|
| Тип | Использование ресурсов | Время реакции | Сложность | Назначение |
|
||||||
|
|----------------------|------------------------|---------------|-----------|-----------------------------|
|
||||||
|
| Активный/пассивный | частичное | секунды | низкая | Отказоустойчивость |
|
||||||
|
| Активный/активный | полное | мгновенное | средняя | HA + масштабирование |
|
||||||
|
| Модульная избыточность | полное (дублирование) | мгновенное | высокая | Критичные задачи |
|
||||||
|
| Геораспределённый | полное | зависит от сети | высокая | Катастрофоустойчивость |
|
||||||
|
| HPC | полное | зависит от задач | средняя | Высокопроизводительные вычисления |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 См. также:
|
||||||
|
- [[Кластеры высокой доступности]]
|
||||||
|
- [[Геораспределённые кластеры и ЦОД]]
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
---
|
||||||
|
title: "Геораспределённые кластеры и ЦОД"
|
||||||
|
layout: single
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
**Геораспределённые центры обработки данных (ЦОД)** — это архитектура, в которой компоненты ИТ-инфраструктуры размещены на **нескольких географически удалённых площадках**, обеспечивая высокую отказо- и катастрофоустойчивость.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🖧 Геораспределённый кластер
|
||||||
|
|
||||||
|
**Геораспределённый кластер** — кластер, растянутый на несколько площадок (обычно 2+ ЦОД), синхронизированных между собой.
|
||||||
|
|
||||||
|
📌 Цель: сохранить работоспособность даже при **полной недоступности одной площадки**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ Особенности
|
||||||
|
|
||||||
|
- Используется **синхронная или асинхронная репликация**
|
||||||
|
- Узлы кластера распределены по площадкам
|
||||||
|
- Обычно реализуется в модели HA или DR
|
||||||
|
- Требует стабильного и быстрого канала связи
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔁 Репликация
|
||||||
|
|
||||||
|
- **Синхронная** — запись данных на обе площадки одновременно
|
||||||
|
✅ Минимальные потери данных
|
||||||
|
⚠️ Зависимость от сетевой задержки
|
||||||
|
|
||||||
|
- **Асинхронная** — запись на вторую площадку с задержкой
|
||||||
|
✅ Быстрее и надёжнее при плохой связи
|
||||||
|
⚠️ Возможна потеря последних транзакций
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📦 Примеры реализации
|
||||||
|
|
||||||
|
- **Stretch Cluster** (VMware, Windows Server)
|
||||||
|
- **Ceph RADOS + multisite**
|
||||||
|
- **PostgreSQL с Patroni + WAL shipping**
|
||||||
|
- **DRBD + Pacemaker**
|
||||||
|
- **GlusterFS Geo-Replication**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧠 Преимущества
|
||||||
|
|
||||||
|
- Катастрофоустойчивость (даже при потере ЦОД)
|
||||||
|
- Балансировка нагрузки между площадками
|
||||||
|
- Возможность переключения с минимальным RTO/RPO
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ Сложности
|
||||||
|
|
||||||
|
- Увеличенные затраты (две площадки, каналы)
|
||||||
|
- Настройка quorum и репликации
|
||||||
|
- Сложность тестирования DR-сценариев
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 См. также:
|
||||||
|
- [[Кластеры высокой доступности]]
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
title: "Публичные выступления"
|
||||||
|
description: "Заметки по теме публичных выступлений"
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔑 Основные цели:
|
||||||
|
- Научиться эффективно **передавать идею** аудитории.
|
||||||
|
- Убедить слушателей в **ценности и реализуемости проекта**.
|
||||||
|
- Развить **уверенность** и **структурность** в речи.
|
||||||
|
|
||||||
|
## 🧩 Структура питча (pitch):
|
||||||
|
1. **Проблема** — почему это важно?
|
||||||
|
2. **Решение** — что вы предлагаете?
|
||||||
|
3. **Ценность** — в чём польза?
|
||||||
|
4. **Реализация** — как это работает?
|
||||||
|
5. **Призыв к действию** — что вы хотите от слушателя?
|
||||||
|
|
||||||
|
## 📌 Советы:
|
||||||
|
- **Начинайте сильно** — заинтересуйте с первой фразы.
|
||||||
|
- Используйте **истории и примеры** для вовлечения.
|
||||||
|
- Говорите **ясно и уверенно**, избегайте «эээ», «ну».
|
||||||
|
- **Контролируйте время**: 1 минута = 150 слов.
|
||||||
|
- **Практикуйтесь** — только практика делает вас уверенным.
|
||||||
|
|
||||||
|
## 🎯 Ошибки, которых стоит избегать:
|
||||||
|
- Перегруз фактами без структуры.
|
||||||
|
- Чтение с листа или слайдов.
|
||||||
|
- Монотонная речь без акцентов.
|
||||||
|
- Отсутствие ясной цели выступления.
|
||||||
|
|
||||||
|
## 💡 Ресурсы для улучшения навыков:
|
||||||
|
- Тренировки перед зеркалом или на камеру.
|
||||||
|
- Обратная связь от коллег или наставников.
|
||||||
|
- Изучение TED-выступлений как примеров.
|
||||||
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 252 KiB |
Reference in New Issue
Block a user