Гектор (API) - Википедия - Hector (API)

Гектор
Оригинальный автор (ы)Ран Тавори
Стабильный выпуск
2.0 / 16 июля 2014 г.; 6 лет назад (2014-07-16)[1]
Репозиторийgithub.com/ гектор-клиент/ гектор
Написано вЯва
ТипКолонно-ориентированная СУБД
ЛицензияЛицензия MIT
Интернет сайтPrettyprint.мне/2010/02/23/ Гектор-а-Java-кассандра-клиент/ Отредактируйте это в Викиданных

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

История

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

Функции

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

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

Показатели доступности

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

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

Hector следует двум политикам балансировки нагрузки с LoadBalancingPolicy интерфейс. По умолчанию называется RoundRobinBalancingPolicy и это простой по-круговой алгоритм распределения. В LeastActiveBalancingPolicy направляет запросы в пулы с наименьшим количеством активных подключений, обеспечивая хорошее распределение использования по кластеру. .[8]

Объединение

В Исчерпанный определяет, как контролируются базовые пулы клиентских соединений. В настоящее время доступны три варианта:[9]

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

Примеры кода

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

 /**   * Вставить новое значение с ключом   * @param key Ключ для значения   * @param value значение String для вставки   */  общественный пустота вставлять(окончательный Нить ключ, окончательный Нить ценить) бросает Исключение {    выполнять(новый Команда(){      общественный Пустота выполнять(окончательный Keyspace кс) бросает Исключение {        кс.вставлять(ключ, createColumnPath(COLUMN_NAME), байты(ценить));        возвращаться ноль;      }    });  }  /**   * Получить строковое значение.   * @return Строковое значение; null, если для данного ключа не существует значения.   */  общественный Нить получать(окончательный Нить ключ) бросает Исключение {    возвращаться выполнять(новый Команда(){      общественный Нить выполнять(окончательный Keyspace кс) бросает Исключение {        пытаться {          возвращаться нить(кс.getColumn(ключ, createColumnPath(COLUMN_NAME)).getValue());        } ловить (NotFoundException е) {          возвращаться ноль;        }      }    });  }  /**   * Удалить ключ от кассандры   */  общественный пустота Удалить(окончательный Нить ключ) бросает Исключение {    выполнять(новый Команда(){      общественный Пустота выполнять(окончательный Keyspace кс) бросает Исключение {        кс.удалять(ключ, createColumnPath(COLUMN_NAME));        возвращаться ноль;      }    });  }

Рекомендации

  1. ^ https://github.com/hector-client/hector/releases
  2. ^ https://github.com/hector-client/hector/blob/master/README
  3. ^ а б Бежал Тэвори. «Гектор - клиент Java Cassandra». http://prettyprint.me/: PrettyPrint.me. Получено 2011-03-23. Из коробки Cassanra предоставляет чистый бережливый клиент, что нормально, но в нем отсутствуют многие функции, необходимые для реальных клиентов. Я построил Гектора, чтобы восполнить этот пробел.
    Вот высокоуровневые функции Hector, которые в настоящее время размещены на github.
    • Объектно-ориентированный интерфейс высокого уровня для cassandra.
    • Поддержка аварийного переключения.
    • Пул соединений.
    • Поддержка JMX.
    • Поддержка шаблона проектирования Command, чтобы клиенты могли сосредоточиться на своей бизнес-логике, а Гектор позаботился о необходимой сантехнике.
  4. ^ «Клиент Hector для Apache Cassandra: инкапсуляция Thrift API» (PDF). http://www.datastax.com/: DataStax. Получено 2011-04-12. Теперь Hector полностью инкапсулирует Thrift API, поэтому разработчикам приходится иметь дело только с клиентом Hector, используя знакомые шаблоны проектирования. Исходный API по-прежнему доступен для существующих пользователей для перехода своих текущих проектов, а также для тех, кому комфортно работать с Thrift.
  5. ^ "Клиент Hector для Apache Cassandra: Полностью Mavenized" (PDF). http://www.datastax.com/: DataStax. Получено 2011-04-12. Начиная с бета-версии Cassandra 0.7.0, Riptano предлагает доступ к репозиторию maven для зависимостей, необходимых для использования Cassandra через Hector.
  6. ^ Бежал Тэвори. «Балансировка нагрузки и улучшенное аварийное переключение в Hector». http://prettyprint.me/: PrettyPrint.me. Получено 2011-03-23. Ve добавил очень простую функцию балансировки нагрузки, а также улучшил поведение при отказе в Hector. Hector - это клиент Java Cassandra, чтобы узнать о нем больше, см. Мой предыдущий пост. Hector - клиент Java Cassandra. В версии 0.5.0-6 я добавил балансировку нагрузки для бедняков, а также улучшил поведение при отказе.
  7. ^ «Клиент Hector для Apache Cassandra: доступность показателей» (PDF). http://www.datastax.com/: DataStax. Получено 2011-04-12. Чтобы упростить работу и лучше понять характеристики производительности, Hector предоставляет как счетчики доступности, так и, при необходимости, статистику производительности через JMX.
  8. ^ «Клиент Hector для Apache Cassandra: базовая балансировка нагрузки» (PDF). http://www.datastax.com/: DataStax. Получено 2011-04-12. Hector обеспечивает подключаемую балансировку нагрузки через LoadBalancingPolicy интерфейс. Из коробки предлагаются две основные реализации: LeastActiveBalancingPolicy (по умолчанию) и RoundRobinBalancingPolicy. LeastActiveBalancingPolicy направляет запросы в пулы с наименьшим количеством активных подключений. Это обеспечивает хорошее распределение использования по кластеру за счет отправки запросов на машину с наименьшим количеством подключений. RoundRobinBalancingPolicy реализует простой алгоритм циклического распределения.
  9. ^ «Клиент Hector для Apache Cassandra: настройка пула» (PDF). http://www.datastax.com/: DataStax. Получено 2011-04-12. Поведение базовых пулов клиентских подключений можно контролировать с помощью ExhaustedPolicy. […]

внешняя ссылка