Jump to content

Гектор (API)

Гектор
Оригинальный автор(ы) Ран Тавори
Финальный выпуск
2.0 / 16 июля 2014 г .; 10 лет назад ( 16.07.2014 ) [ 1 ]
Репозиторий github /Гектор-клиент /Гектор
Написано в Ява
Тип Столбцово-ориентированная СУБД
Лицензия МОЯ лицензия
Веб-сайт довольнопринт .мне /2010 /02 /23 /hector-a-java-cassandra-client /  Edit this on Wikidata

Hector высокого уровня — это клиентский API для Apache Cassandra . Названный в честь Гектора , воина Трои в греческой мифологии , он является заменой Java-клиента Cassandra, или Thrift. [ 2 ] это заключено в Гекторе. [ 3 ] Он также имеет доступ к репозиторию Maven . [ 4 ]

Поскольку Cassandra поставляется с низкоуровневым протоколом Thrift (протоколом) , появилась возможность разработать лучший протокол для разработчиков приложений. Hector был разработан Раном Тавори как интерфейс высокого уровня, который перекрывает недостатки Thrift. Он имеет лицензию MIT, которая позволяет использовать, модифицировать, разделять и изменять дизайн. [ сомнительно обсудить ]

Высокоуровневые особенности Гектора: [ 2 ]

  • Высокоуровневый объектно-ориентированный интерфейс для Cassandra: он в основном основан на Cassandra-java-client. API определен в интерфейсе Keyspace.
  • Пул соединений. Как и в крупномасштабных приложениях, обычным шаблоном для DAO является большое количество операций чтения/записи. Для клиентов слишком дорого открывать новые соединения при каждом запросе. Таким образом, у клиента могут легко закончиться доступные сокеты, если он работает достаточно быстро. Hector предоставляет пул соединений и удобную структуру, которая управляет деталями.
  • Поддержка аварийного переключения: поскольку Cassandra — это распределенное хранилище данных, в котором хосты ( узлы ) могут выйти из строя. У Hector есть собственная политика аварийного переключения .
Тип Комментарий
FAIL_FAST Если возникает ошибка, она терпит неудачу
ON_FAIL_TRY_ONE_NEXT_AVAILABLE Пробует еще один хост, прежде чем сдаться
ON_FAIL_TRY_ALL_AVAILABLE Пробует все доступные хосты, прежде чем сдаться.
  • Поддержка JMX : Hector предоставляет JMX для многих важных показателей времени выполнения, таких как количество доступных соединений, простаивающие соединения, статистика ошибок.
  • Балансировка нагрузки . В новой версии существует простая балансировка нагрузки. [ 5 ]
  • Поддерживает шаблон проектирования команд, позволяющий клиентам сосредоточиться на своей бизнес-логике и позволить Гектору позаботиться о необходимых сантехнических работах.

Метрики доступности

[ редактировать ]

Hector предоставляет счетчики доступности и статистику через JMX . [ 6 ]

Балансировка нагрузки

[ редактировать ]

Гектор следует двум политикам балансировки нагрузки: LoadBalancingPolicy интерфейс. По умолчанию называется RoundRobinBalancingPolicy и представляет собой простой алгоритм циклического распределения. LeastActiveBalancingPolicy направляет запросы в пулы с наименьшим количеством активных соединений, обеспечивая хорошее распределение использования по кластеру. . [ 7 ]

Объединение

[ редактировать ]

The ExhaustedPolicy определяет, как контролируются базовые пулы клиентских подключений. На данный момент доступны три варианта: [ 8 ]

Тип Комментарий
WHEN_EXHAUSTED_FAIL Не удается привлечь клиентов, когда больше нет доступных клиентов.
WHEN_EXHAUSTED_GROW Пул автоматически увеличивается, чтобы реагировать на увеличение нагрузки.
WHEN_EXHAUSTED_BLOCK Блокировать привлечение до тех пор, пока клиент не станет доступным (по умолчанию).

Примеры кода

[ редактировать ]

