보통 zookeeper는 분산 작업을 제어하기 위한 트리 형태의 데이터 저장소로 kafka broker를 관리하는 용도로 많이 사용한다.
하지만 이런 기능 외에도 semaphore를 관리하는 서버의 용도로도 사용할 수 있다.
예제는 다음과 같다.
val zookeeperClient: CuratorFramework = CuratorFrameworkFactory.newClient(s"${conf.host}:${conf.port}", new ExponentialBackoffRetry(1000, 3))
client.start()
val maxSemaphoreNum = 5 // 5개 까지 허용
val semaphore: InterProcessSemaphoreV2 = new InterProcessSemaphoreV2(zookeeperClient, "/my/semaphore/directory", ${maxSemaphoreNum})
val lease: Lease = semaphore.acquire()
... // semaphore 획득 후 수행할 task
semaphore.returnLease(lease)
zookeeperClient.close()
'잡다한 기술' 카테고리의 다른 글
[kafka] Apache Kafka? (0) | 2021.12.31 |
---|---|
[zookeeper] Apache Zookeeper? (0) | 2021.12.31 |
[zeppelin] Apache Zeppelin with Apache Spark? (0) | 2021.12.31 |
[django] Serializer에 분명히 해당 필드가 있는데 없다고 하는 경우 (0) | 2021.12.31 |
[git] ! [rejected] master -> master (non-fast-forward) 해결방법 (0) | 2020.02.02 |