code: public static void blockingSet(String subPath, String data) throws CacheLockedException {
          if (data == null) {
              data = "";
          }
          String fullPath = getFullPath(subPath);
          /*Integer innerLockId = DistZkLocker
                  .lock(ZkKeyValueCacheUtil.class.getName() + "-lock:" + fullPath.replace("/", "_"), 0)
                  .onErrorResumeNext(timeoutException -> {
                      //遇到锁则直接超时不执行
                      return Single.error(new CacheLockedException(subPath));
                  }).blockingGet();*/
          try {
              try {
                  ZkConnection.client.setData().forPath(fullPath, data.getBytes());
              } catch (KeeperException.NoNodeException e) {
                  ZkConnection.client.create().creatingParentContainersIfNeeded().forPath(fullPath, data.getBytes());
              }
              loadingCache.get(subPath).snd = data;
          } catch (Throwable e) {
              throw new RuntimeException(e);
          } finally {
              /*DistZkLocker.unlock(innerLockId);*/
              LOG.debug("nothing to do.");
          }
      }
docs: 设置分布式缓存的值，不建议高频次地对同一个key进行设置操作。
  只适合读频繁但写入少的场景
  todo Not tested
  
  @throws CacheLockedException 如果其他人正在写入该值，则禁止你写入.