реализация простой распределенной хеш-таблицы В качестве примера приведена на Cassandra.

 /**
   * Insert a new value keyed by key
   * @param key Key for the value
   * @param value the String value to insert
   */
  public void insert(final String key, final String value) throws Exception {
    execute(new Command(){
      public Void execute(final Keyspace ks) throws Exception {
        ks.insert(key, createColumnPath(COLUMN_NAME), bytes(value));
        return null;
      }
    });
  }

  /**
   * Get a string value.
   * @return The string value; null if no value exists for the given key.
   */
  public String get(final String key) throws Exception {
    return execute(new Command(){
      public String execute(final Keyspace ks) throws Exception {
        try {
          return string(ks.getColumn(key, createColumnPath(COLUMN_NAME)).getValue());
        } catch (NotFoundException e) {
          return null;
        }
      }
    });
  }

  /**
   * Delete a key from cassandra
   */
  public void delete(final String key) throws Exception {
    execute(new Command(){
      public Void execute(final Keyspace ks) throws Exception {
        ks.remove(key, createColumnPath(COLUMN_NAME));
        return null;
      }
    });
  }
  1. ^ «Релизы · гектор-клиент/Гектор» . Гитхаб .
  2. ^ Перейти обратно: а б Ран Тавори. «Гектор – клиент Java Cassandra» . PrettyPrint.me . Проверено 23 марта 2011 г. «Из коробки» Cassanra предоставляет экономичный клиент, который хорош, но ему не хватает многих функций, необходимых для реальных клиентов. Я создал Гектора, чтобы заполнить этот пробел.
    Вот высокоуровневые функции Hector, которые в настоящее время размещены на github.
    • Высокоуровневый объектно-ориентированный интерфейс для Cassandra.
    • Поддержка аварийного переключения.
    • Пул соединений.
    • Поддержка JMX.
    • Поддержка шаблона проектирования «Команда», позволяющая клиентам сосредоточиться на своей бизнес-логике и позволить Хектору позаботиться о необходимых сантехнических работах.
  3. ^ «Клиент Hector для Apache Cassandra: инкапсуляция Thrift API» (PDF) . ДатаСтакс . Проверено 12 апреля 2011 г. Теперь Hector полностью инкапсулирует Thrift API, поэтому разработчикам приходится иметь дело только с клиентом Hector, используя знакомые шаблоны проектирования. Исходный API по-прежнему доступен существующим пользователям для перехода к своим текущим проектам, а также для тех, кому удобно работать с Thrift.
  4. ^ «Клиент Hector для Apache Cassandra: полностью Mavenized» (PDF) . ДатаСтакс . Проверено 12 апреля 2011 г. Начиная с бета-версии Cassandra 0.7.0, Riptano предлагает доступ к репозиторию maven для зависимостей, необходимых для использования Cassandra через Hector.
  5. ^ Ран Тавори. «Балансировка нагрузки и улучшенное аварийное переключение в Hector» . PrettyPrint.me . Проверено 23 марта 2011 г. Мы добавили в Hector очень простую функцию балансировки нагрузки, а также улучшили поведение при отказе. Hector — это клиент Java Cassandra. Чтобы узнать больше о нем, прочтите мою предыдущую публикацию Hector — клиент Java Cassandra. В версии 0.5.0-6 я добавил балансировку нагрузки для бедных, а также улучшил поведение при отказе.
  6. ^ «Клиент Hector для Apache Cassandra: доступность метрик» (PDF) . ДатаСтакс . Проверено 12 апреля 2011 г. Чтобы обеспечить более плавную работу и лучшее понимание характеристик производительности, Hector предоставляет через JMX как счетчики доступности, так и, при необходимости, статистику производительности.
  7. ^ «Клиент Hector для Apache Cassandra: базовая балансировка нагрузки» (PDF) . ДатаСтакс . Проверено 12 апреля 2011 г. Hector обеспечивает подключаемую балансировку нагрузки через LoadBalancingPolicy интерфейс. «Из коробки» предоставляются две основные реализации: LeastActiveBalancingPolicy (по умолчанию) и RoundRobinBalancingPolicy. LeastActiveBalancingPolicy направляет запросы в пулы с наименьшим количеством активных соединений. Это обеспечивает хорошее распределение использования по кластеру за счет отправки запросов на компьютер, имеющий наименьшее количество подключений. RoundRobinBalancingPolicy реализует простой алгоритм циклического распределения.
  8. ^ «Клиент Hector для Apache Cassandra: конфигурация пула» (PDF) . ДатаСтакс . Проверено 12 апреля 2011 г. Поведением базовых пулов клиентских подключений можно управлять с помощью ExhaustedPolicy. […]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 55141bc785bcaf3db6e7aef740b425be__1637152740
URL1:https://arc.ask3.ru/arc/aa/55/be/55141bc785bcaf3db6e7aef740b425be.html
Заголовок, (Title) документа по адресу, URL1:
Hector (API) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)