zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ZOOKEEPER-2755) Allow to subclass ClientCnxnSocketNetty and NettyServerCnxn in order to use Netty Local transport
Date Sat, 08 Jul 2017 06:15:00 GMT

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

ASF GitHub Bot commented on ZOOKEEPER-2755:
-------------------------------------------

Github user eolivelli commented on the issue:

    https://github.com/apache/zookeeper/pull/227
  
    @ivankelly thanks for taking a look.
    I do not have numbers about local transport vs loopback.
    The first use case is to run unit tests of applications which use zk eithout opening ports.
Using an ephemeral port may work but it makes trickier setting up things. 
    Without opening ports you can run multiple parallel tests easily
    
    The second is to run applications which are made to run both in 'distributed' mode and
in single process mode and use zk and other libs, especially bookkeeper without opening ports.
    
    Opening a port can be seen as a security risk.
    For instance I have several apps which use bk as internal wal but I need to make zk port
open at least on loopback interface.
    
    I see that these points can be managed using SO level configs/tricks or using docker...but
I if cut off the network stack if zk and bk at all it will make packaging of these apps really
easy.
    
    I will update the commit message as well


> Allow to subclass ClientCnxnSocketNetty and NettyServerCnxn in order to use Netty Local
transport
> -------------------------------------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-2755
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2755
>             Project: ZooKeeper
>          Issue Type: New Feature
>          Components: java client, server
>    Affects Versions: 3.5.2
>            Reporter: Enrico Olivelli
>            Assignee: Enrico Olivelli
>
> ClientCnxnSocketNetty and NettyServerCnxn use explicitly InetSocketAddress class to work
with network addresses.
> We can do a little refactoring to use only SocketAddress and make it possible to create
subclasses of ClientCnxnSocketNetty and NettyServerCnxn which leverage built-in Netty 'local'
channels. 
> Such Netty local channels do not create real sockets and so allow a simple ZooKeeper
server + ZooKeeper client to be run on the same JVM without binding to real TCP endpoints.
> Usecases:
> Ability to run concurrently on the same machine tests of projects which use ZooKeeper
(usually in unit tests the server and the client run inside the same JVM) without dealing
with random ports and in general using less network resources
> Run simplified (standalone, all processes in the same JVM) versions of applications which
need a working ZooKeeper ensemble to run.
> Note:
> Embedding ZooKeeper server + client on the same JVM has many risks and in general I think
we should encourage users to do so, so I in this patch I will not provide official implementations
of ClientCnxnSocketNetty and NettyServerCnxn. There will be implementations only inside the
test packages, in order to test that most of the features are working with custom socket factories
and in particular with the 'LocalAddress' specific subclass of SocketAddress.
> Note:
> the 'Local' sockets feature will be available on Netty 4 too



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message