[ 
https://issues.apache.org/jira/browse/PHOENIX-6491?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Viraj Jasani updated PHOENIX-6491:
----------------------------------
    Fix Version/s: 5.2.0

> 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
>            Priority: Major
>             Fix For: 5.2.0
>
>
> 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.
> Not Supported: 
>     Multiple Kerberos Authentication, each cluster must use the same auth.  
> This could be addressed in a future release.
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to