Сервис REST с выравниванием нагрузки

rhythmbox пакет является зависимостью ubuntu-desktop пакет, который используется, чтобы гарантировать, чтобы у Вас были основные настольные компоненты.

при принуждении удаления Rhythmbox оно также вызвало бы удаление ubuntu-desktop, который, возможно, позволил некоторым другим критическим настольным компонентам быть удаленными. Rhythmbox переустановки не восстановил бы другие пакеты, которые должны были быть удалены для завершения той первой операции.

Вы смогли ремонтировать вещи путем переустановки ubuntu-desktop со следующей командой:

sudo apt-get install ubuntu-desktop

, Если это не помогает, предоставьте немного больше информации о том, какие изменения Вы внесли в свою систему между тем, когда вещи работали и когда они прекратили работать.

8
задан horcrux 16 February 2018 в 17:36
поделиться

2 ответа

Если вы разрабатываете систему для высокой нагрузки (что обычно подразумевает высокую надежность), наличие единой точки отказа никогда не является хорошей идеей. Если служба, обеспечивающая согласованное представление, отключается, в лучшем случае ваша производительность резко снижается, поскольку база данных запрашивается обо всем, а в худшем - все ваше приложение перестает работать.

В вашем вопросе, похоже, вас беспокоит последовательность. Если есть что-то узнать об архитектуре eBay , так это то, что необходимо найти компромисс между доступностью / избыточностью / производительностью и согласованностью . Вы можете обнаружить, что 100% согласованность не требуется, и можно обойтись небольшим «хаосом».

Распределенный кеш (например, memcache ) может использоваться в качестве поддержки для распределенной хеш-таблицы , которые широко использовались для создания масштабируемых инфраструктур. При правильной реализации кеши могут быть избыточными, а кеши могут динамически присоединяться и покидать кольцо.

REST также по своей природе кэшируется, поскольку уровень HTTP может быть кэширован с соответствующим использованием заголовков ( ETags ) и программного обеспечения (например, прокси-сервер Squid в качестве обратного прокси ). Единственный недостаток указания кэширования через заголовки заключается в том, что он полагается на то, что клиент интерпретирует и уважает их.

Однако, перефразируя Фила Карлтона, кэширование сложно . Вы действительно должны быть избирательными в отношении данных, которые вы кешируете, когда вы их кешируете и как вы делаете этот кеш недействительным. Аннулирование может быть выполнено следующими способами:

  1. С помощью средств на основе таймера (кэш на 2 минуты, затем перезагрузка)
  2. Когда приходит обновление, аннулируются все кеши, содержащие соответствующие данные.

Я ' m частично подходит к подходу, основанному на таймере, поскольку его проще реализовать, и вы можете с относительной уверенностью сказать, как долго устаревшие данные будут храниться в системе (например, информация о компании будет обновлена ​​через 2 часа, цены на акции будут обновлены через 10 секунд).

Наконец, высокая нагрузка также зависит от вашего варианта использования, и в зависимости от количества транзакций все это не применимо. Методология (если хотите) может быть следующей:

  1. Убедитесь, что система работает без кэширования (Работает ли она)
  2. Соответствует ли она критериям производительности (например, запросов / сек, целям безотказной работы)
  3. Оптимизировать узкие места
  4. Реализуйте кэширование там, где это необходимо

В конце концов, у вас может вообще не быть проблем с производительностью, и вы можете обойтись без единой базы данных и хорошей стратегии резервного копирования.

Курсы акций будут обновлены через 10 секунд).

Наконец, высокая нагрузка также зависит от вашего варианта использования, и в зависимости от количества транзакций все это не применимо. Методология (если хотите) может быть следующей:

  1. Убедитесь, что система работает без кэширования (работает ли она)
  2. Соответствует ли она критериям производительности (например, запросов в секунду, целевому времени безотказной работы)
  3. Оптимизировать узкие места
  4. Реализуйте кэширование там, где это необходимо.

В конце концов, у вас может вообще не быть проблем с производительностью, и вы можете обойтись без единой базы данных и хорошей стратегии резервного копирования.

Курсы акций будут обновлены через 10 секунд).

Наконец, высокая нагрузка также зависит от вашего варианта использования, и в зависимости от количества транзакций все это не применимо. Методология (если хотите) может быть следующей:

  1. Убедитесь, что система работает без кэширования (Работает ли она)
  2. Соответствует ли она критериям производительности (например, запросов / сек, целям безотказной работы)
  3. Оптимизировать узкие места
  4. Реализуйте кэширование там, где это необходимо.

В конце концов, у вас может вообще не быть проблем с производительностью, и вы можете обойтись без единой базы данных и хорошей стратегии резервного копирования.

9
ответ дан 5 December 2019 в 10:04
поделиться

Я думаю, что более традиционный взгляд на веб-приложения с балансировкой нагрузки состоит в том, что у вас будет служба REST на нескольких серверах приложений, и они будут извлекать данные ресурсов с одного сервера базы данных.

Однако с Используя гипермедиа, службы REST могут легко разделить приложение по вертикали, так что некоторые ресурсы поступают из одной службы, а некоторые - из другой службы на другом сервере. Это позволит вам до некоторой степени масштабироваться в зависимости от вашего домена без единого хранилища данных. Очевидно, что с REST вы не сможете выполнять транзакционные обновления для этих сервисов, но определенно существуют сценарии, в которых такое разделение является ценным.

Если вы ищете архитектуры, которые необходимо действительно масштабировать, я бы посоветовал взглянуть на Грега Янга '

8
ответ дан 5 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: