Java 实现普罗米修斯时的种族条件
我试图在我的应用程序中推动定制promethues度量,我怀疑会有竞争条件。我怎样才能避免比赛状态Java 实现普罗米修斯时的种族条件,java,prometheus,Java,Prometheus,我试图在我的应用程序中推动定制promethues度量,我怀疑会有竞争条件。我怎样才能避免比赛状态 @Component public class CustomeCounter { Counter mycounter; public CustomCounter(CollectorRegistry registry) { mycounter = Counter.build().name("test").help("test").register(registry); } public vo
@Component
public class CustomeCounter {
Counter mycounter;
public CustomCounter(CollectorRegistry registry) {
mycounter = Counter.build().name("test").help("test").register(registry);
}
public void incrementCounter() {
mycounter.inc();
}
}
@Component
public class Test{
@Resource
private CustomCounter customCounter;
public void testInc() {
customCounter.incrementCounter();
}
}
在我看来,这是一个潜在的比赛条件。如何避免它。通常,Prometheus客户端库是线程安全的。我在java风格的文档中没有看到这样的保证,但有一些提示:
- Gauge(我希望计数器)方法是线程安全的 请记住,Gauge上的默认inc()、dec()和set()方法 注意线程安全
- 创建度量(至少使用生成器)是线程安全的 labels()方法查找或创建相应的标签 时间序列。您还可以考虑将标记的时间序列存储为 实例变量(如果合适)。它是线程安全的,可以 可以多次使用,这有助于提高性能