UNPKG

pandora-metrics

Version:
58 lines (57 loc) 2.68 kB
import { Metric } from '../domain'; import { LongBucketCounter } from './LongBucketCounter'; import { Long } from '../../domain'; export interface IFastCompass extends Metric { /** * 记录一次方法调用的RT和子类别,子类别应当是正交的,不能有重叠 * 例如 成功/失败 * record a method invocation with execution time and sub-categories * @param duration must be milliseconds * @param subCategory all the sub-categories should be orthogonal, * which will be added up to the total number of method invocations */ record(duration: any, subCategory: any): any; /** * 对于每个子类别,返回每个统计间隔的方法调用总次数 * return method count per bucket per category * @return */ getMethodCountPerCategory(startTime?: any): Map<string, Map<number, Long>>; /** * 对于每个子类别,返回每个统计间隔的执行总时间和次数,按位分离操作放到下一层进行 * return method execution time and count per bucket per category * @return */ getMethodRtPerCategory(startTime?: any): Map<string, Map<number, Long>>; /** * 对于每个子类别,返回每个统计间隔的执行总时间和次数,按位分离操作放到下一层进行 * return method execution time and count per bucket per category * @return */ getCountAndRtPerCategory(startTime: any): Map<string, Map<number, Long>>; /** * 获取统计间隔 * @return the bucket interval */ getBucketInterval(): any; } /** * 通过1个LongAdder来同时完成count和rt的累加操作 * Java里面1个Long有64个bit, 除去最高位表示符号的1个bit,还有63个bit可以使用 * 在一个不超过60s统计周期内,方法调用的总次数和总次数其实完全用不到63个bit * 所以可以将这两个统计项放到一个long里面来表示 * 这里高位的25个bit表示统计周期内调用总次数,后38位表示总rt */ export declare class BaseFastCompass implements IFastCompass { type: string; bucketInterval: any; numberOfBuckets: any; maxCategoryCount: any; subCategories: Map<string, LongBucketCounter>; constructor(bucketInterval?: number, numberOfBuckets?: number, maxCategoryCount?: number); record(duration: number, subCategory: string): void; getMethodCountPerCategory(startTime?: number): Map<string, Map<number, Long>>; getMethodRtPerCategory(startTime?: number): Map<string, Map<number, Long>>; getBucketInterval(): any; getCountAndRtPerCategory(startTime?: number): Map<string, Map<number, Long>>; }