Mohammad Arshad created ZOOKEEPER-4282:
------------------------------------------

             Summary: Redesign quota feature
                 Key: ZOOKEEPER-4282
                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-4282
             Project: ZooKeeper
          Issue Type: New Feature
          Components: quota
            Reporter: Mohammad Arshad
            Assignee: Mohammad Arshad
             Fix For: 3.8.0


*Quota Use Case:*

Generally in a big data solution deployment multiple services (hdfs, yarn, 
hbase etc.) use single Zookeeper cluster. So it is very important to ensure 
fare usage by all services. Sometime services unintentionally, mainly because 
of faulty behavior, create many znodes and impact the overall reliability of 
the ZooKeeper service. To ensure the faire usage quota feature is required. But 
this is the only use case there are many other use cases for quota feature.

*Current Problems:*

# Currently, user can set quota by updating znode “/zookeeper/quota/nodepath”, 
or using setquota/delquota in CLI command.
This makes the quota setting infective
Currently any user can set/delete quota, which is not proper, it should be 
admin operation
# User is allowed to modify zookeeper system paths like /zookeeper/quota. These 
are internal to zookeeper should not be allowed to modify.
# Generally services create single top level znode in Zookeeper like /hbase and 
create all required znode under it. 
It is better if it is configurable who can create top level znodes to controll 
ZooKeeper usage.
# After ZOOKEEPER-231, there two kinds quota enforcement limits 1. Hard limit 
2. Soft limit. 
I think there should be only limit. When enforce quota is enabled that limits 
becomes the hard limit otherwise it is soft limit same as old feature, just 
logs warnings.

*Proposed Solution*

# Add setQuota and deleteQuota admin APIs. Add listQuota normal user API
Modify quota cli commands to use these APIs instead of directory modifying 
ZooKeeper system path /zookeeper/quota/
# Protect ZooKeeper system paths from outside modification. System should only 
be readable from outside
# Expose configuration to set ACL for root system znode. 
After this, at the time of ZooKeeper service deployment administrator can 
create top level znode for a service and set quota. This way we can control 
overall ZooKeeper usage
# Revert some of the changes in ZOOKEEPER-231 and move to single quota limit





--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to