Apache высокие задержки куратора для распределенной блокировки - PullRequest
0 голосов
/ 19 июня 2020

У нас есть требование распределенной блокировки. Вариант использования заключается в том, что после получения блокировки он выполняет чтение хранилища данных, затем обновляет и затем записывает его обратно в хранилище данных, а затем снимает блокировку. Наши объемы находятся в пределах 4000 таких операций в секунду. Мы выбрали apache куратор (5.0.0) для этого варианта использования, чтобы мы могли запускать несколько экземпляров нашего приложения. Наше чтение и запись с обновлением займет около 5 мс. Для этой цели мы начали использовать InterProcessMutex of apache curator.

Теперь мы начали проводить нагрузочный тест с 3 серверами zk (4 ядра, экземпляры 8GB, 3.6.0). zk config следующим образом:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/disk1
dataLogDir=/disk3
clientPort=2181
maxClientCnxns=60
server.1=10.11.40.99:2888:3888
server.2=10.11.40.120:2888:3888
server.3=10.11.40.121:2888:3888
metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
metricsProvider.httpPort=7000
metricsProvider.exportJvmInfo=true
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
4lw.commands.whitelist=*
znode.container.maxPerMinute=1000000
skipACL=true
globalOutstandingLimit=1000000
maxClientCnxns=0

Некоторые из свойств java мы устанавливаем следующим образом в секунду (при 2 запущенных приложениях). Само получение блокировки занимает в среднем около 30 мсек, а освобождение - около 10 мсек.

...