private async Task <int> GetOrCreateLeasesNode(string leasesPath, int maxLeases) { try { var count = await _zkClient.GetDateIntAsync(leasesPath); if (count != maxLeases) { throw new ApplicationException("maxLeases与Zookeeper中现有Semaphore节点数据不一致"); } return(count); } catch (KeeperException.NoNodeException) { // 创建Leases节点 var data = Encoding.UTF8.GetBytes(maxLeases.ToString()); await _zkClient.RecursionCreateAsync(leasesPath, data, CreateMode.PERSISTENT); } return(maxLeases); }