private static InetSocketAddress parseBootstrapServer(String bootstrapServer) {
        String host = Utils.getHost(bootstrapServer);
        if (host == null || !Utils.validHostPattern(host)) {
            throw new ConfigException(
                String.format(
                    "Failed to parse host name from %s for the configuration %s. Each " +
                    "entry should be in the form \"{host}:{port}\"",
                    bootstrapServer,
                    QUORUM_BOOTSTRAP_SERVERS_CONFIG
                )
            );
        }

        Integer port = Utils.getPort(bootstrapServer);
        if (port == null) {
            throw new ConfigException(
                String.format(
                    "Failed to parse host port from %s for the configuration %s. Each " +
                    "entry should be in the form \"{host}:{port}\"",
                    bootstrapServer,
                    QUORUM_BOOTSTRAP_SERVERS_CONFIG
                )
            );
        }

        return InetSocketAddress.createUnresolved(host, port);
    }
QuorumConfig encapsulates configuration specific to the cluster metadata KRaft replicas.

The default raft timeouts are relatively low compared to some other timeouts such as
request.timeout.ms. This is part of a general design philosophy where we see changing
the leader of a Raft cluster as a relatively quick operation. For example, the KIP-631
controller should be able to transition from standby to active without reloading all of
the metadata. The standby is a "hot" standby, not a "cold" one.
raft/src/main/java/org/apache/kafka/raft/QuorumConfig.java