Шаблоны проектирования для архитектуры микросервисов
(описание в следующем посте)
(описание в следующем посте)
Шаблоны проектирования для архитектуры микросервисов:
(описание к предыдущему посту)
1. Шаблоны декомпозиции:
- Decompose by Business Capability (Декомпозиция по бизнес-возможностям).
- Decompose by Subdomain (Декомпозиция по поддоменам).
- Decompose by Transactions (Декомпозиция по транзакциям).
- Strangler Pattern (Шаблон strangler).
- Bulkhead Pattern (Шаблон bulkhead).
- Sidecar Pattern (Шаблон sidecar).
2. Шаблоны интеграции:
- API Gateway (Шлюз API).
- Aggregator Pattern (Шаблон агрегатора).
- Proxy Pattern (Шаблон прокси).
- Gateway Routing Pattern (Шаблон маршрутизации шлюза).
- Chained Microservice Pattern (Шаблон цепочек микросервисов).
- Branch Pattern (Шаблон ветвления).
- Client-side UI Composition Pattern (Шаблон композиции пользовательского интерфейса на стороне клиента).
3. Шаблоны базы данных:
- Database Per Service (База данных на сервис).
- Shared Database per Service (Общая база данных на сервис).
- CQRS (Command Query Responsibility Segregation).
- Event Sourcing (Обработка событий).
- Saga Pattern (Шаблон saga).
4. Шаблоны наблюдаемости:
- Log Aggregation (Агрегация логов).
- Performance Metrics (Метрики производительности).
- Distributed Tracing (Распределенное отслеживание).
- Health Check (Проверка работоспособности).
5. Шаблоны сквозного применения:
- External Configuration (Внешняя конфигурация).
- Service Discovery Pattern (Шаблон обнаружения сервисов).
- Circuit Breaker Pattern (Шаблон предохранителя).
- Blue-Green Deployment Pattern (Шаблон сине-зеленого развертывания).
(описание к предыдущему посту)
1. Шаблоны декомпозиции:
- Decompose by Business Capability (Декомпозиция по бизнес-возможностям).
- Decompose by Subdomain (Декомпозиция по поддоменам).
- Decompose by Transactions (Декомпозиция по транзакциям).
- Strangler Pattern (Шаблон strangler).
- Bulkhead Pattern (Шаблон bulkhead).
- Sidecar Pattern (Шаблон sidecar).
2. Шаблоны интеграции:
- API Gateway (Шлюз API).
- Aggregator Pattern (Шаблон агрегатора).
- Proxy Pattern (Шаблон прокси).
- Gateway Routing Pattern (Шаблон маршрутизации шлюза).
- Chained Microservice Pattern (Шаблон цепочек микросервисов).
- Branch Pattern (Шаблон ветвления).
- Client-side UI Composition Pattern (Шаблон композиции пользовательского интерфейса на стороне клиента).
3. Шаблоны базы данных:
- Database Per Service (База данных на сервис).
- Shared Database per Service (Общая база данных на сервис).
- CQRS (Command Query Responsibility Segregation).
- Event Sourcing (Обработка событий).
- Saga Pattern (Шаблон saga).
4. Шаблоны наблюдаемости:
- Log Aggregation (Агрегация логов).
- Performance Metrics (Метрики производительности).
- Distributed Tracing (Распределенное отслеживание).
- Health Check (Проверка работоспособности).
5. Шаблоны сквозного применения:
- External Configuration (Внешняя конфигурация).
- Service Discovery Pattern (Шаблон обнаружения сервисов).
- Circuit Breaker Pattern (Шаблон предохранителя).
- Blue-Green Deployment Pattern (Шаблон сине-зеленого развертывания).
Telegram
METANIT.COM
Шаблоны проектирования для архитектуры микросервисов
🔥5❤3👏1
This media is not supported in your browser
VIEW IN TELEGRAM
В то время, как одни советуют не идти в программирование и разработку, так как ИИ якобы отберет рабочие места у разработчиков и сделает их труд не нужным,
известный исследователь в области ML/AI а также автор многочисленных курсов по этой теме - Andrew Yan-Tak Ng (изветсный как AndrewYNg) объясняет, почему нам нужно больше программистов, а не меньше.
“A fresh college grad on top of AI can outperform a full-stack engineer with 10 yrs of experience that is still doing things as they were back in 2022.”
«Недавний выпускник колледжа, освоивший ИИ, может превзойти инженера полного цикла с 10-летним опытом, который все еще работает так же, как и в 2022 году».
известный исследователь в области ML/AI а также автор многочисленных курсов по этой теме - Andrew Yan-Tak Ng (изветсный как AndrewYNg) объясняет, почему нам нужно больше программистов, а не меньше.
“A fresh college grad on top of AI can outperform a full-stack engineer with 10 yrs of experience that is still doing things as they were back in 2022.”
«Недавний выпускник колледжа, освоивший ИИ, может превзойти инженера полного цикла с 10-летним опытом, который все еще работает так же, как и в 2022 году».
🤣22🤡13😁3❤2👏1
Сравнение времени выполнения вложенных циклов для различных языков программирования.
Исходники для всех языков - https://github.com/bddicken/languages/tree/main/loops
Исходники для всех языков - https://github.com/bddicken/languages/tree/main/loops
😱20😁9😭4👎3👏1
В руководство по языку Python добавил статью про функцию zip
https://metanit.com/python/tutorial/3.9.php
#python
https://metanit.com/python/tutorial/3.9.php
#python
👍8🔥2😱2🤮2👏1🎉1
Microsoft выпустила новое предупреждение для пользователей Windows, которые хотят установить браузер Google Chrome, призывая их пользоваться более безопасным способом просмотра веб-страниц и предлагая Edge в качестве безопасной альтернативы.
Теперь при попытке установить браузер Chrome появляется сообщение:
«Microsoft Edge работает на той же технологии, что и Chrome, но при этом пользуется доверием Microsoft».
https://wccftech.com/microsoft-issues-bold-warning-stop-using-google-chrome-on-windows-and-switch-to-edge/
PS. На месте Microsoft я бы не был уверен, что доверие Microsoft - это плюс.
Теперь при попытке установить браузер Chrome появляется сообщение:
«Microsoft Edge работает на той же технологии, что и Chrome, но при этом пользуется доверием Microsoft».
https://wccftech.com/microsoft-issues-bold-warning-stop-using-google-chrome-on-windows-and-switch-to-edge/
PS. На месте Microsoft я бы не был уверен, что доверие Microsoft - это плюс.
😁55🤡13🤣9🤪2😎2😭1
Консольный тетрис на PHP
Под впечатлением от фильма "Тетрис", энтузиаст решил написать эту игру на РНР, чтобы попрактиковаться в работе с терминалом.
Исходник - https://gist.github.com/al3rez/e43f4bc86e50a79fca14529d4f2f2b8c
#php
Под впечатлением от фильма "Тетрис", энтузиаст решил написать эту игру на РНР, чтобы попрактиковаться в работе с терминалом.
Исходник - https://gist.github.com/al3rez/e43f4bc86e50a79fca14529d4f2f2b8c
#php
Gist
I made a 30fps CLI Tetris game in PHP after watching the Tetris movie
I made a 30fps CLI Tetris game in PHP after watching the Tetris movie - tetris.php
👍8😁5😨2🔥1👏1
Предсказуемые обращения к памяти значительно быстрее
Загрузка данных из памяти часто занимает несколько наносекунд. Пока процессор ожидает данные, он может простаивать, не выполняя полезную работу. Аппаратные блоки предварительной выборки современных процессоров предсказывают доступ к памяти, загружая данные в кэш заранее, что оптимизирует производительность. Их эффективность зависит от шаблона обращений: последовательные чтения выигрывают от эффективной предзагрузки, в отличие от случайных запросов.
Для примера на скриншоте приведены 5 примеров доступа к элементам большого массива 32-разрядных целых чисел размером 64 Мбайта (в программе на Go)
1) Последовательный доступ (Seq): считываются каждые 8 элементов подряд.
2) Случайный доступ (Random): считываются каждые 8 элементов в произвольном порядке.
3) Обратный доступ (Backward): считываются каждые 8 элементов с конца массива.
4) Перемежающийся доступ (Interleaved): считываются каждые 8 элементов, начиная с первого, третьего, второго и далее.
5) "Перепрыгивающий" доступ (Bouncing): считываются каждые 8 элементов, начиная с первого, последнего, второго, предпоследнего и так далее.
Можно увидеть, что случайный доступ работает гораздо медленнее, чем остальные варианты, что наглядно демонстрирует, насколько хорошо процессоры умеют предсказывать обращение к данным и что следует учитывать при работе с данными
Загрузка данных из памяти часто занимает несколько наносекунд. Пока процессор ожидает данные, он может простаивать, не выполняя полезную работу. Аппаратные блоки предварительной выборки современных процессоров предсказывают доступ к памяти, загружая данные в кэш заранее, что оптимизирует производительность. Их эффективность зависит от шаблона обращений: последовательные чтения выигрывают от эффективной предзагрузки, в отличие от случайных запросов.
Для примера на скриншоте приведены 5 примеров доступа к элементам большого массива 32-разрядных целых чисел размером 64 Мбайта (в программе на Go)
1) Последовательный доступ (Seq): считываются каждые 8 элементов подряд.
2) Случайный доступ (Random): считываются каждые 8 элементов в произвольном порядке.
3) Обратный доступ (Backward): считываются каждые 8 элементов с конца массива.
4) Перемежающийся доступ (Interleaved): считываются каждые 8 элементов, начиная с первого, третьего, второго и далее.
5) "Перепрыгивающий" доступ (Bouncing): считываются каждые 8 элементов, начиная с первого, последнего, второго, предпоследнего и так далее.
Можно увидеть, что случайный доступ работает гораздо медленнее, чем остальные варианты, что наглядно демонстрирует, насколько хорошо процессоры умеют предсказывать обращение к данным и что следует учитывать при работе с данными
Telegram
METANIT.COM
👍11🤔4🤓1
Схемы маршрутизации
(описание к предыдущему посту)
Broadcast (широковещание)
Использует одноадресную связь, где один отправитель передает пакет всем узлам в сегменте сети. Сеть реплицирует пакет по мере необходимости для достижения каждого устройства в подсети. Часто используется в локальных сетях для таких задач, как запросы ARP или обнаружение DHCP.
Unicast (одноадресная передача)
Использует одноадресную связь между отправителем и одним конкретным получателем. Каждый пакет отправляется непосредственно одному уникальному получателю, идентифицированному по его адресу. Используется в повседневных задачах, таких как посещение веб-сайта или отправка электронной почты одному человеку.
Anycast
Использует одноадресную связь с одним или несколькими получателями. Отправитель отправляет пакет одному получателю, выбранному из группы, которая разделяет один и тот же адрес. Сеть доставляет его ближайшему или наиболее оптимальному узлу на основе стоимости маршрутизации или предпочтений. Используется в DNS и CDN-сервисах для повышения скорости и надежности за счет достижения ближайшего сервера.
Multicast (многоадресная передача)
Использует одноадресную связь с одним или несколькими получателями. Отправитель передает один пакет множеству получателей, которые присоединились к определенной многоадресной группе. Только заинтересованные узлы получают сообщение. Полезно в потоковой передаче (например, IPTV), где только заинтересованные устройства получают данные. Также используется в маршрутных протоколах, таких как OSPF (использует 224.0.0.5 для маршрутизаторов OSPF), EIGRP (использует 224.0.0.10 для всех маршрутизаторов EIGRP), PIM (использует 224.0.0.13 для маршрутизаторов PIM).
(описание к предыдущему посту)
Broadcast (широковещание)
Использует одноадресную связь, где один отправитель передает пакет всем узлам в сегменте сети. Сеть реплицирует пакет по мере необходимости для достижения каждого устройства в подсети. Часто используется в локальных сетях для таких задач, как запросы ARP или обнаружение DHCP.
Unicast (одноадресная передача)
Использует одноадресную связь между отправителем и одним конкретным получателем. Каждый пакет отправляется непосредственно одному уникальному получателю, идентифицированному по его адресу. Используется в повседневных задачах, таких как посещение веб-сайта или отправка электронной почты одному человеку.
Anycast
Использует одноадресную связь с одним или несколькими получателями. Отправитель отправляет пакет одному получателю, выбранному из группы, которая разделяет один и тот же адрес. Сеть доставляет его ближайшему или наиболее оптимальному узлу на основе стоимости маршрутизации или предпочтений. Используется в DNS и CDN-сервисах для повышения скорости и надежности за счет достижения ближайшего сервера.
Multicast (многоадресная передача)
Использует одноадресную связь с одним или несколькими получателями. Отправитель передает один пакет множеству получателей, которые присоединились к определенной многоадресной группе. Только заинтересованные узлы получают сообщение. Полезно в потоковой передаче (например, IPTV), где только заинтересованные устройства получают данные. Также используется в маршрутных протоколах, таких как OSPF (использует 224.0.0.5 для маршрутизаторов OSPF), EIGRP (использует 224.0.0.10 для всех маршрутизаторов EIGRP), PIM (использует 224.0.0.13 для маршрутизаторов PIM).
Telegram
METANIT.COM
Схемы маршрутизации
👍8🔥4❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Дерево процессов в Windows, запускаемых при старте системы #windows
✍29👍11🔥6❤3🙏1🫡1
В руководство по языку Python добавлена статья про Модуль pdb и отладку программы
https://metanit.com/python/tutorial/6.11.php
#python
https://metanit.com/python/tutorial/6.11.php
#python
🔥7😐4👀2❤1❤🔥1👍1👏1🤮1🥱1
Основные типы серверов
(описание к предыдущему посту)
Веб-сервер
- Хостинг и обслуживание веб-страниц и веб-приложений для клиентов.
- Обрабатывает HTTP-запросы от веб-браузеров и доставляет HTML-контент.
- Поддерживает различные технологии, такие как PHP, ASP.NET или Node.js.
- Предоставляет меры безопасности, такие как SSL-сертификаты для зашифрованной связи.
Почтовый сервер
- Обеспечивает отправку, получение и хранение электронных сообщений.
- Использует протоколы, такие как SMTP, POP3 или IMAP для обработки передачи электронной почты.
- Хранит электронные письма в пользовательских почтовых ящиках и позволяет доступ через почтовые клиенты или веб-интерфейсы.
- Реализует функции фильтрации спама, антивирусного сканирования и механизмов аутентификации для безопасности электронной почты.
Сервер баз данных
- Управляет и хранит структурированные данные, обеспечивая эффективное извлечение и управление данными.
- Поддерживает языки запросов, такие как SQL для управления и извлечения данных.
- Предоставляет функции, такие как целостность данных, управление транзакциями и контроль доступа.
- Предлагает опции масштабирования для обработки больших объемов данных и одновременных подключений.
DNS-сервер
- Преобразует доменные имена (например, www.example.com) в IP-адреса (например, 192.168.1.1).
- Обрабатывает запросы от клиентов, направляя их на соответствующий IP-адрес.
- Реализует кэширование для улучшения времени отклика на запросы и снижения сетевого трафика.
- Поддерживает передачу зон между DNS-серверами для синхронизации и распределения записей доменов.
Файловый сервер
- Централизованное хранение и управление файлами для файловых серверов в сети.
- Позволяет клиентам получать доступ к общим файлам и папкам через сетевое соединение.
- Реализует контроль доступа для обеспечения разрешений и поддержания безопасности.
- Поддерживает функции, такие как блокировка файлов, версия файлов и резервное копирование для обеспечения целостности данных.
FTP-сервер
- Обеспечивает передачу файлов между клиентом и сервером с использованием протокола передачи файлов (FTP).
- Предоставляет аутентификацию пользователей и контроль доступа для безопасной передачи файлов.
- Поддерживает загрузку, скачивание и управление файлами и папками.
- Может использоваться для публичного распространения файлов или как частный репозиторий файлов.
DHCP-сервер
- Протокол динамической конфигурации хоста (DHCP) позволяет устройствам в сети автоматически получать ключевые сетевые настройки, такие как IP-адрес, маска подсети, шлюз по умолчанию и информация о DNS-сервере, без необходимости ручной настройки этих параметров.
(описание к предыдущему посту)
Веб-сервер
- Хостинг и обслуживание веб-страниц и веб-приложений для клиентов.
- Обрабатывает HTTP-запросы от веб-браузеров и доставляет HTML-контент.
- Поддерживает различные технологии, такие как PHP, ASP.NET или Node.js.
- Предоставляет меры безопасности, такие как SSL-сертификаты для зашифрованной связи.
Почтовый сервер
- Обеспечивает отправку, получение и хранение электронных сообщений.
- Использует протоколы, такие как SMTP, POP3 или IMAP для обработки передачи электронной почты.
- Хранит электронные письма в пользовательских почтовых ящиках и позволяет доступ через почтовые клиенты или веб-интерфейсы.
- Реализует функции фильтрации спама, антивирусного сканирования и механизмов аутентификации для безопасности электронной почты.
Сервер баз данных
- Управляет и хранит структурированные данные, обеспечивая эффективное извлечение и управление данными.
- Поддерживает языки запросов, такие как SQL для управления и извлечения данных.
- Предоставляет функции, такие как целостность данных, управление транзакциями и контроль доступа.
- Предлагает опции масштабирования для обработки больших объемов данных и одновременных подключений.
DNS-сервер
- Преобразует доменные имена (например, www.example.com) в IP-адреса (например, 192.168.1.1).
- Обрабатывает запросы от клиентов, направляя их на соответствующий IP-адрес.
- Реализует кэширование для улучшения времени отклика на запросы и снижения сетевого трафика.
- Поддерживает передачу зон между DNS-серверами для синхронизации и распределения записей доменов.
Файловый сервер
- Централизованное хранение и управление файлами для файловых серверов в сети.
- Позволяет клиентам получать доступ к общим файлам и папкам через сетевое соединение.
- Реализует контроль доступа для обеспечения разрешений и поддержания безопасности.
- Поддерживает функции, такие как блокировка файлов, версия файлов и резервное копирование для обеспечения целостности данных.
FTP-сервер
- Обеспечивает передачу файлов между клиентом и сервером с использованием протокола передачи файлов (FTP).
- Предоставляет аутентификацию пользователей и контроль доступа для безопасной передачи файлов.
- Поддерживает загрузку, скачивание и управление файлами и папками.
- Может использоваться для публичного распространения файлов или как частный репозиторий файлов.
DHCP-сервер
- Протокол динамической конфигурации хоста (DHCP) позволяет устройствам в сети автоматически получать ключевые сетевые настройки, такие как IP-адрес, маска подсети, шлюз по умолчанию и информация о DNS-сервере, без необходимости ручной настройки этих параметров.
Telegram
METANIT.COM
Основные типы серверов
(описание в следующем посте)
(описание в следующем посте)
🔥12❤🔥5🤔4❤1