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

Raul Gutierrez Segales commented on ZOOKEEPER-2098:
---------------------------------------------------

[~hdeng]: typo in the commit message, it's ZOOKEEPER-2098 not ZOOKEEPER-2198

> QuorumCnxManager: use BufferedOutputStream for initial msg
> ----------------------------------------------------------
>
>                 Key: ZOOKEEPER-2098
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2098
>             Project: ZooKeeper
>          Issue Type: Improvement
>          Components: quorum, server
>    Affects Versions: 3.5.0
>            Reporter: Raul Gutierrez Segales
>            Assignee: Raul Gutierrez Segales
>             Fix For: 3.5.1, 3.6.0
>
>         Attachments: ZOOKEEPER-2098.patch, ZOOKEEPER-2098.patch
>
>
> Whilst writing fle-dump (a tool like 
> [zk-dump|https://github.com/twitter/zktraffic/], but to dump 
> FastLeaderElection messages), I noticed that QCM is using DataOutputStream 
> (which doesn't buffer) directly.
> So all calls to write() are written immediately to the network, which means 
> simple messaages like two participants exchanging Votes can take a couple 
> RTTs! This is specially terrible for global clusters (i.e.: x-country RTTs).
> The solution is to use BufferedOutputStream for the initial negotiation 
> between members of the cluster. Note that there are other places were 
> suboptimal (but not entirely unbuffered) writes to the network still exist. 
> I'll get those in separate tickets.
> After using BufferedOutputStream we get only 1 RTT for the initial message, 
> so elections & time for for participants to join a cluster is reduced.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to