内容简介:本文主要研究一下dubbo的StatusCheckerdubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo/common/status/Status.javadubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo/common/status/StatusChecker.java
序
本文主要研究一下dubbo的StatusChecker
Status
dubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo/common/status/Status.java
public class Status {
private final Level level;
private final String message;
private final String description;
public Status(Level level) {
this(level, null, null);
}
public Status(Level level, String message) {
this(level, message, null);
}
public Status(Level level, String message, String description) {
this.level = level;
this.message = message;
this.description = description;
}
public Level getLevel() {
return level;
}
public String getMessage() {
return message;
}
public String getDescription() {
return description;
}
/**
* Level
*/
public enum Level {
/**
* OK
*/
OK,
/**
* WARN
*/
WARN,
/**
* ERROR
*/
ERROR,
/**
* UNKNOWN
*/
UNKNOWN
}
}
- Status定义了三个属性,分别是level、message、description;其中level有OK、WARN、ERROR、UNKNOWN四个级别
StatusChecker
dubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo/common/status/StatusChecker.java
@SPI
public interface StatusChecker {
/**
* check status
*
* @return status
*/
Status check();
}
- StatusChecker定义了check接口,返回Status
LoadStatusChecker
dubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo/common/status/support/LoadStatusChecker.java
@Activate
public class LoadStatusChecker implements StatusChecker {
@Override
public Status check() {
OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
double load;
try {
Method method = OperatingSystemMXBean.class.getMethod("getSystemLoadAverage", new Class<?>[0]);
load = (Double) method.invoke(operatingSystemMXBean, new Object[0]);
if (load == -1) {
com.sun.management.OperatingSystemMXBean bean =
(com.sun.management.OperatingSystemMXBean) operatingSystemMXBean;
load = bean.getSystemCpuLoad();
}
} catch (Throwable e) {
load = -1;
}
int cpu = operatingSystemMXBean.getAvailableProcessors();
return new Status(load < 0 ? Status.Level.UNKNOWN : (load < cpu ? Status.Level.OK : Status.Level.WARN),
(load < 0 ? "" : "load:" + load + ",") + "cpu:" + cpu);
}
}
- LoadStatusChecker实现了StatusChecker接口,其check方法从operatingSystemMXBean的getSystemLoadAverage方法读取load,然后根据cpu个数来计算load
MemoryStatusChecker
dubbo-2.7.2/dubbo-common/src/main/java/org/apache/dubbo/common/status/support/MemoryStatusChecker.java
@Activate
public class MemoryStatusChecker implements StatusChecker {
@Override
public Status check() {
Runtime runtime = Runtime.getRuntime();
long freeMemory = runtime.freeMemory();
long totalMemory = runtime.totalMemory();
long maxMemory = runtime.maxMemory();
boolean ok = (maxMemory - (totalMemory - freeMemory) > 2048); // Alarm when spare memory < 2M
String msg = "max:" + (maxMemory / 1024 / 1024) + "M,total:"
+ (totalMemory / 1024 / 1024) + "M,used:" + ((totalMemory / 1024 / 1024) - (freeMemory / 1024 / 1024)) + "M,free:" + (freeMemory / 1024 / 1024) + "M";
return new Status(ok ? Status.Level.OK : Status.Level.WARN, msg);
}
}
-
MemoryStatusChecker实现了实现了StatusChecker接口,其check方法从Runtime获取freeMemory、totalMemory、maxMemory,当
maxMemory - (totalMemory - freeMemory) > 2048返回OK,否则返回WARN
小结
maxMemory - (totalMemory - freeMemory) > 2048
doc
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
光线跟踪算法技术
萨芬 / 刘天慧 / 清华大学出版社 / 2011-3 / 98.00元
《光线跟踪算法技术》详细阐述了与光线跟踪问题相关的高效解决方案及相应的数据结构和算法,主要包括采样技术、投影视图、视见系统、景深、非线性投影、立体视觉、光照与材质、镜面反射、光泽反射、全局光照、透明度、阴影、环境遮挡、区域光照、光线与对象间的相交计算、对象变换、栅格技术以及纹理映射技术等内容。此外,《光线跟踪算法技术》还提供了相应的算法、代码以及伪代码,以帮助读者进一步理解计算方案的实现过程。 ......一起来看看 《光线跟踪算法技术》 这本书的介绍吧!