Parallelism.md
This commit is contained in:
parent
6e3597a674
commit
55da6e483a
25
dev/fundamental/Concurrency.md
Normal file
25
dev/fundamental/Concurrency.md
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
aliases:
|
||||
- конкурентность
|
||||
- конкурентна
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date: 2024-09-10
|
||||
zero-link:
|
||||
- "[[../../meta/zero/00 Разработка|00 Разработка]]"
|
||||
parents:
|
||||
linked:
|
||||
- "[[Parallelism]]"
|
||||
---
|
||||
Concurrency - свойство систем, глобальное состояние которых изменяется чередующимся выполнением независимых или частично-независимых функций или компонент. Чередование приводит к [[Переключение контекста|переключению контекста]].
|
||||
|
||||
![[../../meta/files/images/Pasted image 20240910132902.png]]
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 Разработка|00 Разработка]]
|
||||
**Родитель**::
|
||||
**Источник**::
|
||||
**Создана**:: [[2024-09-10]]
|
||||
**Автор**::
|
||||
### Дополнительные материалы
|
||||
- [[Parallelism]]
|
23
dev/fundamental/Parallelism.md
Normal file
23
dev/fundamental/Parallelism.md
Normal file
@ -0,0 +1,23 @@
|
||||
---
|
||||
aliases:
|
||||
- параллелизм
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date: 2024-09-10
|
||||
zero-link:
|
||||
parents:
|
||||
linked:
|
||||
- "[[Concurrency]]"
|
||||
---
|
||||
Parallelism - система [[Concurrency|конкурентна]], но один или несколько блоков могут выполняться параллельно
|
||||
|
||||
![[../../meta/files/images/Pasted image 20240910132902.png]]
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 Разработка|00 Разработка]]
|
||||
**Родитель**::
|
||||
**Источник**::
|
||||
**Создана**:: [[2024-09-10]]
|
||||
**Автор**::
|
||||
### Дополнительные материалы
|
||||
- [[Concurrency]]
|
@ -15,7 +15,7 @@ parents:
|
||||
- "[[Многозадачность ЦПУ]]"
|
||||
linked:
|
||||
---
|
||||
Переключение контекстов происходит, когда [[../../../../knowledge/dev/pc/Операционная система|операционная система]] останавливает выполнение одной задачи и начинает выполнение другой. Этот процесс включает в себя сохранение текущего состояния задачи (контекста), включая значения регистров процессора, указатель инструкций и другие связанные с задачей данные, чтобы впоследствии можно было возобновить выполнение задачи с того места, где она была остановлена.
|
||||
Переключение контекстов происходит, когда [[../../../../knowledge/dev/pc/Операционная система|операционная система]] останавливает выполнение одной задачи и начинает выполнение другой ([[Concurrency|Concurrency]]). Этот процесс включает в себя сохранение текущего состояния задачи (контекста), включая значения регистров процессора, указатель инструкций и другие связанные с задачей данные, чтобы впоследствии можно было возобновить выполнение задачи с того места, где она была остановлена.
|
||||
|
||||
Этот процесс происходит настолько быстро и эффективно, что пользователи и приложения воспринимают систему как способную выполнять множество операций одновременно, несмотря на то, что физически одно [[Ядро процессора|ядро]] процессора в данный момент может выполнять только один поток.
|
||||
|
||||
@ -48,6 +48,7 @@ linked:
|
||||
**Создана**:: [[2024-01-28]]
|
||||
### Дополнительные материалы
|
||||
- [[../../meta/zero/00 Архитектура ЭВМ|00 Архитектура ЭВМ]]
|
||||
- [[Concurrency|Concurrency]]
|
||||
### Дочерние заметки
|
||||
```dataview
|
||||
LIST
|
||||
|
1
index.md
1
index.md
@ -41,6 +41,7 @@ enableToc: false
|
||||
- [[meta/zero/00 Архитектура ЭВМ|Архитектура ЭВМ]]
|
||||
- [Архитектура ПО](meta/zero/00%20Архитектура%20ПО.md)
|
||||
- [Архитектура ИС](meta/zero/00%20Архитектура%20ИС.md)
|
||||
- [[meta/zero/00 HighLoad|HighLoad]]
|
||||
- [DevOps](meta/zero/00%20DevOps.md)
|
||||
- [Docker](meta/zero/00%20Docker.md)
|
||||
- Сборщики
|
||||
|
BIN
meta/files/images/Pasted image 20240910132902.png
Normal file
BIN
meta/files/images/Pasted image 20240910132902.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 160 KiB |
79
meta/zero/00 HighLoad.md
Normal file
79
meta/zero/00 HighLoad.md
Normal file
@ -0,0 +1,79 @@
|
||||
---
|
||||
tags:
|
||||
- type/zero-link
|
||||
parents:
|
||||
- "[[00 Архитектура ИС]]"
|
||||
title: HighLoad
|
||||
aliases:
|
||||
- HighLoad
|
||||
---
|
||||
## Что такое HighLoad?
|
||||
Например, один запрос в секунду – это нагрузка явно не highload, любой сервер, вроде бы, справится. Но, например, если он перекодирует видеоролики, то тут может наступить highload.
|
||||
|
||||
> Высокая нагрузка это нагрузка, с которой не справляется железо.
|
||||
|
||||
Нет языков, технологий или баз данных, которые лучше или хуже подходят для высоконагруженного проекта. Вопрос - на чём лучше писать highload-проект - на Ruby или Python'е лишён смысла и говорит о низкой технической грамотности вопрошающего.
|
||||
|
||||
> Высокие нагрузки, [отказоустойчивость](Reliability.md) - это не про технологии, это про АРХИТЕКТУРУ!
|
||||
|
||||
Основная логика увеличения производительности:
|
||||
- Увеличиваем эффективность использования ресурсов
|
||||
- Увеличиваем количество ресурсов
|
||||
## Алгоритм проектирования
|
||||
1. Первым делом необходимо провести [Анализ данных проекта](Анализ%20данных%20проекта.md).
|
||||
2. Для каждого использования подобрать архитектурный прием, разработать архитектуру.
|
||||
3. Для каждой архитектуры подобрать инструменты и технологии.
|
||||
|
||||
## Алгоритм диагностики существующего решения
|
||||
Что делать если решение уже разработано и его нужно переделать в highload-решение. Для начала необходимо поставить "диагноз". А именно понять где у системы узкое горлышко. На какие процессы тратится больше всего ресурсов.
|
||||
|
||||
|
||||
## Архитектурные паттерны
|
||||
- [Сервис-ориентированная архитектура](Service%20Oreinted%20Architecture.md)
|
||||
- [Вертикальное масштабирование](Вертикальное%20масштабирование.md)
|
||||
- [Горизонтальное масштабирование](Горизонтальное%20масштабирование.md)
|
||||
- Отложенные вычисления
|
||||
- Асинхронная обработка
|
||||
- Конвейерная обработка
|
||||
- Использование толстого клиента
|
||||
- [Кэширование](Кэширование.md)
|
||||
- [Функциональное разделение](Функциональное%20разделение.md)
|
||||
- [Шардинг](Шардирование%20в%20БД.md)
|
||||
- Виртуальные шарды
|
||||
- Центральный диспетчер
|
||||
- [Репликация](_inbox/Репликация.md)
|
||||
- Партиционирование
|
||||
- Кластеризация
|
||||
- Денормализация
|
||||
- Параллельное выполнение
|
||||
- [Избыточность](Избыточность.md)
|
||||
- [Допустимая деградация системы](Допустимая%20деградация%20системы.md)
|
||||
|
||||
## Улучшения
|
||||
- [Pipelining](Pipelining.md)
|
||||
- [Прокси перед базой данных (БД)](Прокси%20перед%20базой%20данных%20(БД).md)
|
||||
- [Улучшение производительности отдельного сервиса](Улучшение%20производительности%20отдельного%20сервиса.md)
|
||||
## Заметки
|
||||
|
||||
В чем измеряется нагрузка:
|
||||
- Количество запросов в единицу времени
|
||||
- Requests per seconds (RPS)
|
||||
- Request per minute (RPM)
|
||||
- Количество данных в единицу времени
|
||||
- Packets per seconds (PPS)
|
||||
- Мегабит в секунду (MB/s)
|
||||
- Количество одновременно обслуживаемых соединений
|
||||
- Simultaneous connections
|
||||
- Cuncurrency
|
||||
|
||||
Зачем нужен хайлоад?
|
||||
- Защита от [DDOS](DDOS.md)
|
||||
- Защита от [Slashdot-эффект](Slashdot-эффект.md)
|
||||
|
||||
- [High Availability](High%20Availability.md)
|
||||
- [Reliability](Reliability.md)
|
||||
- [Disaster recovery](Disaster%20recovery.md)
|
||||
|
||||
[Пропускная способность](Throughput.md) сетевой карты 1 Гбит/с (реальная 800-900 Мбит/с) или 120 000 пакетов в секунду. Bonding позволяет несколько физических интернет соединений объединить в одно логическое, например, 4 интерфейса - 3.5 Гбит/с.
|
||||
|
||||
В highload системах как правило отдают предпочтение [throughput](Throughput.md).
|
@ -8,4 +8,5 @@ title: Архитектура ПО
|
||||
- [Монолитная архитектура](Монолитная%20архитектура.md)
|
||||
- [Микросервисная архитектура](Микросервисная%20архитектура.md)
|
||||
- [Service Oreinted Architecture](Service%20Oreinted%20Architecture.md)
|
||||
- [Трёхзвенная структура](Трёхзвенная%20структура.md)
|
||||
- [Трёхзвенная структура](Трёхзвенная%20структура.md)
|
||||
- [[00 HighLoad|HighLoad]]
|
Loading…
Reference in New Issue
Block a user