[ https://issues.apache.org/jira/browse/HELIX-470?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14114309#comment-14114309 ]
Hudson commented on HELIX-470: ------------------------------ ABORTED: Integrated in helix #1287 (See [https://builds.apache.org/job/helix/1287/]) [HELIX-470] Netty-based IPC layer (brandt.greg: rev f2475fa9a6123052fea2588cdd4e439ddc7af020) * helix-ipc/src/main/java/org/apache/helix/resolver/ResolverRoutingTable.java * helix-core/src/main/java/org/apache/helix/spectator/RoutingTableProvider.java * helix-ipc/src/main/config/log4j.properties * helix-ipc/src/assemble/assembly.xml * helix-ipc/src/main/java/org/apache/helix/resolver/AbstractHelixResolver.java * helix-ipc/src/main/java/org/apache/helix/resolver/HelixResolver.java * helix-ipc/src/main/java/org/apache/helix/resolver/HelixAddress.java * helix-ipc/NOTICE * helix-ipc/src/main/java/org/apache/helix/ipc/HelixIPCMessageManager.java * helix-ipc/src/test/resources/run_benchmark.sh * helix-ipc/pom.xml * helix-ipc/src/test/java/org/apache/helix/resolver/TestZKHelixResolver.java * helix-ipc/src/main/java/org/apache/helix/resolver/zk/ZKHelixResolver.java * helix-ipc/src/test/resources/build_benchmark.sh * helix-ipc/src/main/java/org/apache/helix/resolver/HelixMessageScope.java * helix-ipc/src/main/java/org/apache/helix/ipc/HelixIPCService.java * helix-ipc/src/test/java/org/apache/helix/ipc/benchmark/BenchmarkDriver.java * helix-core/src/test/java/org/apache/helix/TestHelper.java * helix-ipc/LICENSE * helix-ipc/src/main/java/org/apache/helix/ipc/netty/NettyHelixIPCService.java * pom.xml * helix-ipc/src/main/java/org/apache/helix/ipc/HelixIPCCallback.java * helix-ipc/src/test/java/org/apache/helix/ipc/TestNettyHelixIPCService.java > Add performant IPC (Helix actors) > --------------------------------- > > Key: HELIX-470 > URL: https://issues.apache.org/jira/browse/HELIX-470 > Project: Apache Helix > Issue Type: Improvement > Components: helix-core > Affects Versions: 0.7.1, 0.6.4 > Reporter: Greg Brandt > Fix For: 0.7.1 > > > Helix is missing a high-performance way to exchange messages among resource > partitions, with a user-friendly API. > Currently, the Helix messaging service relies on creating many nodes in > ZooKeeper, which can lead to ZooKeeper outages if messages are sent too > frequently. > In order to avoid this, high-performance NIO-based {{HelixActors}} should be > implemented (in rough accordance with the actor model). {{HelixActors}} > exchange messages asynchronously without waiting for a response, and are > partition/state-addressable. > The API would look something like this: > {code} > public interface HelixActor<T> { > void send(Partition partition, String state, T message); > void register(String resource, HelixActorCallback<T> callback); > } > public interface HelixActorCallback<T> { > void onMessage(Partition partition, State state, T message); > } > {code} > {{#send}} should likely support wildcards for partition number and state, or > its method signature might need to be massaged a little bit for more > flexibility. But that's the basic idea. > Nothing is inferred about the format of the messages - the only metadata we > need to be able to interpret is (1) partition name and (2) state. The user > provides a codec to encode / decode messages, so it's nicer to implement > {{HelixActor#send}} and {{HelixActorCallback#onMessage}}. > {code} > public interface HelixActorMessageCodec<T> { > byte[] encode(T message); > T decode(byte[] message); > } > {code} > Actors should support somewhere around 100k to 1M messages per second. The > Netty framework is a potential implementation candidate, but should be > thoroughly evaluated w.r.t. performance. -- This message was sent by Atlassian JIRA (v6.2#6252)