Daniel Wong created PHOENIX-6491:
------------------------------------
Summary: Phoenix High Availability
Key: PHOENIX-6491
URL: https://issues.apache.org/jira/browse/PHOENIX-6491
Project: Phoenix
Issue Type: New Feature
Components: core
Reporter: Daniel Wong
Assignee: Daniel Wong
This JIRA proposes Phoenix High Availability (HA) feature which allows Phoenix
users to interact with multiple Phoenix/HBase clusters in order to achieve
additional availability compared to a single cluster. In particular we target
the common deployment configuration of 2 HBase clusters with master/master
asynchronous replication enabled between the queried tables, but with
consideration to future extensions in use cases, replication, and number of
clusters.
Currently targeted use cases:
# Active-Standby HA for disaster recovery, enables end users to switch HBase
clusters (triggered by administrators) collectively across multiple clients
without restarting.
# Active-Active HA for immutable use cases with point get queries without
deletes, enables a client to connect to both clusters simultaneously for these
use cases which inherently have relaxed consistency requirements.
Concepts:
* HA Group - An HA group is an association between a pair of HBase clusters, a
group of Phoenix clients, metadata state, and an HA policy (see below). HA
groups are pre-defined and a client provides the group name when creating a
phoenix connection to the clusters in that HA group. Note that the same pair of
HBase clusters can be in multiple HA groups. This allows clients to be grouped
based on different use cases, availability requirements, consistency
requirements, and load balancing.
* HA Policy - Every HA group has an associated HA policy which specifies how
to use the HBase clusters pair. This is implemented by an interface that
replaces the JDBC Connection as well as changes in the public APIs in
QueryServices. Currently, there are 2 policies one for each targeted use case
defined above. It is possible to support more HA policies in future for
incoming use cases.
* Metadata Store - Stores the state / manages the state transitions of an HA
group. For example in the Active-Standby setup the store manages which cluster
is currently Active to which all clients in that HA group should connect. For a
particular HA group an entry is referred to as a Cluster Role Record.
* HA Client - JDBC implementation as well as a handler for metadata store
state changes. End users will use via PhoenixDriver with JDBC string with
special format {{jdbc:phoenix:[zk1,zk2,zk3|zk1',zk2',zk3']}} and HA group name
in the connection properties. Using such a JDBC connection for creating
{{Statement}} or querying a {{ResultSet}} does not require any application code
change. Internally, the implementation will serve incoming client operation
requests according to the HA policy of that group.
More details to come with a detailed design document.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)