apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/ConfigsExportService.java/ConfigsExportService/exportApps
class ConfigsExportService:  private void exportApps(final Collection<Env> exportEnvs, OutputStream outputStream) {
    List<App> hasPermissionApps = findHasPermissionApps();

    if (CollectionUtils.isEmpty(hasPermissionApps)) {
      return;
    }

    try (final ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream)) {
      //write app info to zip
      writeAppInfoToZip(hasPermissionApps, zipOutputStream);

      //export app namespace
      exportAppNamespaces(zipOutputStream);

      //export app's clusters
      exportEnvs.parallelStream().forEach(env -> {
        try {
          this.exportClusters(env, hasPermissionApps, zipOutputStream);
        } catch (Exception e) {
          logger.error("export cluster error. env = {}", env, e);
        }
      });
    } catch (IOException e) {
      logger.error("export config error", e);
      throw new ServiceException("export config error", e);
    }
  }