多维时间序列记录库 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开源技术介绍 大数据 数据是无价的,为了向客户提供极致的服务,Netflix拥有一套完善的大数据技术生态系统用于用户数据的分析和挖掘。Netflix不仅使用 Hadoop、Hive、Pig、Parqu...

2016/08/31 12:26
403
0
Netflix开源技术介绍

Netflix开源技术介绍

2016/04/10 23:48
168
1
SpringCloud学习笔记:微服务和SpringCloud是什么?

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

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

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

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(上篇)

# 引子 当你深入学习**System Design**一段时间以后,你会发现,不管是读科技文章还是看tech conference视频,一个公司的名字总是反复出现,避也避不开。 这是哪家公司呢? 刚开始接触System ...

2016/10/04 11:54
334
0
【转载】跟花和尚学系统设计:明星公司之Netflix(下篇)

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

2016/10/04 14:12
278
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部