From daa753a6a7f6f5cd9429953da15cc50f5f4bba3a Mon Sep 17 00:00:00 2001 From: pengys5 <8082209@qq.com> Date: Mon, 10 Apr 2017 21:00:27 +0800 Subject: [PATCH] add comments class in selector package --- .../actor/selector/AbstractHashMessage.java | 6 ++++++ .../collector/actor/selector/HashCodeSelector.java | 12 ++++++++++++ .../collector/actor/selector/RollingSelector.java | 11 +++++++++++ .../collector/actor/selector/WorkerSelector.java | 14 ++++++++++++++ 4 files changed, 43 insertions(+) diff --git a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/AbstractHashMessage.java b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/AbstractHashMessage.java index 0a5f64a14..c3f336f83 100644 --- a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/AbstractHashMessage.java +++ b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/AbstractHashMessage.java @@ -1,6 +1,12 @@ package com.a.eye.skywalking.collector.actor.selector; /** + * The AbstractHashMessage should be implemented by any class whose instances + * are intended to provide send message with {@link HashCodeSelector}. + *

+ * Usually the implemented class used to persistence data to database + * or aggregation the metric, + * * @author pengys5 */ public abstract class AbstractHashMessage { diff --git a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/HashCodeSelector.java b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/HashCodeSelector.java index a3d46df68..aef766ab1 100644 --- a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/HashCodeSelector.java +++ b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/HashCodeSelector.java @@ -1,14 +1,26 @@ package com.a.eye.skywalking.collector.actor.selector; +import com.a.eye.skywalking.collector.actor.AbstractWorker; import com.a.eye.skywalking.collector.actor.WorkerRef; import java.util.List; /** + * The HashCodeSelector is a simple implementation of {@link WorkerSelector}. + * It choose {@link WorkerRef} by message {@link AbstractHashMessage} key's hashcode, so it can use to send the same hashcode + * message to same {@link WorkerRef}. Usually, use to database operate which avoid dirty data. + * * @author pengys5 */ public class HashCodeSelector implements WorkerSelector { + /** + * Use message hashcode to select {@link WorkerRef}. + * + * @param members given {@link WorkerRef} list, which size is greater than 0; + * @param message the {@link AbstractWorker} is going to send. + * @return the selected {@link WorkerRef} + */ @Override public WorkerRef select(List members, Object message) { if (message instanceof AbstractHashMessage) { diff --git a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/RollingSelector.java b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/RollingSelector.java index ec0f89822..e56fed414 100644 --- a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/RollingSelector.java +++ b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/RollingSelector.java @@ -1,16 +1,27 @@ package com.a.eye.skywalking.collector.actor.selector; +import com.a.eye.skywalking.collector.actor.AbstractWorker; import com.a.eye.skywalking.collector.actor.WorkerRef; import java.util.List; /** + * The RollingSelector is a simple implementation of {@link WorkerSelector}. + * It choose {@link WorkerRef} nearly random, by round-robin. + * * @author pengys5 */ public class RollingSelector implements WorkerSelector { private int index = 0; + /** + * Use round-robin to select {@link WorkerRef}. + * + * @param members given {@link WorkerRef} list, which size is greater than 0; + * @param message message the {@link AbstractWorker} is going to send. + * @return the selected {@link WorkerRef} + */ @Override public WorkerRef select(List members, Object message) { int size = members.size(); diff --git a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/WorkerSelector.java b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/WorkerSelector.java index c7a607f47..733c9f23f 100644 --- a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/WorkerSelector.java +++ b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/selector/WorkerSelector.java @@ -1,12 +1,26 @@ package com.a.eye.skywalking.collector.actor.selector; +import com.a.eye.skywalking.collector.actor.AbstractWorker; import com.a.eye.skywalking.collector.actor.WorkerRef; import java.util.List; /** + * The WorkerSelector should be implemented by any class whose instances + * are intended to provide select a {@link WorkerRef} from a {@link WorkerRef} list. + *

+ * Actually, the WorkerRef is designed to provide a routing ability in the collector cluster + * * @author pengys5 */ public interface WorkerSelector { + + /** + * select a {@link WorkerRef} from a {@link WorkerRef} list. + * + * @param members given {@link WorkerRef} list, which size is greater than 0; + * @param message the {@link AbstractWorker} is going to send. + * @return the selected {@link WorkerRef} + */ T select(List members, Object message); }