bharathv commented on a change in pull request #1880:
URL: https://github.com/apache/hbase/pull/1880#discussion_r438402629



##########
File path: src/main/asciidoc/_chapters/architecture.adoc
##########
@@ -260,6 +260,73 @@ For region name, we only accept `byte[]` as the parameter 
type and it may be a f
 
 Information on non-Java clients and custom protocols is covered in 
<<external_apis>>
 
+[[client.masterregistry]]
+=== Master registry (new as of release 3.0.0)
+
+Client internally works with a _connection registry_ to fetch the metadata 
needed by connections.
+This connection registry implementation is responsible for fetching the 
following metadata.
+
+* Active master address
+* Current meta region(s) locations
+* Cluster ID (unique to this cluster)
+
+This information is needed as a part of various client operations like 
connection set up, scans,
+gets etc. Up until releases 2.x.y, the default connection registry is based on 
ZooKeeper as the
+source of truth and the the clients fetched the metadata from zookeeper 
znodes. As of release 3.0.0,
+the default implementation for connection registry has been switched  to a 
master based
+implementation. With this change, the clients now fetch the required metadata 
from master RPC end
+points directly. This change was done for the following reasons.
+
+* Reduce load on ZooKeeper since that is critical for cluster operation.
+* Holistic client timeout and retry configurations since the new registry 
brings all the client
+operations under HBase rpc framework.
+* Remove the ZooKeeper client dependency on HBase client library.
+
+This means that
+
+* At least a single active or stand by master is needed for cluster connection 
setup. Refer to
+<<master.runtime>> for more details.
+* Master can be in a critical path of read/write operations, especially if the 
client metadata cache
+is empty or stale.
+* There is higher connection load on the masters that before since the clients 
talk directly to
+HMasters instead of ZooKeeper ensemble`
+
+To reduce hot-spotting on a single master, all the masters (active & stand-by) 
expose the needed
+service to fetch the connection metadata. This lets the client connect to any 
master (not just active).
+
+==== RPC hedging

Review comment:
       Not really, the functionality was moved from rpc layer to the master 
registry, so from a user perspective it didn't change much. But certain configs 
changed, will cover as a part of 
https://issues.apache.org/jira/browse/HBASE-24535

##########
File path: src/main/asciidoc/_chapters/architecture.adoc
##########
@@ -260,6 +260,73 @@ For region name, we only accept `byte[]` as the parameter 
type and it may be a f
 
 Information on non-Java clients and custom protocols is covered in 
<<external_apis>>
 
+[[client.masterregistry]]
+=== Master registry (new as of release 3.0.0)

Review comment:
       Will do as a part of https://issues.apache.org/jira/browse/HBASE-24535. 
Thanks for pointing it out.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to