docs: public void addNode(Node node) {
          //  channel 可能为 null
          ChannelWrapper channel = appContext.getChannelManager().getChannel(node.getGroup(), node.getNodeType(), node.getIdentity());
          Set<JobClientNode> jobClientNodes = NODE_MAP.get(node.getGroup());
  
          if (jobClientNodes == null) {
              jobClientNodes = new ConcurrentHashSet<JobClientNode>();
              Set<JobClientNode> oldSet = NODE_MAP.putIfAbsent(node.getGroup(), jobClientNodes);
              if (oldSet != null) {
                  jobClientNodes = oldSet;
              }
          }
  
          JobClientNode jobClientNode = new JobClientNode(node.getGroup(), node.getIdentity(), channel);
          LOGGER.info("add JobClient node:{}", jobClientNode);
          jobClientNodes.add(jobClientNode);
  
          // create feedback queue
          appContext.getJobFeedbackQueue().createQueue(node.getGroup());
          appContext.getNodeGroupStore().addNodeGroup(NodeType.JOB_CLIENT, node.getGroup());
      }