/* * Copyright 1999-2018 Alibaba Group Holding Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.alibaba.csp.sentinel.dashboard.datasource.entity; import java.util.Date; /** * @author leyou */ public class MetricEntity { private Long id; private Date gmtCreate; private Date gmtModified; private String app; /** * 监控信息的时间戳 */ private Date timestamp; private String resource; private Long passQps; private Long successQps; private Long blockQps; private Long exceptionQps; /** * summary rt of all success exit qps. */ private double rt; /** * 本次聚合的总条数 */ private int count; private int resourceCode; public static MetricEntity copyOf(MetricEntity oldEntity) { MetricEntity entity = new MetricEntity(); entity.setId(oldEntity.getId()); entity.setGmtCreate(oldEntity.getGmtCreate()); entity.setGmtModified(oldEntity.getGmtModified()); entity.setApp(oldEntity.getApp()); entity.setTimestamp(oldEntity.getTimestamp()); entity.setResource(oldEntity.getResource()); entity.setPassQps(oldEntity.getPassQps()); entity.setBlockQps(oldEntity.getBlockQps()); entity.setSuccessQps(oldEntity.getSuccessQps()); entity.setExceptionQps(oldEntity.getExceptionQps()); entity.setRt(oldEntity.getRt()); entity.setCount(oldEntity.getCount()); return entity; } public synchronized void addPassQps(Long passQps) { this.passQps += passQps; } public synchronized void addBlockQps(Long blockQps) { this.blockQps += blockQps; } public synchronized void addExceptionQps(Long exceptionQps) { this.exceptionQps += exceptionQps; } public synchronized void addCount(int count) { this.count += count; } public synchronized void addRtAndSuccessQps(double avgRt, Long successQps) { this.rt += avgRt * successQps; this.successQps += successQps; } /** * {@link #rt} = {@code avgRt * successQps} * * @param avgRt average rt of {@code successQps} * @param successQps */ public synchronized void setRtAndSuccessQps(double avgRt, Long successQps) { this.rt = avgRt * successQps; this.successQps = successQps; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Date getGmtCreate() { return gmtCreate; } public void setGmtCreate(Date gmtCreate) { this.gmtCreate = gmtCreate; } public Date getGmtModified() { return gmtModified; } public void setGmtModified(Date gmtModified) { this.gmtModified = gmtModified; } public String getApp() { return app; } public void setApp(String app) { this.app = app; } public Date getTimestamp() { return timestamp; } public void setTimestamp(Date timestamp) { this.timestamp = timestamp; } public String getResource() { return resource; } public void setResource(String resource) { this.resource = resource; this.resourceCode = resource.hashCode(); } public Long getPassQps() { return passQps; } public void setPassQps(Long passQps) { this.passQps = passQps; } public Long getBlockQps() { return blockQps; } public void setBlockQps(Long blockQps) { this.blockQps = blockQps; } public Long getExceptionQps() { return exceptionQps; } public void setExceptionQps(Long exceptionQps) { this.exceptionQps = exceptionQps; } public double getRt() { return rt; } public void setRt(double rt) { this.rt = rt; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public int getResourceCode() { return resourceCode; } public Long getSuccessQps() { return successQps; } public void setSuccessQps(Long successQps) { this.successQps = successQps; } @Override public String toString() { return "MetricEntity{" + "id=" + id + ", gmtCreate=" + gmtCreate + ", gmtModified=" + gmtModified + ", app='" + app + '\'' + ", timestamp=" + timestamp + ", resource='" + resource + '\'' + ", passQps=" + passQps + ", blockQps=" + blockQps + ", successQps=" + successQps + ", exceptionQps=" + exceptionQps + ", rt=" + rt + ", count=" + count + ", resourceCode=" + resourceCode + '}'; } }