PHP | Вопросы собесов
Open in Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
Show more2 341
Subscribers
-224 hours
-57 days
-2330 days
Posts Archive
Бесплатная неделя в онлайн-школе программирования!
Вы хотите, чтобы ваш ребенок развивал навыки будущего и уверенно шагал к успеху? Познакомьте его с миром IT в нашей уникальной школе!
🎓 Что мы предлагаем?
- Пробный урок с лучшими педагогами
- Доступ в международное IT сообщество детей в Discord
- Уникальная игровая валюта Rocket Coins
- Проектная работа и защита перед наставником
Для детей от 5 до 17 лет
Занятия на выборе: RU, ENG, ES
Мы работаем круглосуточно и подберем удобное для вас время занятий. Доверьтесь нашему опыту: у нас более 3,000 учеников из 50 стран!
Узнать больше
#реклама 16+
rts.school
О рекламодателе
🤔 Что делать , если база данных в файле SQL на миллион 155 тысяч кода с помощью инструментов не вставляется?
Если у вас есть SQL-файл с более чем миллионом строк кода и вы сталкиваетесь с проблемами при его импортировании в базу данных с помощью стандартных инструментов (например, phpMyAdmin или утилиты командной строки
mysql), можно воспользоваться несколькими подходами для успешного выполнения этой задачи. Вот несколько методов и стратегий, которые можно использовать:
🚩Разделение SQL-файла на части
Разделение большого SQL-файла на более мелкие части может помочь избежать ошибок, связанных с ограничениями памяти или времени выполнения.
🚩Инструменты
🟠MySQL Workbench
Поддерживает импорт данных по частям.
🟠SQL Dump Splitter
Скрипты и утилиты для разделения больших SQL-файлов.
🚩Шаги
1⃣Разделите файл на более мелкие части, например, по 100 тысяч строк.
2⃣Импортируйте каждую часть отдельно.
split -l 100000 large_file.sql small_file_
3⃣Использование командной строки MySQL
Командная строка MySQL часто более устойчива к большим объемам данных по сравнению с графическими интерфейсами.
mysql -u username -p database_name < large_file.sql
🟠Настройка параметров сервера MySQL
Изменение параметров конфигурации MySQL может помочь справиться с большими файлами.
🟠Импорт по частям с помощью `mysql`
Если разбивать файл вручную неудобно, можно использовать инструмент sed или скрипты для импорта данных по частям.
# Предположим, что файл large_file.sql содержит строки INSERT для одной таблицы
sed -n '1,100000p' large_file.sql | mysql -u username -p database_name
sed -n '100001,200000p' large_file.sql | mysql -u username -p database_name
# И так далее...
🟠Использование утилиты `mysqlimport`
mysqlimport — это утилита для массовой загрузки данных в таблицы MySQL.
mysqlimport --local --user=username --password=password --fields-terminated-by=',' database_name large_file.csv
🟠Импорт с помощью `LOAD DATA INFILE`
Команда LOAD DATA INFILE позволяет быстро загружать данные из текстового файла в таблицу MySQL.
LOAD DATA INFILE '/path/to/large_file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
🟠Использование более мощных инструментов
Использование специализированных инструментов для работы с большими базами данных, таких как Percona Toolkit или MySQL Enterprise Backup, может значительно облегчить задачу.
pt-archiver --source h=localhost,D=database_name,t=table_name --file large_file.sql
Ставь 👍 и забирай 📚 Базу знаний🤔 Расскажи про полиморфизм
Полиморфизм в PHP позволяет объектам различных классов использоваться одинаково через общий интерфейс. Это достигается с помощью наследования, где классы могут переопределять методы базового класса, или через интерфейсы, обеспечивая унифицированную реализацию разных функций. Примером может служить метод, который вызывает `makeSound()` как на объектах `Dog`, так и `Cat`, обрабатывая их через один интерфейс `Animal`.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
+9
Помощь в трудоустройстве в IT-сфере!
В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно!
Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита.
Для этого нужно:
- Перейти по ссылке
- Заполнить анкету и ответить на вопросы (занимает менее 3 минут)
- На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать
Перейти на сайт
#реклама 16+
urban-university.ru
О рекламодателе
🤔 Какие инструменты и методики используете для отладки и профилирования PHP-приложений?
Для отладки и профилирования PHP-приложений существует множество инструментов и методик, которые помогают разработчикам находить и исправлять ошибки, а также оптимизировать производительность кода.
🚩Инструменты для отладки
🟠Xdebug
Это мощный расширение для PHP, которое предоставляет средства для отладки, профилирования, трассировки и анализа покрытия кода.
Пошаговая отладка (breakpoints, stack traces):
Трассировка выполнения скриптов
Генерация отчетов о покрытии кода
Профилирование производительности
Xdebug можно интегрировать с IDE (например, PhpStorm, Visual Studio Code) для интерактивной отладки.
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
🟠PHPStorm Debugger
Встроенный отладчик в IDE PhpStorm, который поддерживает интеграцию с Xdebug и Zend Debugger.
Интерактивная отладка с визуальными инструментами
Пошаговая отладка и просмотр значений переменных
Возможность установки точек останова (breakpoints)
🟠Laravel Telescope
Инструмент для мониторинга и отладки приложений, построенных на Laravel.
Мониторинг запросов HTTP
Запись выполненных команд Artisan
Мониторинг запросов к базе данных
Просмотр очередей задач, журналов и уведомлений
🚩Инструменты для профилирования
🟠Xdebug
Помимо отладки, Xdebug предоставляет средства для профилирования, что позволяет анализировать производительность кода. Генерация отчетов в формате Cachegrind. Отчеты профилирования можно анализировать с помощью инструмента KCachegrind.
xdebug.mode=profile
xdebug.output_dir=/path/to/profiles
🟠Blackfire
Платформа для профилирования производительности PHP-приложений.
Инструменты для анализа производительности в реальном времени
Интеграция с CI/CD для автоматического анализа производительности
Детализированные графики вызовов функций
Требуется установка агентской программы и расширения PHP.
blackfire run php script.php
🟠New Relic
Коммерческая платформа для мониторинга производительности приложений.
Мониторинг производительности серверов и приложений
Детализированный анализ времени выполнения запросов и использования ресурсов
Интеграция с различными языками программирования, включая PHP
Требуется установка агента New Relic на сервер.
🚩Методики для отладки и профилирования
🟠Логирование
Использование инструментов логирования, таких как Monolog, для записи детализированных логов выполнения кода. Пример использования Monolog в Laravel:
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$log = new Logger('name');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));
$log->warning('Foo');
$log->error('Bar');
🟠Тестирование
Написание и выполнение юнит-тестов с использованием PHPUnit для проверки корректности кода. Интеграция с CI/CD для автоматического запуска тестов при каждом изменении кода.
🟠Производительный аудит кода
Регулярный аудит кода для выявления потенциальных проблем с производительностью. Использование статических анализаторов, таких как PHPStan или Psalm, для автоматического анализа кода.
Ставь 👍 и забирай 📚 Базу знанийБесплатное IT-образование в 2024
Отобрали для вас полезные телеграм-каналы, которые помогут освоить программирование и другие IT-направления
Выбирайте нужное и подписывайтесь:
👩💻 Python: @PythonPortal
📱 GitHub: @git_developer
👩💻 Frontend: @FrontendPortal
🤓 Книги айти: @portalToIT
👩💻 Java: @Java_Iibrary
👩💻 C#: @KodBlog
👩💻 С/С++: @Cpportal
⚙️ Backend: @BackendPortal
🐞 Тестирование: @QAPortal
👩💻 DevOps: @loose_code
🖥 Базы Данных & SQL: @SQL
👩💻 Golang: @juniorGolang
👩💻 PHP: @PHPortal
👩💻 Моб. разработка: @MobDev
👩💻 Разработка игр: @GameDevgx
🖥 Data Science: @DataSciencegx
🤔 Хакинг & ИБ: @cybersecinform
📱 Маркетинг: @MarketingPortal
🖥 Дизайн: @PortalToDesign
➡️ Сохраняйте себе, чтобы не потерять
🤔 Какие паттерны знаешь?
В программировании и разработке ПО существует множество паттернов проектирования, включая:
- **Порождающие**: Singleton, Factory, Builder, Prototype.
- **Структурные**: Adapter, Decorator, Facade, Proxy, Bridge.
- **Поведенческие**: Observer, Strategy, Command, State, Template Method, Iterator, Mediator.
Эти паттерны помогают решать общие проблемы проектирования, повышая уровень абстракции и уменьшая связность компонентов?
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Обучение на Frontend-разработчика. С нуля за 9 месяцев.
На курсе вы получите все навыки, необходимые для старта в профессии Frontend-разработчика.
Персональный наставник middle/senior уровня.
14 проектов, лайвкодинг, хакатоны, репетиции техсобеседования.
Освоите JavaScript, React, TypeScript
Официальный диплом и сертификат школы.
Поддержка наставника по JS в течение 3-х месяцев после диплома.
Гарантия трудоустройства. Если вы не устроитесь, вернём деньги. Это закреплено в договоре п. 6.14
Узнать больше
#реклама 16+
result.school
О рекламодателе
🤔 Что такое php-fpm и FastCGI?
Это технологии, используемые для улучшения производительности веб-серверов и обработки PHP-скриптов.
🚩FastCGI
Это протокол для взаимодействия внешних приложений с веб-серверами. Он был разработан для преодоления недостатков CGI (Common Gateway Interface), таких как низкая производительность и ограниченная масштабируемость.
🟠Производительность
В отличие от CGI, который создаёт новый процесс для каждого запроса, FastCGI запускает несколько процессов и использует их повторно для обработки множества запросов. Это уменьшает накладные расходы на создание и завершение процессов.
🟠Масштабируемость
Поддерживает обработку множества одновременных запросов, что делает его подходящим для высоконагруженных веб-приложений.
🟠Разделение задач
Веб-сервер и приложения работают как независимые процессы. Это позволяет веб-серверу обрабатывать статические файлы и передавать динамические запросы к FastCGI-процессам.
server {
listen 80;
server_name example.com;
root /var/www/html;
location / {
index index.php index.html index.htm;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
🚩PHP-FPM
Это реализация FastCGI, специально разработанная для PHP.
🟠Управление процессами
Поддерживает динамическое управление процессами, включая старт, завершение и перезапуск процессов PHP-FPM.
🟠Логи и мониторинг
Предоставляет расширенные возможности логирования и мониторинга, что облегчает отладку и администрирование.
🟠Настраиваемые пуллы
Поддерживает создание нескольких пуллов процессов с различными конфигурациями, что позволяет оптимизировать производительность для различных частей веб-приложения.
🟠Производительность и стабильность
Обеспечивает улучшенную производительность и стабильность по сравнению с традиционными CGI и некоторыми другими методами обработки PHP-скриптов.
; Путь к сокету, через который будет работать PHP-FPM
listen = 127.0.0.1:9000
; Имя пользователя и группы, под которыми будут выполняться процессы
user = www-data
group = www-data
; Количество процессов
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
; Путь к файлу журнала ошибок
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_flag[log_errors] = on
Ставь 👍 и забирай 📚 Базу знаний🤔 Какие типы объединений есть в таблицах?
В SQL, используемом в базах данных, доступны различные типы JOIN, включая:
- **INNER JOIN**: возвращает строки, когда условие совпадения выполняется для обеих таблиц.
- **LEFT JOIN** (или LEFT OUTER JOIN): возвращает все строки из левой таблицы и совпавшие строки из правой таблицы.
- **RIGHT JOIN** (или RIGHT OUTER JOIN): возвращает все строки из правой таблицы и совпавшие строки из левой таблицы.
- **FULL JOIN** (или FULL OUTER JOIN): возвращает строки, когда есть совпадение хотя бы в одной из таблиц?
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Запустите рекламу в телеграм-каналах с Яндекс Директом
Перфоманс-реклама теперь в телеграм-каналах ⚡
Яндекс Директ знает, как привлечь целевую аудиторию 💰👌
Попробовать
#реклама
yandex.ru
О рекламодателе
🤔 Что такое партицирование?
Это метод разделения таблицы базы данных на более мелкие, управляемые и удобные в работе части, называемые партициями. Каждая партиция хранится и обрабатывается независимо, что может значительно улучшить производительность и управляемость базы данных, особенно при работе с большими объемами данных.
🚩Виды
🟠Диапазонное партицирование (Range Partitioning)
Данные разделяются на партиции на основе диапазона значений столбца. Пример: Таблица заказов может быть разделена на партиции по годам
CREATE TABLE orders (
order_id INT,
order_date DATE,
customer_id INT,
amount DECIMAL(10, 2)
)
PARTITION BY RANGE (YEAR(order_date)) (
PARTITION p2019 VALUES LESS THAN (2020),
PARTITION p2020 VALUES LESS THAN (2021),
PARTITION p2021 VALUES LESS THAN (2022)
);
🟠Хэш-партицирование (Hash Partitioning)
Данные распределяются по партициям на основе хэш-функции, применяемой к значению столбца. Пример: Таблица пользователей может быть разделена на партиции по идентификатору пользователя
CREATE TABLE users (
user_id INT,
username VARCHAR(50),
email VARCHAR(50)
)
PARTITION BY HASH(user_id) PARTITIONS 4;
🟠Списковое партицирование (List Partitioning)
Данные разделяются на партиции на основе перечисленных значений столбца. Таблица продуктов может быть разделена на партиции по категориям продуктов
CREATE TABLE products (
product_id INT,
product_name VARCHAR(50),
category VARCHAR(20)
)
PARTITION BY LIST (category) (
PARTITION electronics VALUES IN ('Electronics'),
PARTITION furniture VALUES IN ('Furniture'),
PARTITION clothing VALUES IN ('Clothing')
);
🟠Партицирование по ключу (Key Partitioning)
Вариант хэш-партицирования, где используется внутренняя хэш-функция базы данных.
CREATE TABLE employees (
emp_id INT,
emp_name VARCHAR(50),
department_id INT
)
PARTITION BY KEY(emp_id) PARTITIONS 4;
🚩Плюсы
➕Улучшенная производительность
Ускоряет выполнение запросов, так как обработка может быть ограничена только нужной партицией, а не всей таблицей. Повышает скорость операций вставки, обновления и удаления данных.
➕Упрощенное управление данными
Позволяет легко управлять большими объемами данных, удаляя или архивируя данные по партициям. Упрощает резервное копирование и восстановление данных.
➕Повышенная доступность
Улучшает доступность данных, так как сбой в одной партиции не влияет на доступность данных в других партициях.
➕Балансировка нагрузки
Обеспечивает равномерное распределение нагрузки на дисковую систему и ресурсы сервера.
Ставь 👍 и забирай 📚 Базу знаний🤔 Что такое полиморфизм?
Полиморфизм — это концепция объектно-ориентированного программирования, позволяющая использовать один интерфейс для различных типов данных. В PHP полиморфизм часто реализуется через интерфейсы или абстрактные классы, которые определяют общий интерфейс для группы классов, каждый из которых должен предоставить свою реализацию, позволяющую обрабатывать разные типы объектов через один и тот же код?
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое RabbitMq?
Это система обмена сообщениями (message broker) с открытым исходным кодом, разработанная для асинхронной передачи данных между различными компонентами программного обеспечения. Она основана на протоколе Advanced Message Queuing Protocol (AMQP) и позволяет приложениям обмениваться сообщениями, не завися от их одновременной работы и непосредственного взаимодействия.
🚩Понятия
🟠Сообщение (Message)
Основная единица данных, отправляемая от отправителя (producer) к получателю (consumer). Сообщение может содержать заголовки и тело, которое представляет собой полезную нагрузку.
🟠Очередь (Queue)
Место хранения сообщений, пока они не будут потреблены. Очередь работает по принципу FIFO (First In, First Out), обеспечивая последовательность обработки сообщений.
🟠Обменник (Exchange)
Компонент, который получает сообщения от отправителей и направляет их в соответствующие очереди на основе различных типов обменников:
Direct Exchange
Сообщения направляются в очереди, которые соответствуют конкретному маршрутизирующему ключу (routing key).
Topic Exchange
Сообщения направляются в очереди на основе шаблонов маршрутизирующих ключей.
Fanout Exchange
Сообщения транслируются во все связанные очереди, без учета маршрутизирующего ключа.
Headers Exchange
Сообщения направляются в очереди на основе совпадения заголовков сообщений.
🟠Связь (Binding)
Связь между обменником и очередью, определяющая правила маршрутизации сообщений из обменника в очередь.
🟠Отправитель (Producer)
Приложение или компонент, который отправляет сообщения в RabbitMQ.
🟠Получатель (Consumer)
Приложение или компонент, который получает и обрабатывает сообщения из очереди.
🚩Плюсы
➕Асинхронная обработка
Позволяет отделить отправку и получение сообщений, что повышает гибкость и производительность системы.
➕Надежность
Поддерживает подтверждение доставки сообщений (acknowledgements) и сохранение сообщений на диск (durability) для обеспечения надежности.
➕Масштабируемость
Легко масштабируется горизонтально путем добавления новых узлов в кластер.
➕Гибкость маршрутизации
Обеспечивает различные схемы маршрутизации для удовлетворения различных потребностей в обмене сообщениями.
➕Интероперабельность
Поддерживает множество протоколов и библиотек для интеграции с различными языками программирования и платформами.
🚩Пример использования
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
// Установка соединения с RabbitMQ сервером
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
// Объявление очереди
$channel->queue_declare('hello', false, false, false, false);
// Создание сообщения
$msg = new AMQPMessage('Hello World!');
// Отправка сообщения в очередь
$channel->basic_publish($msg, '', 'hello');
echo " [x] Sent 'Hello World!'\n";
// Закрытие канала и соединения
$channel->close();
$connection->close();
Ставь 👍 и забирай 📚 Базу знаний🤔 Что такое динамическая типизация?
Динамическая типизация — это особенность языков программирования, таких как PHP, при которой тип переменной определяется во время выполнения программы, а не во время компиляции, позволяя переменным хранить значения любого типа и изменять свой тип в зависимости от контекста использования?
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое Sphinx, ElasticSearch?
Это две популярные системы полнотекстового поиска, каждая из которых предлагает мощные возможности для индексации и поиска по большим объемам данных. Рассмотрим их по отдельности.
🚩Sphinx
Это открытая система полнотекстового поиска, предназначенная для поиска данных в больших коллекциях текстовой информации. Она часто используется для добавления поисковой функциональности к веб-приложениям и базам данных.
🚩Характеристики
🟠Высокая производительность
Оптимизирован для быстрой индексации и поиска.
🟠Поддержка различных форматов
Может индексировать данные из MySQL, PostgreSQL, XML и других источников.
🟠Настраиваемый поиск
Поддерживает различные типы запросов, включая булевые операции, фразовый поиск и др.
🟠Репликация и шардирование
Поддерживает распределенные поисковые системы для масштабирования.
// Пример PHP-кода для использования Sphinx
$cl = new SphinxClient();
$cl->SetServer("localhost", 9312);
$cl->SetMatchMode(SPH_MATCH_ALL);
$result = $cl->Query("your search query", "index_name");
if ($result === false) {
echo "Query failed: " . $cl->GetLastError() . ".\n";
} else {
if ($cl->GetLastWarning()) {
echo "WARNING: " . $cl->GetLastWarning() . "\n";
}
if (!empty($result["matches"])) {
foreach ($result["matches"] as $doc => $docinfo) {
echo "Document ID: " . $doc . ", Weight: " . $docinfo["weight"] . "\n";
}
}
}
🟠Elasticsearch
Это распределенная поисковая и аналитическая система на основе Apache Lucene, популярная за свою масштабируемость, мощные возможности поиска и анализа данных.
🚩Характеристики
🟠Распределенность и масштабируемость
Поддерживает автоматическое шардирование и репликацию данных для обработки больших объемов информации.
🟠Полнотекстовый поиск
Обеспечивает мощные возможности полнотекстового поиска с поддержкой различных типов запросов.
🟠Реальное время
Поддерживает обновление данных и поисковые запросы в реальном времени.
🟠API на базе JSON и REST
Легко интегрируется с другими системами через REST API и поддерживает множество языков программирования.
// Пример PHP-кода для использования Elasticsearch через библиотеку Elasticsearch-PHP
require 'vendor/autoload.php';
use Elasticsearch\ClientBuilder;
$client = ClientBuilder::create()->build();
$params = [
'index' => 'my_index',
'body' => [
'query' => [
'match' => [
'field_name' => 'your search query'
]
]
]
];
$response = $client->search($params);
print_r($response);
🚩Сравнение и выбор
🟠Масштабируемость
Elasticsearch лучше подходит для масштабируемых распределенных систем, так как изначально спроектирован для работы с большими кластерами данных.
🟠Простота установки
Sphinx может быть проще в установке и настройке для небольших проектов.
🟠Функциональность
Elasticsearch предоставляет более богатый набор функций, включая анализ данных и расширенные поисковые возможности.
🟠Поддержка и сообщество
Elasticsearch имеет более активное сообщество и лучше поддерживается благодаря коммерческой поддержке от Elastic.
Ставь 👍 и забирай 📚 Базу знанийНачни изучать Linux, не ограничивай себя от рынка. Топ компании повсеместно используют данную операционку и повышают зп за навык.
Google, YouTube, Яндекс - все они активно пользуются системой. Чтобы не быть в стороне и не попадать на вакансии по остаточному принципу подпишись на канал Linux Shell и начни повышать свою классификацию.
🤔 Что такое статическое связывание?
Статическое связывание (static binding) в PHP и других языках ООП означает, что метод или свойство будут связаны с классом во время компиляции (или в случае с PHP — во время выполнения до выполнения). В PHP статическое связывание используется ключевым словом `self` для обращения к статическим свойствам и методам внутри класса?
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое вертикальное и горизонтальное масштабирование в БД?
Это два метода повышения производительности и пропускной способности баз данных.
🚩Вертикальное масштабирование (Vertical Scaling)
Вертикальное масштабирование, также известное как масштабирование "вверх" (scale up), предполагает улучшение производительности базы данных за счет увеличения ресурсов на одном сервере. Это может включать: Добавление большего объема оперативной памяти (RAM), Увеличение мощности процессора (CPU), Увеличение объема хранилища (SSD или HDD), Использование более быстрого сетевого оборудования
🟠Плюсы и минусы
➕Простота реализации
Легко выполнить, поскольку не требует изменения архитектуры приложения.
➕Единая точка управления
Администрирование базы данных проще, так как все данные находятся на одном сервере.
➖Ограничения оборудования
Есть пределы, до которых можно увеличивать ресурсы на одном сервере.
➖Единая точка отказа
Если сервер выходит из строя, вся база данных становится недоступной.
🟠Пример
Допустим, у вас есть сервер с 16 ГБ оперативной памяти и 4-ядерным процессором. Вертикальное масштабирование может включать замену его на сервер с 64 ГБ оперативной памяти и 16-ядерным процессором.
🚩Горизонтальное масштабирование (Horizontal Scaling)
Горизонтальное масштабирование, также известное как масштабирование "вширь" (scale out), включает добавление большего количества серверов для разделения нагрузки и данных. Это может включать: Добавление дополнительных серверов с аналогичными характеристиками, Распределение данных между несколькими серверами (шардирование), Использование распределенных систем и кластеров
🟠Плюсы и минусы
➕Неограниченное масштабирование
Можно добавлять столько серверов, сколько нужно для обработки увеличивающейся нагрузки.
➕Устойчивость к отказам
Если один сервер выходит из строя, остальные продолжают работать, что повышает надежность системы.
➖Сложность реализации
Требует изменения архитектуры приложения и настройки системы для работы в распределенной среде.
➖Администрирование
Управление несколькими серверами сложнее, чем одним.
🟠Пример
Предположим, у вас есть три сервера, каждый с 16 ГБ оперативной памяти и 4-ядерным процессором. Горизонтальное масштабирование может включать добавление еще трех серверов с такими же характеристиками и распределение данных между ними.
Ставь 👍 и забирай 📚 Базу знаний
🤔 Разница между merge и rebase?
- **Merge**: объединяет изменения из одной ветки в другую, создавая новый коммит слияния, если есть изменения в обеих ветках, что сохраняет историю всех изменений и ветвлений.
- **Rebase**: переписывает историю проекта, перемещая или "перебазируя" все изменения из одной ветки на другую, начиная с текущего конца ветки. Это создает более чистую линейную историю.?
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
