docs: public void addNode(Node node) {
          //  channel 可能为 null
          ChannelWrapper channel = appContext.getChannelManager().getChannel(node.getGroup(),
                  node.getNodeType(), node.getIdentity());
          Set<TaskTrackerNode> taskTrackerNodes = NODE_MAP.get(node.getGroup());
  
          if (taskTrackerNodes == null) {
              taskTrackerNodes = new ConcurrentHashSet<TaskTrackerNode>();
              Set<TaskTrackerNode> oldSet = NODE_MAP.putIfAbsent(node.getGroup(), taskTrackerNodes);
              if (oldSet != null) {
                  taskTrackerNodes = oldSet;
              }
          }
  
          TaskTrackerNode taskTrackerNode = new TaskTrackerNode(node.getGroup(),
                  node.getThreads(), node.getIdentity(), channel);
          LOGGER.info("Add TaskTracker node:{}", taskTrackerNode);
          taskTrackerNodes.add(taskTrackerNode);
  
          // create executable queue
          appContext.getExecutableJobQueue().createQueue(node.getGroup());
          appContext.getNodeGroupStore().addNodeGroup(NodeType.TASK_TRACKER, node.getGroup());
      }