请输入您要查询的百科知识:

 

词条 Hector (API)
释义

  1. History

  2. Features

     Availability metrics  Load balancing  Pooling 

  3. Code examples

  4. References

  5. External links

{{Infobox software
| name = Hector
| author = Ran Tavory
| status = Inactive[1]
| latest release version = 2.0
| latest release date = {{Start date and age|2014|07|16}}[2]
| latest preview version =
| latest preview date =
| repo = {{URL|https://github.com/hector-client/hector}}
| programming language = Java
| language =
| genre = Column-oriented DBMS
| license = MIT License
}}Hector is a high-level client API for Apache Cassandra. Named after Hector, a warrior of Troy in Greek mythology, it is a substitute for the Cassandra Java Client, or Thrift,[3] that is encapsulated by Hector.[4] It also has Maven repository access.[5]

History

As Cassandra is shipped with the low-level Thrift (protocol), there was a potential to develop a better protocol for application developers. Hector was developed by Ran Tavory as a high-level interface that overlays the shortcomings of Thrift. It is licensed with the MIT License that allows to use, modify, split and change the design.{{Dubious|date=August 2011}}

Features

The high-level features of Hector are[3]

  • A high-level object oriented interface to Cassandra: It is mainly inspired by the Cassandra-java-client. The API is defined in the Keyspace interface.
  • Connection pooling. As in high-scale applications, the usual pattern for DAOs is a large number of reads/writes. It is too expensive for clients to open new connections with each request. So, a client may easily run out of available sockets, if it operates fast enough. Hector provides connection pooling and a nice framework that manages the details.
  • Failover support: As Cassandra is a distributed data store where hosts (nodes) may go down. Hector has its own failover policy.
Type Comment
FAIL_FAST If an error occurs, it fails
ON_FAIL_TRY_ONE_NEXT_AVAILABLE Tries one more host before giving up
ON_FAIL_TRY_ALL_AVAILABLE Tries all available hosts before giving up
  • JMX support: Hector exposes JMX for many important runtime metrics, such as number of available connections, idle connections, error statistics.
  • Load balancing: A simple load balancing exists in the newer version.[6]
  • Supports the command design pattern to allow clients to concentrate on their business logic and let Hector take care of the required plumbing.

Availability metrics

Hector exposes availability counters and statistics through JMX.[7]

Load balancing

Hector follows two load balancing policies with the LoadBalancingPolicy interface. The default is called RoundRobinBalancingPolicy and is a simple round-robin distribution algorithm. The LeastActiveBalancingPolicy routes requests to the pools having the lowest number of active connections, ensuring a good spread of utilisation across the cluster. .

[8]

Pooling

The ExhaustedPolicy determines how the underlying client connection pools are controlled. Currently, three options are available:[9]

Type Comment
WHEN_EXHAUSTED_FAIL Fails acquisition when no more clients are available
WHEN_EXHAUSTED_GROW The pool is automatically increased to react to load increases
WHEN_EXHAUSTED_BLOCK Block on acquisition until a client becomes available (the default)

Code examples

As an example, an implementation of a simple distributed hashtable over Cassandra is listed.

 /**   * 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;      }    });  }

References

1. ^https://github.com/hector-client/hector/blob/master/README
2. ^https://github.com/hector-client/hector/releases
3. ^{{cite web|url=http://prettyprint.me/2010/02/23/hector-a-java-cassandra-client/comment-page-1/|title=Hector – a Java Cassandra client|author=Ran Tavory|first=|date=|website=|publisher=PrettyPrint.me|location=http://prettyprint.me/|archive-url=|archive-date=|dead-url=|accessdate=2011-03-23|quote=Out of the box Cassanra provides a raw thrift client, which is OK, but lacks many features essential to real world clients. I’ve built Hector to fill this gap.
Here are the high level features of Hector, currently hosted at github.{{bulleted list|A high-level object oriented interface to cassandra.|Failover support.|Connection pooling.|JMX support.|Support for the Command design pattern to allow clients to concentrate on their business logic and let hector take care of the required plumbing.}}}}
4. ^{{cite web| accessdate = 2011-04-12| location = http://www.datastax.com/| publisher = DataStax| title = Hector Client for Apache Cassandra: Encapsulation of Thrift API| quote = Hector now completely encapsulates the Thrift API so developers have to deal only with the Hector client using familiar design patterns. The original API is still available for existing users to transition their current projects as well as for those who are comfortable working with Thrift.| url = http://www.datastax.com/sites/default/files/hector-v2-client-doc.pdf}}
5. ^{{cite web| accessdate = 2011-04-12| location = http://www.datastax.com/| publisher = DataStax| title = Hector Client for Apache Cassandra: Fully Mavenized| quote = Since the beta release of Cassandra 0.7.0, Riptano has been offering maven repository access for dependencies required for Cassandra usage via Hector.| url = http://www.datastax.com/sites/default/files/hector-v2-client-doc.pdf}}
6. ^{{cite web| accessdate = 2011-03-23| author = Ran Tavory| location = http://prettyprint.me/| publisher = PrettyPrint.me| title = Load balancing and improved failover in Hector.| quote = ve added a very simple load balancing feature, as well as improved failover behavior to Hector. Hector is a Java Cassandra client, to read more about it please see my previous post Hector – a Java Cassandra client. In version 0.5.0-6 I added poor-man’s load balancing as well as improved failover behavior.| url = http://prettyprint.me/2010/03/03/load-balancing-and-improved-failover-in-hector/}}
7. ^{{cite web| accessdate = 2011-04-12| location = http://www.datastax.com/| publisher = DataStax| title = Hector Client for Apache Cassandra: Availability of Metrics| quote = To facilitate smoother operations and better awareness of performance characteristics, Hector exposes both availability counters and, optionally, performance statistics through JMX.| url = http://www.datastax.com/sites/default/files/hector-v2-client-doc.pdf}}
8. ^{{cite web| accessdate = 2011-04-12| location = http://www.datastax.com/| publisher = DataStax| title = Hector Client for Apache Cassandra: Basic Load Balancing| quote = Hector provides for plugable load balancing through the LoadBalancingPolicy interface. Out of the box, two basic implementations are provided: LeastActiveBalancingPolicy (the default) and RoundRobinBalancingPolicy. LeastActiveBalancingPolicy routes requests to the pools with the lowest number of active connections. This ensures a good spread of utilization across the cluster by sending requests to the machine that has the least number of connections. RoundRobinBalancingPolicy implements a simple round-robin distribution algorithm.| url = http://www.datastax.com/sites/default/files/hector-v2-client-doc.pdf}}
9. ^{{cite web| accessdate = 2011-04-12| location = http://www.datastax.com/| publisher = DataStax| title = Hector Client for Apache Cassandra: Configuration of Pooling| quote = The behavior of the underlying pools of client connections can be controlled by the ExhaustedPolicy. […]| url = http://www.datastax.com/sites/default/files/hector-v2-client-doc.pdf}}

External links

  • Apache Thrift
  • [https://github.com/hector-client/hector Hector on github]
  • The Cassandra Java client
{{DEFAULTSORT:Hector (Api)}}

3 : Distributed computing|Distributed data stores|Java (programming language)

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/22 21:12:45