состояние гонки при реализации прометея - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь внедрить пользовательские метрики promethues в свое приложение, и я подозреваю, что будет условие гонки. Как я могу избежать состояния гонки?

@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();
}
}

Для меня это выглядит как потенциальное состояние гонки. Как я могу избежать этого.

1 Ответ

0 голосов
/ 11 ноября 2019

Как правило, клиентские библиотеки Prometheus являются поточно-ориентированными. Я не вижу таких гарантий в документации java-аромата, но есть подсказки в README :

  • Методы Gauge (и я ожидаю Counter) являются поточно-безопасными

    Имейте в виду, что стандартные методы inc (), dec () и set () в Gauge заботятся о безопасности потоков

  • Создание метрики (по крайней мере, с компоновщиком)является потокобезопасным

    Метод label () ищет или создает соответствующие помеченные временные ряды. Вы можете также рассмотреть возможность сохранения помеченных временных рядов в качестве переменной экземпляра, если это уместно. Он поточно-ориентирован и может использоваться несколько раз, что может повысить производительность.

Учитывая ваш код, я не ожидаю других проблем параллелизма.

...