[ 
https://issues.apache.org/jira/browse/EAGLE-50?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hao Chen updated EAGLE-50:
--------------------------
    Description: 
Metric Framework General Design

MetricOperator
{code:title=MetricOperator|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true}

{code}

{code:title=MetricOperator|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true}
public interface MetricOperator {
        double update(double value);
}
{code}

Metric

{code:title=MetricOperator|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true}
public abstract class Metric implements MetricOperator {
        protected final long timestamp;
        protected final Map<String, String> dimensions;
        protected final String metricName;
        protected final AtomicDouble value;
}
{code}

CountingMetric

{code:title=MetricOperator|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true}
public class CountingMetric extends Metric {
        @Override
        public double update(double delta) {
                return value.addAndGet(delta);
    }
}
{code}


MetricReport


{code:title=MetricOperator|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true}public
 interface MetricReport {
        void emit(List<Metric> list);
}
{code}

MetricReportFactory

{code:title=MetricOperator|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true}
public class MetricReportFactory {
        public MetricReport static getReportor(MetricReportType type, String 
... args);
}
{code}

MetricManager

{code:title=MetricOperator|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true}
public class MetricManager {
        void register(String name, MetricReport report);
        Map<String, MetricReport> getRegisteredReports();
        void emit(List<Metric> list);
}
{code}

> Eagle internal metric framework
> -------------------------------
>
>                 Key: EAGLE-50
>                 URL: https://issues.apache.org/jira/browse/EAGLE-50
>             Project: Eagle
>          Issue Type: Improvement
>            Reporter: Hao Chen
>
> Metric Framework General Design
> MetricOperator
> {code:title=MetricOperator|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true}
> {code}
> {code:title=MetricOperator|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true}
> public interface MetricOperator {
>         double update(double value);
> }
> {code}
> Metric
> {code:title=MetricOperator|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true}
> public abstract class Metric implements MetricOperator {
>         protected final long timestamp;
>         protected final Map<String, String> dimensions;
>         protected final String metricName;
>         protected final AtomicDouble value;
> }
> {code}
> CountingMetric
> {code:title=MetricOperator|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true}
> public class CountingMetric extends Metric {
>         @Override
>         public double update(double delta) {
>                 return value.addAndGet(delta);
>     }
> }
> {code}
> MetricReport
> {code:title=MetricOperator|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true}public
>  interface MetricReport {
>         void emit(List<Metric> list);
> }
> {code}
> MetricReportFactory
> {code:title=MetricOperator|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true}
> public class MetricReportFactory {
>         public MetricReport static getReportor(MetricReportType type, String 
> ... args);
> }
> {code}
> MetricManager
> {code:title=MetricOperator|theme=FadeToGrey|linenumbers=true|language=java|firstline=0001|collapse=true}
> public class MetricManager {
>         void register(String name, MetricReport report);
>         Map<String, MetricReport> getRegisteredReports();
>         void emit(List<Metric> list);
> }
> {code}



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

Reply via email to