== UDP против TCP, или Будущее сетевого стека
https://youtu.be/aXYJlizk3CQ
малый буфер - беда с пропускной
большой буфер - беда с лэтенси
для юдп протокола можно гибко настроить что бы не тратить ресурсы и утилизировать сеть на лету
Flow control - говоришь сколько у тебя осталось в буфере. если превысить - пакет теряется. пример бэкпроэшер
любой роутер может сам начать дропать пакеты сам!
Congestion control
Cubic - дожидается потери пакета
BBR - смотрит на размер буфера (оч эффективен для видео)
jitter (неравномерность прихода пакетов) часто подгаживает для ББР
увеличивайте ACK!!!
мультиплексирование по ТЦП не всегда эффективно, когда пакет в начале потерялся, то другие назевисимые от первого всеравно ждут
! Включить в NGINX TFO - TCP FAST OPEN
! Включить TLS 1.3
UDP может в Zero RTT
! не забыть про "NAT unbinding"
! если пакеты проредить то потеря меньше
! бери MTU=1350 и не парься
https://lwn.net/Articles/655299/
https://youtu.be/aXYJlizk3CQ
малый буфер - беда с пропускной
большой буфер - беда с лэтенси
для юдп протокола можно гибко настроить что бы не тратить ресурсы и утилизировать сеть на лету
Flow control - говоришь сколько у тебя осталось в буфере. если превысить - пакет теряется. пример бэкпроэшер
любой роутер может сам начать дропать пакеты сам!
Congestion control
Cubic - дожидается потери пакета
BBR - смотрит на размер буфера (оч эффективен для видео)
jitter (неравномерность прихода пакетов) часто подгаживает для ББР
увеличивайте ACK!!!
мультиплексирование по ТЦП не всегда эффективно, когда пакет в начале потерялся, то другие назевисимые от первого всеравно ждут
! Включить в NGINX TFO - TCP FAST OPEN
! Включить TLS 1.3
UDP может в Zero RTT
! не забыть про "NAT unbinding"
! если пакеты проредить то потеря меньше
! бери MTU=1350 и не парься
https://lwn.net/Articles/655299/
== ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам
https://youtu.be/3fJ5ptx5g7M
1) отсутствие транзакций и куча маленьких запросов в диск
2) нерабочие индексы и фулсканы
3) SELECT * - не проблема. но упретесь в сеть к базе в какой то момент
4) внешний коллл без кэша
5) крон пораждает потенциальные спящие процессы. ВЫСТАВЛЯЙТЕ МАКСИМАЛЬНОЕ ВРЕМЯ ВЫПОЛНЕНИЕ ЗАДАНИЯ!!!!
6) РАЗДЕЛЯЙ вебсервер для приложения и для статики!!!!
7) не делать ссессии в файлах. юзайте редис !
8) не делать СТЕЙФУЛ код.
9) не юзать скулайт для нагрузки
10) храните в с3 файлы а не на локальном сервере
11) КЭШИРУЙ ВСЕ что можно
12) храните между запросами соединение с БД. не делайте на запрос каждый раз новый коннекшн. прокся PGBouncer решает вопрос
13) TIME_WAIT сокеты мешают, казалось бы.
включить
15) МОНИТОРИНГ !!!!
https://youtu.be/3fJ5ptx5g7M
1) отсутствие транзакций и куча маленьких запросов в диск
2) нерабочие индексы и фулсканы
3) SELECT * - не проблема. но упретесь в сеть к базе в какой то момент
4) внешний коллл без кэша
5) крон пораждает потенциальные спящие процессы. ВЫСТАВЛЯЙТЕ МАКСИМАЛЬНОЕ ВРЕМЯ ВЫПОЛНЕНИЕ ЗАДАНИЯ!!!!
6) РАЗДЕЛЯЙ вебсервер для приложения и для статики!!!!
7) не делать ссессии в файлах. юзайте редис !
8) не делать СТЕЙФУЛ код.
9) не юзать скулайт для нагрузки
10) храните в с3 файлы а не на локальном сервере
11) КЭШИРУЙ ВСЕ что можно
12) храните между запросами соединение с БД. не делайте на запрос каждый раз новый коннекшн. прокся PGBouncer решает вопрос
13) TIME_WAIT сокеты мешают, казалось бы.
включить
net.ipv4.tcp_tw_reuse = 1
14) плохой канал . могут быть проблемы в коммунальных инфраструктурах сети. юзать надо ВЫДЕЛЕННЫЕ СЕРВЕРА15) МОНИТОРИНГ !!!!
== Нарушаем принцип подстановки Лисков и смотрим, что получилось
https://youtu.be/hUAQXej88f8
еще раз = Не нарушайте интерфейсы при наследовании !
Если надо изменить интерфейс - иди нафиг, создай новый класс. так или иначе это приведет к обязательно условности в проектных знаниях! а это нужно сокращать а не ростить на проектах. сделай лучше это явно отдельным типом!
https://youtu.be/hUAQXej88f8
еще раз = Не нарушайте интерфейсы при наследовании !
Если надо изменить интерфейс - иди нафиг, создай новый класс. так или иначе это приведет к обязательно условности в проектных знаниях! а это нужно сокращать а не ростить на проектах. сделай лучше это явно отдельным типом!
YouTube
Нарушаем принцип подстановки Лисков и смотрим, что получилось
#soer #itubeteam
Основной канал для общения и публикации новых видео - Телегарм - https://news.1rj.ru/str/softwareengineervlog
Спонсорство - https://donate.s0er.ru
Сайт платным контентом - https://soer.pro
Зеркало для видео Дзен Видео - https://zen.yandex.ru/i…
Основной канал для общения и публикации новых видео - Телегарм - https://news.1rj.ru/str/softwareengineervlog
Спонсорство - https://donate.s0er.ru
Сайт платным контентом - https://soer.pro
Зеркало для видео Дзен Видео - https://zen.yandex.ru/i…
BufWriter<Master<'_>>
== UDP против TCP, или Будущее сетевого стека https://youtu.be/aXYJlizk3CQ малый буфер - беда с пропускной большой буфер - беда с лэтенси для юдп протокола можно гибко настроить что бы не тратить ресурсы и утилизировать сеть на лету Flow control - говоришь…
socket sendmsg MSG_ZEROCOPY
https://lwn.net/Articles/655299/
https://lwn.net/Articles/655299/
== Компрессия (видео 15) | Теория информации
https://youtu.be/tOSI5IjomN0
https://youtu.be/tOSI5IjomN0
YouTube
Компрессия (видео 15) | Теория информации | Программирование
#ПрограммированиеJavaScript
Чем ограничена компрессия данных?
Следующее видео: https://www.youtube.com/watch?v=bSIDrbtQlDw&list=PLxGo9dxQkqWA3LPdLogAWG1-NKzEcpZZL&index=16
Предыдущее видео: https://www.youtube.com/watch?v=e8GzCI8LMYA&list=PLxGo9dxQkqWA3LPdLogAWG1…
Чем ограничена компрессия данных?
Следующее видео: https://www.youtube.com/watch?v=bSIDrbtQlDw&list=PLxGo9dxQkqWA3LPdLogAWG1-NKzEcpZZL&index=16
Предыдущее видео: https://www.youtube.com/watch?v=e8GzCI8LMYA&list=PLxGo9dxQkqWA3LPdLogAWG1…
== Цепи Маркова
https://youtu.be/FROlGrwo-oo
если каждое состояние автомата достижимо то отношение исходов стремится к равновесию. количество песещений каждого состоянию будет стремиться к предсказуемой вероятности.
само представление о последовательности случайных состояний в виде состояний и переходов между ними называется цепью Маркова
== Математическая теория связи
https://youtu.be/o8wHGn8_zao
.
https://youtu.be/FROlGrwo-oo
если каждое состояние автомата достижимо то отношение исходов стремится к равновесию. количество песещений каждого состоянию будет стремиться к предсказуемой вероятности.
само представление о последовательности случайных состояний в виде состояний и переходов между ними называется цепью Маркова
== Математическая теория связи
https://youtu.be/o8wHGn8_zao
.
YouTube
Цепи Маркова (видео 12) | Теория информации | Программирование
#ПрограммированиеJavaScript
Цепь Маркова — последовательность случайных событий, в которой вероятность наступления каждого события зависит от состояния, достигнутого в предыдущем событии.
Следующее видео: https://www.youtube.com/watch?v=o8wHGn8_zao&list=…
Цепь Маркова — последовательность случайных событий, в которой вероятность наступления каждого события зависит от состояния, достигнутого в предыдущем событии.
Следующее видео: https://www.youtube.com/watch?v=o8wHGn8_zao&list=…
== Коды с обнаружением ошибок
https://youtu.be/Fm0jfvzyM54
FEC - Forward error correction
- увеличение битов четности
- код хэмминга
- коды рида-соломона
- циклический избыточный код (CRC) - только для детектирования ошибок
Простые Биты четности = надежно но оч мусорно
на 8 бит имеет 6 бит избыточных
коды хэмминга
7,4 15,11 31,26
исправляют одну ошибку
обнаруживает две ошибки
2-4=>3изб
5-11=>4изб
12-26=>5изб
27-57=>6изб
Циклический избыточный код (CRC)
- добавляется CRC-size нулей
- XOR первых бит инф размером в полином CRC
- первые нули отбрасываются и сдвигается.
- повторяется с п2 до заполнения размерности CRC
Коды Рида-Соломона
Кодирование:
- умножение на полином G(x) (берется из полей Голуа)
- добавляется 2т нулей
- деление на G(x)
- остатоок от деленения и есть RS-код
Декодирование:
- деление на G(x)
- ЕСЛИ остаток равен 0 ТО нет ошибок
= МИНУС - ВЫСОКИЕ ЗАТРАТЫ РЕСУРСОВ
https://youtu.be/Fm0jfvzyM54
FEC - Forward error correction
- увеличение битов четности
- код хэмминга
- коды рида-соломона
- циклический избыточный код (CRC) - только для детектирования ошибок
Простые Биты четности = надежно но оч мусорно
на 8 бит имеет 6 бит избыточных
коды хэмминга
7,4 15,11 31,26
исправляют одну ошибку
обнаруживает две ошибки
2-4=>3изб
5-11=>4изб
12-26=>5изб
27-57=>6изб
Циклический избыточный код (CRC)
- добавляется CRC-size нулей
- XOR первых бит инф размером в полином CRC
- первые нули отбрасываются и сдвигается.
- повторяется с п2 до заполнения размерности CRC
Коды Рида-Соломона
Кодирование:
- умножение на полином G(x) (берется из полей Голуа)
- добавляется 2т нулей
- деление на G(x)
- остатоок от деленения и есть RS-код
Декодирование:
- деление на G(x)
- ЕСЛИ остаток равен 0 ТО нет ошибок
= МИНУС - ВЫСОКИЕ ЗАТРАТЫ РЕСУРСОВ
== SPI- и I2C-интерфейсы
https://youtu.be/hp1UoVd37AY
Serial Peripheral Interface
- Полный дуплекс
- распределенный кольцевой регистор
MISO - Master In Slave Out
MOSI - Master Out Slave In
SCK - Serial Clock
SS - Slave Select (chip select) - one own wire for each slave
- могут быть подключены независимо = все читают все биты к любом слэйву но реагируют пока нет SS
- могут быть каскадное (кольцевое), передается через каждое устройство последовательно (медленно)
= МИНУС: ОТСУТСТВУЕТ КОНТРОЛЬ НА ЛИНИИ (в случае разрыва MISO или MOSI не понятно это устройство отдает или порван провод) - нужно кодирование !
= МИНУС: НЕВЫСОКАЯ ДАЛЬНОСТЬ ПЕРЕДАЧИ
I2C - Inter Integrated Circuit
SDA - DATA
SCL - CLOCK
- до 400кбсек
- сигнал может меняться только когда клок = 0
- у каждого устройства свой 7бит адрес
- на передачу нужно всегда 9бит
- СТАРТ_АДРЕС_0 - передача ИЛИ СТАРТ_АДРЕС_1 - считывание
- ACK
- 8 байт данных
- ACK (или остановка получения)
- 8 байт данные
....
ПЛЮС: можно менять устройства на горячую
ПЛЮС: простота
ПЛЮС: высокая распространенность
ПЛЮС: 2 провода всего
МИНУС: полудуплекс
МИНУС: каждый байт надо подтверждать
МИНУС: низкоскоростная сеть
МИНУС: ограничение это емкость ! максимум 400пф
МИНУС: при нуле ест батарейку
МИНУС: если одно из устройств в сети здохло - вся сеть здохла
МИНУС: бывает очень сложно выйти из блокировки для большого числа МК
https://youtu.be/hp1UoVd37AY
Serial Peripheral Interface
- Полный дуплекс
- распределенный кольцевой регистор
MISO - Master In Slave Out
MOSI - Master Out Slave In
SCK - Serial Clock
SS - Slave Select (chip select) - one own wire for each slave
- могут быть подключены независимо = все читают все биты к любом слэйву но реагируют пока нет SS
- могут быть каскадное (кольцевое), передается через каждое устройство последовательно (медленно)
= МИНУС: ОТСУТСТВУЕТ КОНТРОЛЬ НА ЛИНИИ (в случае разрыва MISO или MOSI не понятно это устройство отдает или порван провод) - нужно кодирование !
= МИНУС: НЕВЫСОКАЯ ДАЛЬНОСТЬ ПЕРЕДАЧИ
I2C - Inter Integrated Circuit
SDA - DATA
SCL - CLOCK
- до 400кбсек
- сигнал может меняться только когда клок = 0
- у каждого устройства свой 7бит адрес
- на передачу нужно всегда 9бит
- СТАРТ_АДРЕС_0 - передача ИЛИ СТАРТ_АДРЕС_1 - считывание
- ACK
- 8 байт данных
- ACK (или остановка получения)
- 8 байт данные
....
ПЛЮС: можно менять устройства на горячую
ПЛЮС: простота
ПЛЮС: высокая распространенность
ПЛЮС: 2 провода всего
МИНУС: полудуплекс
МИНУС: каждый байт надо подтверждать
МИНУС: низкоскоростная сеть
МИНУС: ограничение это емкость ! максимум 400пф
МИНУС: при нуле ест батарейку
МИНУС: если одно из устройств в сети здохло - вся сеть здохла
МИНУС: бывает очень сложно выйти из блокировки для большого числа МК
YouTube
2. SPI- и I2C-интерфейсы
== Код Хэмминга. Коррекция ошибок
https://youtu.be/jHbc3042vuc
Я ХРЕНЕЮ в мобильной сети на 64 бит информации 76 избыточные-контрольные
чем меньше ошибок - тем лучше качество - инженерная хитрость
неприрывный контроль качества - задача мобильной сети. контроллер-координатор базовых станций говорит какая базовая станция будет принимать конкретный телефон. по метрике ошибок от девайса
https://youtu.be/jHbc3042vuc
Я ХРЕНЕЮ в мобильной сети на 64 бит информации 76 избыточные-контрольные
чем меньше ошибок - тем лучше качество - инженерная хитрость
неприрывный контроль качества - задача мобильной сети. контроллер-координатор базовых станций говорит какая базовая станция будет принимать конкретный телефон. по метрике ошибок от девайса
YouTube
Код Хэмминга. Коррекция ошибок
Корректирующие коды находят применение порой в самых неожиданных местах. Как с этим всем связана эстафетная передача сигнала?
Статьи на Яндекс Дзен: https://zen.yandex.ru/id/5ebe63d184a8a27314377e2b
Частотная модуляция: https://youtu.be/_-T0NRi0lSM
FM демодулятор:…
Статьи на Яндекс Дзен: https://zen.yandex.ru/id/5ebe63d184a8a27314377e2b
Частотная модуляция: https://youtu.be/_-T0NRi0lSM
FM демодулятор:…
короч советую канал
Академия разработчиков
https://www.youtube.com/channel/UCgzmIWuaCfpTpx3LuQ2dHEg/videos
тут много обзоров на технологии связи, ЦОС, алгоритмы, архитектуры, и другое, я залип нафиг
Академия разработчиков
https://www.youtube.com/channel/UCgzmIWuaCfpTpx3LuQ2dHEg/videos
тут много обзоров на технологии связи, ЦОС, алгоритмы, архитектуры, и другое, я залип нафиг
== Тактовая синхронизация
https://youtu.be/HGFl5P9ThR8
- внеканальная синхронизация - отдельный провод синхронизации
- внутриканальная синхронизация
фазовый рассинхрон - беда в сети. секундомер не поможет если ты отсчет взял не от туда
приемник никогда не угадает частоту отправителя - т.к. есть уход опорных генераторов что у приемника, что у отправителя
= снос параметра
подходит и для оптоволокна и для коаксиального кабеля
https://youtu.be/HGFl5P9ThR8
- внеканальная синхронизация - отдельный провод синхронизации
- внутриканальная синхронизация
фазовый рассинхрон - беда в сети. секундомер не поможет если ты отсчет взял не от туда
приемник никогда не угадает частоту отправителя - т.к. есть уход опорных генераторов что у приемника, что у отправителя
= снос параметра
подходит и для оптоволокна и для коаксиального кабеля
YouTube
Тактовая синхронизация
Если не знать точное время прихода бита, то невозможно судить о том. какой это был бит. Один из важнейших вопросов в передаче данных.
Статьи на Яндекс.Дзен: https://zen.yandex.ru/id/5ebe63d184a8a27314377e2b
Коррелятор: https://youtu.be/gxRXCF3YD9k
ПИ-регулятор:…
Статьи на Яндекс.Дзен: https://zen.yandex.ru/id/5ebe63d184a8a27314377e2b
Коррелятор: https://youtu.be/gxRXCF3YD9k
ПИ-регулятор:…
== Don't Do This FOR POSTGRES
https://wiki.postgresql.org/wiki/Don%27t_Do_This
шикарный однако сборник
https://wiki.postgresql.org/wiki/Don%27t_Do_This
шикарный однако сборник
== 98.AWS - Secrets Manager - Хранение Секретов - Типа Vault на AWS
https://www.youtube.com/watch?v=crRdbDhiTc8
не юзайте AWS Secrets Manager, т.к. $0.40 в месяц на секрет
юзайте SSM - здравый смысл говорит юзать это =)
но оно дает
- автоматический рефреш секретов и для базы и для юзающего эту базу
- можно сохранять много серкетов в одном жсон формате
https://www.youtube.com/watch?v=crRdbDhiTc8
не юзайте AWS Secrets Manager, т.к. $0.40 в месяц на секрет
юзайте SSM - здравый смысл говорит юзать это =)
но оно дает
- автоматический рефреш секретов и для базы и для юзающего эту базу
- можно сохранять много серкетов в одном жсон формате
YouTube
AWS - Secrets Manager - Хранение Секретов - Типа Vault на AWS
#aws #девопс #devops
AWS - Secrets Manager - Хранение Секретов
aws secretsmanager list-secrets
aws secretsmanager get-secret-value --secret-id /prod/mygame/tokenn
aws secretsmanager get-secret-value --secret-id /prod/mygame/tokenn --output text --query…
AWS - Secrets Manager - Хранение Секретов
aws secretsmanager list-secrets
aws secretsmanager get-secret-value --secret-id /prod/mygame/tokenn
aws secretsmanager get-secret-value --secret-id /prod/mygame/tokenn --output text --query…
== Архитектура x86. Уверены, что знаете свой домашний компьютер?
https://youtu.be/sQc4-omMKGA
https://youtu.be/sQc4-omMKGA
YouTube
Архитектура x86. Уверены, что знаете свой домашний компьютер?
История маркетингового успеха и инженерной боли с картинками и техническими подробностями.
Статьи переезжают сюда: https://pulse.mail.ru/source/3768777279273129127
Процессор 8080: https://youtu.be/qRTgFXI0tOE
Процессор Motorola 68K: https://youtu.be/N1Guluj3P08…
Статьи переезжают сюда: https://pulse.mail.ru/source/3768777279273129127
Процессор 8080: https://youtu.be/qRTgFXI0tOE
Процессор Motorola 68K: https://youtu.be/N1Guluj3P08…
я чтото влез по ушки в матстат и тервер. решил задачки порешать. и вот задачка которая разорвала мне мозги и тут континтуитивное решение
== Парадокс Монти Холла
https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%B4%D0%BE%D0%BA%D1%81_%D0%9C%D0%BE%D0%BD%D1%82%D0%B8_%D0%A5%D0%BE%D0%BB%D0%BB%D0%B0
Если мы меняем дверь, то проигрываем только в том случае, если сначала выбрали призовую дверь, вероятность чего 1:1000. Выигрываем же мы в том случае, если наш изначальный выбор был неправильным, а вероятность этого — 999 из 1000.
== Парадокс Монти Холла
https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%B4%D0%BE%D0%BA%D1%81_%D0%9C%D0%BE%D0%BD%D1%82%D0%B8_%D0%A5%D0%BE%D0%BB%D0%BB%D0%B0
Если мы меняем дверь, то проигрываем только в том случае, если сначала выбрали призовую дверь, вероятность чего 1:1000. Выигрываем же мы в том случае, если наш изначальный выбор был неправильным, а вероятность этого — 999 из 1000.
Короч надо юзать
== Introducing NGINX Service Mesh
https://www.nginx.com/blog/introducing-nginx-service-mesh/
- Mutual TLS (mTLS) authentication
- Load balancing
- High availability
- Rate limiting
- Circuit breaking
- Blue‑green and canary deployments
- Access controls
== NGINX Spotlight: Microservices
https://youtu.be/gSjJLkvH6Yo
== How to Use NGINX Service Mesh for Traffic Splitting
https://youtu.be/eurCM8csJEw
== Introducing NGINX Service Mesh
https://youtu.be/UeirSL7V6ZM
- secure traffic
- orchestration
- traffic management (circuit breaker, load balance, rate limiting)
- traffic measurement
== Getting Started with NGINX Service Mesh
https://youtu.be/-uxqYSuEgT4
== How to use NGINX Service Mesh for Secure Access Control
https://youtu.be/KVjvTjCgEKw
== How to Choose a Service Mesh
https://www.nginx.com/blog/how-to-choose-a-service-mesh/
== NGINX Service Mesh
Tutorials
https://docs.nginx.com/nginx-service-mesh/tutorials/
== Introducing NGINX Instance Manager
https://youtu.be/N4sgIQ8ZG9A
NGINX Service Mesh. оно стабильно наконец! и заметно проще чем все остальное == Introducing NGINX Service Mesh
https://www.nginx.com/blog/introducing-nginx-service-mesh/
- Mutual TLS (mTLS) authentication
- Load balancing
- High availability
- Rate limiting
- Circuit breaking
- Blue‑green and canary deployments
- Access controls
== NGINX Spotlight: Microservices
https://youtu.be/gSjJLkvH6Yo
== How to Use NGINX Service Mesh for Traffic Splitting
https://youtu.be/eurCM8csJEw
== Introducing NGINX Service Mesh
https://youtu.be/UeirSL7V6ZM
- secure traffic
- orchestration
- traffic management (circuit breaker, load balance, rate limiting)
- traffic measurement
== Getting Started with NGINX Service Mesh
https://youtu.be/-uxqYSuEgT4
== How to use NGINX Service Mesh for Secure Access Control
https://youtu.be/KVjvTjCgEKw
== How to Choose a Service Mesh
https://www.nginx.com/blog/how-to-choose-a-service-mesh/
== NGINX Service Mesh
Tutorials
https://docs.nginx.com/nginx-service-mesh/tutorials/
== Introducing NGINX Instance Manager
https://youtu.be/N4sgIQ8ZG9A
NGINX
Introducing NGINX Service Mesh - NGINX
NGINX Service Mesh (NSM) is now available in a development release -- download it for free and give us your feedback! NSM is a fully integrated lightweight service mesh that leverages a data plane powered by NGINX Plus to manage container traffic in Kubernetes…