多维时间序列记录库 Netflix Spectator

Apache
Java
跨平台
Netflix
2015-05-15
叶秀兰

Spectator 是记录多维时间序列的简单插装代码库,要求 Java 7 及以上版本。

代码示例:

// The Spectator class provides a static lookup for the default registry
Server s = new Server(Spectator.registry());
public class Server {
  private final ExtendedRegistry registry;
  private final Id requestCountId;
  private final Timer requestLatency;
  private final DistributionSummary responseSizes;
  // We can pass in the registry to make unit testing easier. Outside of tests it should typically
  // be bound to Spectator.registry() to make sure data goes to the right place.
  public Server(ExtendedRegistry registry) {
    this.registry = registry;
    // Create a base id for the request count. The id will get refined with additional dimensions
    // when we receive a request.
    requestCountId = registry.createId("server.requestCount");
    // Create a timer for tracking the latency. The reference can be held onto to avoid
    // additional lookup cost in critical paths.
    requestLatency = registry.timer("server.requestLatency");
    // Create a distribution summary meter for tracking the response sizes.
    responseSizes = registry.distributionSummary("server.responseSizes");
    // Gauge type that can be sampled. In this case it will invoke the specified method via
    // reflection to get the value. The registry will keep a weak reference to the object passed
    // in so that registration will not prevent garbage collection of the server object.
    registry.methodValue("server.numConnections", this, "getNumConnections");
  }
  public Response handle(Request req) {
    final long s = System.nanoTime();
    try {
      Response res = doSomething(req);
      // Update the counter id with dimensions based on the request. The counter will then
      // be looked up in the registry which should be fairly cheap, such as lookup of id object
      // in a ConcurrentHashMap. However, it is more expensive than having a local variable set
      // to the counter.
      final Id cntId = requestCountId
        .withTag("country", req.country())
        .withTag("status", res.status());
      registry.counter(cntId).increment();
      responseSizes.record(res.body().size());
      return res;
    } catch (Exception e) {
      final Id cntId = requestCountId
        .withTag("country", req.country())
        .withTag("status", "exception")
        .withTag("error", e.getClass().getSimpleName());
      registry.counter(cntId).increment();
      throw e;
    } finally {
      // Update the latency timer. This should typically be done in a finally block.
      requestLatency.record(System.nanoTime() - s, TimeUnit.NANOSECONDS);
    }
  }
  public int getNumConnections() {
    // however we determine the current number of connections on the server
  }
}


加载中

评论(0)

暂无评论

暂无资讯

暂无问答

Atlas+Spectator+Grafana搭建实时监控平台

转载请注明原创地址:http://my.oschina.net/u/2408085/blog/733900 ## 平台组成 ### Atlas Netflix开源的管理多维时序数据的metrics后端服务系统。可以用于汇总存储基于Spectator库收集到的...

2016/08/17 11:28
1K
2
Netflix开源技术介绍

Netflix开源技术介绍

2016/04/10 23:48
171
1
Netflix开源技术介绍[转]

摘要 Netflix开源技术介绍 大数据 数据是无价的,为了向客户提供极致的服务,Netflix拥有一套完善的大数据技术生态系统用于用户数据的分析和挖掘。Netflix不仅使用 Hadoop、Hive、Pig、Parqu...

2016/08/31 12:26
416
0
SpringCloud学习笔记:微服务和SpringCloud是什么?

一、什么是微服务 1、马丁福勒对微服务的概述:微服务架构一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组组小的服务,每个服务运行在其独立的进程中,服务之间相互协作、...

2018/10/29 15:12
30
0
微服务为什么选Spring Cloud?

现如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时,支持微服务的技术栈也是多种多样的,本系列文章主要介绍这些技术中的翘楚——Spring Cloud。这是...

2018/12/10 15:06
25
0
Java开发微服务为什么一定要选spring cloud?

现如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时,支持微服务的技术栈也是多种多样的,本系列文章主要介绍这些技术中的翘楚——Spring Cloud。这是...

2018/07/03 22:10
14
0
各种密码找回 方法(仅供参考)

在日常操作中,我们经常要输入各种各样的密码,例 如开机时要输入密码,QQ时也要先输入密码,假如你忘记了这 些密码,就有可能用不了机器、打不开文件、不能聊天...。 也许还会造成很大的损失...

2015/07/23 13:49
62
0
Words Six

chauvinism狭隘的爱国主义-沙文主义 maternal grandfather matr-母亲/国家 matrix 母体 母带 矩阵 a multitude of 许多 considerable/many/a number of/gluts of/massive/plenty of/numbers...

2015/08/17 09:22
12
0
【转载】跟花和尚学系统设计:明星公司之Netflix(下篇)

# 前言 下面扯一扯Netflix和AWS的紧密关系以及Netflix的各种周边和八卦。 # Netflix and AWS ![](http://mmbiz.qpic.cn/mmbiz/edSnflBH739PYkmicJcav2lNBuCze95txYvR5W367CG3Y9rWW6mUXV8pTJx...

2016/10/04 14:12
303
0
Netflix下载占用了三分之一互联网带宽

一则最新 报告确 认了你所猜测的事件——Netflix下载占用了几乎三分之一互联网带宽。“Netflix占用了北美互联网下行流量峰值的32.7%。”该报告还显示: “尽管出现过一些负面的订阅者行动,N...

2011/11/04 10:54
38
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部