[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-3140?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16713870#comment-16713870
 ] 

Hudson commented on ZOOKEEPER-3140:
-----------------------------------

SUCCESS: Integrated in Jenkins build ZooKeeper-trunk #301 (See 
[https://builds.apache.org/job/ZooKeeper-trunk/301/])
ZOOKEEPER-3140: Allow Followers to host Observers (fangmin: rev 
b2513c114931dc377bac5e1d39e2f81c6e8cf17e)
* (edit) 
zookeeper-server/src/test/java/org/apache/zookeeper/test/ObserverTest.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Observer.java
* (add) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LearnerHandlerBean.java
* (add) 
zookeeper-server/src/test/java/org/apache/zookeeper/test/ObserverMasterTest.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java
* (add) 
zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/DelayRequestProcessor.java
* (add) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LearnerMaster.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/admin/Commands.java
* (edit) zookeeper-server/src/test/resources/findbugsExcludeFile.xml
* (edit) zookeeper-server/src/test/java/org/apache/zookeeper/ZKTestCase.java
* (edit) zookeeper-docs/src/main/resources/markdown/zookeeperObservers.md
* (add) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/ObserverMaster.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Follower.java
* (edit) 
zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/LearnerHandlerTest.java
* (edit) 
zookeeper-server/src/test/java/org/apache/zookeeper/test/ReconfigTest.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LeaderZooKeeperServer.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Learner.java
* (add) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LearnerHandlerMXBean.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/FollowerBean.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/ObserverMXBean.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/FollowerZooKeeperServer.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LearnerHandler.java
* (edit) zookeeper-docs/src/main/resources/markdown/zookeeperAdmin.md
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/ObserverBean.java
* (edit) 
zookeeper-server/src/test/java/org/apache/zookeeper/server/util/PortForwarder.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumPeer.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/FollowerRequestProcessor.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumPeerMain.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/FollowerMXBean.java
* (edit) 
zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java


> Allow Followers to host Observers
> ---------------------------------
>
>                 Key: ZOOKEEPER-3140
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3140
>             Project: ZooKeeper
>          Issue Type: New Feature
>          Components: server
>    Affects Versions: 3.6.0
>            Reporter: Brian Nixon
>            Assignee: Brian Nixon
>            Priority: Minor
>              Labels: pull-request-available
>             Fix For: 3.6.0
>
>          Time Spent: 8h 20m
>  Remaining Estimate: 0h
>
> Observers function simple as non-voting members of the ensemble, sharing the 
> Learner interface with Followers and holding only a slightly difference 
> internal pipeline. Both maintain connections along the quorum port with the 
> Leader by which they learn of all new proposals on the ensemble. 
>  
>  There are benefits to allowing Observers to connect to the Followers to plug 
> into the commit stream in addition to connecting to the Leader. It shifts the 
> burden of supporting Observers off the Leader and allow it to focus on 
> coordinating the commit of writes. This means better performance when the 
> Leader is under high load, particularly high network load such as can happen 
> after a leader election when many Learners need to sync. It also reduces the 
> total network connections maintained on the Leader when there are a high 
> number of observers. One the other end, Observer availability is improved 
> since it will take shorter time for a high number of Observers to finish 
> syncing and start serving client traffic.
>  
>  The current implementation only supports scaling the number of Observers 
> into the hundreds before performance begins to degrade. By opening up 
> Followers to also host Observers, over a thousand observers can be hosted on 
> a typical ensemble without major negative impact under both normal operation 
> and during post-leader election sync.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to