1. Высокий параллелизм
Введение
Высокая степень параллелизма — один из факторов, который необходимо учитывать при проектировании архитектуры распределенной системы Интернета.Система способна обрабатывать множество запросов параллельно одновременно. Некоторые часто используемые индикаторы, связанные с высокой степенью параллелизма:Время отклика(Время отклика),пропускная способность(Пропускная способность),частота запросов в секундуQPS (запросов в секунду),одновременные пользователиЖдать.
- Время отклика: время, когда система ответила на запрос. Например, системе требуется 200 мс для обработки HTTP-запроса, и эти 200 мс — время ответа системы.
- пропускная способность: количество запросов, обработанных в единицу времени.
- QPS: количество запросов ответа в секунду. В домене Интернета различие между этой метрикой и пропускной способностью не столь очевидно.
- одновременные пользователи: количество пользователей, которые одновременно нормально используют системные функции. Например, в системе обмена мгновенными сообщениями количество одновременных онлайн-пользователей в определенной степени представляет количество одновременных пользователей системы.
Как улучшить параллелизм
-
Вертикальное расширение(Увеличить масштаб)
- Повышенная производительность автономного оборудования(Приоритет): например: увеличьте количество ядер ЦП, таких как 32 ядра, обновите лучшую сетевую карту, например 10G, обновите лучший жесткий диск, например SSD, увеличьте емкость жесткого диска, например 2T, и увеличьте системную память. например 128G.
- Повышение производительности автономной архитектуры: Например: используйте кэш, чтобы сократить время ввода-вывода, используйте асинхронность, чтобы увеличить пропускную способность одной службы, и используйте структуры данных без блокировок, чтобы сократить время отклика.
- Резюме: Независимо от того, идет ли речь об улучшении производительности автономного оборудования или об улучшении производительности автономной архитектуры, существует фатальный недостаток: у автономной производительности всегда есть предел. Таким образом, окончательное решение для проектирования высокой параллелизма в распределенной архитектуре Интернета по-прежнемуГоризонтальное расширение.
-
Горизонтальное расширение(Масштабирование)
- Пока количество серверов увеличивается, производительность системы можно масштабировать линейно. Горизонтальное расширение требует проектирования системной архитектуры, а трудность заключается в том, как спроектировать горизонтальную масштабируемость на каждом уровне архитектуры.
2. Высокая производительность
Введение
- Проще говоря, высокая производительность означаетСкорость обработки программы высокая, занимает меньше памяти, а уровень загрузки процессора низкий..
- Высокий уровень параллелизма и высокая производительность тесно связаны.Улучшение производительности приложения, безусловно, может улучшить возможности параллелизма системы.
- При применении оптимизации производительности длявычислительно интенсивныйиИнтенсивный ввод-выводЕсть еще большие различия, которые нужно рассматривать отдельно.
- Увеличение ресурсов сервера (процессор, память, количество серверов) в большинстве случаев может улучшить параллелизм и производительность приложений. (Предполагается, что приложение может поддерживать многозадачные параллельные вычисления и многосерверные распределенные вычисления), но также необходимо избегать некоторых из этих проблем, чтобы ресурсы сервера можно было использовать лучше и эффективнее.
Рекомендации по повышению производительности
- избегать, потому чтоБлокировка ввода-выводаПусть ЦП простаивает, что приводит к пустой трате ЦП.
- избегатьДобавление блокировок между несколькими потокамидля обеспечения синхронизации, приводящей к сериализации параллельных систем.
- Старайтесь не создавать, не уничтожать и не поддерживать слишком много процессов и потоков, из-за чего операционная система будет тратить ресурсы на планирование.
- Избегайте ассоциации нескольких серверов в распределенных системах, таких как: использование одного и того же mysql, используемого в программной логике.Распределенная блокировка, что приводит к узким местам в mysql и распределяется на сериализованные операции.
3. Высокая доступность
Введение
High Availability обычно используется для описания системы послеспециализированныйдизайн, таким образомСокращение времени простоя, сохраняя при этом высокую доступность (всегда доступность) своих служб.
- Годовое время простоя не может превышать31,5 секунды,
- 6 девяток производительности: 99,9999% вероятность всегда быть доступным
Вопросы высокой доступности
- избегать одной точки: Используйте один сервер, если сервер неожиданно выйдет из строя, служба будет недоступна.
- Используйте «кластер»: сервер не работает, и есть другие резервные серверы, которые могут работать.
- Механизм сердцебиения: замониторСтатус сервера, повесить трубкуИсправление проблем
4. Примеры
Репликация Redis master-slave
1. Сценарии применения
Товары на веб-сайтах электронной коммерции обычно загружаются один раз и просматриваются бесчисленное количество раз. Если говорить профессионально, это означает «больше читать и меньше писать».
2. Принцип реализации
Служба Redis может иметь несколько реплик службы.Эта служба Redis называется Master, а другие реплики называются Slave.
Как показано на рисунке, мы используем один сервер Redis в качестве главной библиотеки (Matser) и три других в качестве подчиненной библиотеки (Slave).Главная библиотека отвечает только за запись данных, и каждый раз, когда происходит обновление данных, обновленные данные синхронизируются со всеми своими подчиненными библиотеками, которые отвечают только за чтение данных. Таким образом, есть два преимущества:
- разделение чтения-записи: Он может не только повысить нагрузочную способность сервера, но и свободно увеличивать или уменьшать количество подчиненных библиотек в зависимости от масштаба запроса на чтение.
- Данные копируются в несколько копий, и даже при выходе из строя одной машины их можно быстро восстановить, используя данные с других машин.
Меры предосторожности: в режиме Redis master-slave основная библиотека может иметь несколько подчиненных библиотек, но подчиненная библиотека может принадлежать только одной главной библиотеке.
PS:
- Статьи собраны с разных ресурсов, если есть какие-то нарушения просьба сообщить и удалить.
- Пожалуйста, указывайте источник при перепечатке этой статьи