storm-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <>
Subject [jira] [Commented] (STORM-200) Proposal for Multilang's Metrics feature
Date Tue, 25 Feb 2014 16:24:24 GMT


ASF GitHub Bot commented on STORM-200:

Github user revans2 commented on a diff in the pull request:
    --- Diff: storm-core/src/jvm/backtype/storm/metric/api/ ---
    @@ -17,6 +17,19 @@
     package backtype.storm.metric.api;
    +import java.util.List;
     public interface IMetric {
    +	public static final String SHELL_METRICS_UPDATE_METHOD_NAME = "updateMetricFromRPC";
         public Object getValueAndReset();
    +    /***
    +     * @function
    +     * 	This interface is used by ShellBolt, through RPC call to update Metric 
    +     * @param
    +     * 	params used to update metric, its's meaning change according implementation
    +     *  Object is the type, should be String, Long, Double, Boolean
    +     * */
    +    public void updateMetricFromRPC(List<Object> params);
    --- End diff --
    I personally would prefer to see this method put into a separate interface that other
metrics can also implement if it makes sine for them to.  This would maintain backwards compatibility
with existing user defined metrics implementations. 

> Proposal for Multilang's Metrics feature
> ----------------------------------------
>                 Key: STORM-200
>                 URL:
>             Project: Apache Storm (Incubating)
>          Issue Type: New Feature
>            Reporter: DashengJu
>            Priority: Minor
> Storm exposes a metrics interface to report summary statistics across the full
topology. We can build our own metric, and build metrics consumer to use those statistics.
> But when we use Multilang(ie. Python), we can not use this feature. So we want to summit
a proposal for multilang's metrics. 
> The specifics of the proposal:
> 1. The main idea is: when user want to add a metric statistics in multilang(python) bolt,
>     a) he need first create a metric object and register in ShellBolt's sub-class, 
>     b) then update the metric in Python bolt process through RPC call.
> 2. In Metrics API:
>     a) extend IMetric interface add a method for RPC call:public void updateMetricFromRPC(List<Object>
>     b) modify IMetric implements, to support updateMetricFromRPC;
> 3. In ShellBolt,
>     a) we have a Map<String, IMetric> to hold user's registered metrics  object;
>     b) we have a method registerMetric(String name, T metric) for user to register their
metris object;
>     c) we have a method handleMetrics(Map action) to handle RPC call from Python process;
> 4) In Multilang protocol: add a command "metrics" for shell process to make RPC call.
The protocol is: {"command":"metrics", "name":"metric-registerd-name", "params":["param-1",
> 5) In rpcMetrics(name, params), user can update remote metric through
this RPC call.
> any suggestions?

This message was sent by Atlassian JIRA

View raw message