searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

KAFKA基础知识入门

2023-08-03 01:38:06
16
0

连接参数

在连接Kafka时,连接参数的指定应该是根据应用程序的需求来确定的,并且应该符合Kafka提供的连接参数规范。在一般情况下,连接Kafka时应该指定以下几个参数:

  1. bootstrap.servers:用于指定Kafka集群中至少一个broker的地址和端口号,以便客户端能够连接到Kafka集群。这个参数是必需的。

  2. group.id:用于指定消费者所属的消费组的标识符。同一消费组内的消费者将共享消费者组的负载。这个参数通常是必需的,除非你的应用程序不需要使用消费者。

  3. key.deserializer和value.deserializer:用于指定消息的键和值的反序列化方式。这些参数应该与你在生产者中使用的序列化器相匹配。

  4. enable.auto.commit:用于指定是否启用消费者自动提交偏移量。如果启用,Kafka将自动将消费者的当前偏移量提交到服务器。如果禁用,则应用程序必须自己手动提交偏移量。

  5. auto.offset.reset:用于指定消费者在读取分区时的起始偏移量。当消费者启动时,如果没有可用的偏移量,则会使用该参数指定的值来确定从哪里开始读取。可选值为"earliest"(从分区的最早消息开始读取)和"latest"(从分区的最新消息开始读取)。

这些是Kafka连接中最基本的参数,但实际上还有很多其他参数可以用来控制连接行为。在指定连接参数时,应该根据应用程序的需求来选择适当的参数,并确保遵循Kafka提供的连接参数规范。

连接认证

无认证

在部署Kafka之后,默认情况下,Kafka使用的是PLAINTEXT传输协议和无认证机制。这意味着所有连接到Kafka broker的客户端都可以无需认证就可以发送和接收数据,因此需要谨慎处理Kafka broker的安全性问题。

import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.KafkaConsumer;

import java.util.Properties;

public class KafkaExample {
    public static void main(String[] args) {
        // 生产者示例
        Properties producerProps = new Properties();
        producerProps.put("bootstrap.servers", "localhost:9092");
        producerProps.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        producerProps.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        Producer<String, String> producer = new KafkaProducer<>(producerProps);
        producer.send(new ProducerRecord<>("test-topic", "key", "value"));
        producer.close();

        // 消费者示例
        Properties consumerProps = new Properties();
        consumerProps.put("bootstrap.servers", "localhost:9092");
        consumerProps.put("group.id", "test-group");
        consumerProps.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        consumerProps.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        Consumer<String, String> consumer = new KafkaConsumer<>(consumerProps);
        consumer.subscribe(Collections.singletonList("test-topic"));
        ConsumerRecords<String, String> records = consumer.poll(1000);
        for (ConsumerRecord<String, String> record : records) {
            System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
        }
        consumer.close();
    }
}

SASL认证

SASL(Simple Authentication and Security Layer)是一种通用的身份验证和安全层,用于保护Kafka集群中的数据安全。启用SASL认证可以确保只有经过身份验证的客户端才能连接到Kafka集群,并执行读取和写入操作。SASL还可以支持多种身份验证机制,例如Kerberos和OAuth,以满足不同应用程序的需求。

启用SASL认证并不意味着数据传输也是加密的,SASL只提供了一种认证机制,用于对客户端进行身份验证。如果需要对Kafka数据传输进行加密,需要使用Kafka提供的另一种安全机制:SSL/TLS。启用SSL/TLS后,Kafka将使用SSL/TLS协议对数据进行加密和解密,以确保数据的机密性和完整性。

在启用SSL/TLS的情况下,Kafka客户端将与Kafka broker建立双向加密连接,保护数据在传输过程中不被窃取或篡改。与SASL认证不同,SSL/TLS可以提供端到端的加密,即使在数据传输过程中,也能保证数据的机密性和完整性。

配置

在Kafka中,默认情况下SASL认证是关闭的,需要手动进行配置才能启用。如果你想启用SASL认证,你需要进行以下两个方面的配置:

1. 配置Broker端:在broker端的server.properties文件中,需要添加以下配置项:

listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN

2. 配置Client端:在client端的配置文件中,需要添加以下配置项:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="user" \
password="password";

认证插件

PLAIN认证

一种简单的明文认证方式,用户需要在客户端提供用户名和密码,Kafka会将用户名和密码进行Base64编码后发送给服务器进行认证。由于PLAIN认证是明文传输,因此不够安全,建议仅在安全的网络环境中使用。

import java.util.Properties;
import org.apache.kafka.clients.CommonClientConfigs;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.KafkaProducer;

public class KafkaProducerExample {
    public static void main(String[] args) {
        String bootstrapServers = "localhost:9092";
        String username = "user";
        String password = "password";
        String securityProtocol = "SASL_PLAINTEXT";
        String saslMechanism = "PLAIN";
        String topic = "test-topic";
        Properties props = new Properties();
        props.put(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
        props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, securityProtocol);
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
        props.put("sasl.mechanism", saslMechanism);
        props.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"" + username + "\" password=\"" + password + "\";");
        KafkaProducer<String, String> producer = new KafkaProducer<>(props);
        producer.send(new ProducerRecord<>(topic, "Hello, Kafka!"));
        producer.close();
    }
}
SCRAM认证

SCRAM (Salted Challenge Response Authentication Mechanism) 是一种更加安全的密码认证方式,它使用哈希函数对密码进行加盐和迭代,从而提高了密码的安全性。在SCRAM认证中,客户端和服务器之间会进行一系列的挑战和响应,最终完成密码的认证过程。

SCRAM插件支持多种哈希函数,如SHA-256、SHA-512等,可以根据具体情况进行选择。在Kafka中,SCRAM认证通常比PLAIN认证更加安全,建议在生产环境中使用。

import java.util.Properties;
import org.apache.kafka.clients.CommonClientConfigs;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.KafkaProducer;

public class KafkaProducerExample {
    public static void main(String[] args) {
        String bootstrapServers = "localhost:9092";
        String username = "user";
        String password = "password";
        String securityProtocol = "SASL_PLAINTEXT";
        String saslMechanism = "SCRAM-SHA-512";
        String topic = "test-topic";
        Properties props = new Properties();
        props.put(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
        props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, securityProtocol);
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
        props.put("sasl.mechanism", saslMechanism);
        props.put("sasl.jaas.config", "org.apache.kafka.common.security.scram.ScramLoginModule required username=\"" + username + "\" password=\"" + password + "\";");
        KafkaProducer<String, String> producer = new KafkaProducer<>(props);
        producer.send(new ProducerRecord<>(topic, "Hello, Kafka!"));
        producer.close();
    }
}
GSSAPI插件

GSSAPI (Generic Security Service Application Program Interface) 是一种基于Kerberos协议的认证插件,它可以提供更加安全的身份验证和会话加密。在使用GSSAPI插件时,用户需要先获得有效的Kerberos凭据,如票据等。

OAUTHBEARER插件

OAUTHBEARER是一种基于OAuth2.0协议的认证插件,它可以让用户使用OAuth2.0进行身份验证和授权,从而在Kafka中进行访问。在使用OAUTHBEARER插件时,用户需要先获得有效的OAuth2.0访问令牌。

其他认证

Kerberos认证

Kerberos是一种网络认证协议,可以提供安全的身份验证和会话加密。在Kafka中,可以使用Kerberos认证来保护客户端和Broker之间的通信安全。

Token认证

Token认证是一种无状态的认证机制,客户端在认证成功后会收到一个token,之后每次请求时需要将这个token携带到服务端。在Kafka中,可以使用Token认证来实现无状态的认证。需要注意的是,不同的认证机制适用于不同的安全需求,您应该根据实际情况进行选择和配置。

数据传输

Kafka的数据传输具备以下几个特点:

  1. 高吞吐量:Kafka通过分区、批处理和零拷贝等技术,可以实现非常高的数据吞吐量。同时,Kafka支持多个消费者并行消费同一个Topic中的消息,从而实现水平扩展,进一步提高吞吐量。

  2. 低延迟:Kafka的数据传输具备较低的延迟。消息在Producer发送到Kafka broker之后,可以立即被Consumer消费。同时,Kafka支持消息批处理,可以将多个消息一起发送或消费,进一步降低延迟。

  3. 可靠性:Kafka的数据传输具备高可靠性。Kafka使用多个副本来存储消息,并在某个Broker宕机时,自动将消息迁移到其他Broker上。同时,Kafka的消息写入和消费都是原子操作,可以保证消息的完整性和一致性。

  4. 多样性:Kafka支持多种数据类型的传输,包括文本、二进制、JSON和Avro等。Kafka还支持多种语言的客户端API,包括Java、Python、Go和C#等。

  5. 扩展性:Kafka具备良好的扩展性。通过添加新的Kafka broker节点,可以实现水平扩展,提高数据吞吐量和容量。同时,Kafka还支持自定义消息拦截器和插件,可以扩展Kafka的功能和特性。

总之,Kafka的数据传输具备高效、可靠、扩展性强、低延迟等优点,适用于高并发、高吞吐量的数据传输场景,例如日志收集、消息队列、事件处理等。

此外,Kafka提供了多种安全保护措施来保护数据传输过程中的安全性,包括:

  1. SSL/TLS:Kafka支持使用SSL/TLS协议来对传输数据进行加密。SSL/TLS是一种常用的安全协议,能够为数据传输提供加密和认证功能,避免数据被窃取或篡改。

  2. SASL:Kafka支持使用SASL协议来进行身份验证。SASL是一种通用的身份验证框架,支持多种身份验证机制,如PLAIN、SCRAM、GSSAPI等。

  3. IP白名单:Kafka支持配置IP白名单,只允许指定的客户端IP访问Kafka集群,避免非法访问。

  4. ACL:Kafka支持使用ACL(Access Control List)来对不同用户或客户端进行访问控制,控制不同用户或客户端对不同主题或分区的访问权限。

在网络协议方面,Kafka的数据传输默认使用的是自己的二进制协议,即Kafka协议。Kafka协议是一种基于TCP的自定义协议,具有高效、可靠、灵活等特点,能够满足高吞吐量、低延迟的数据传输需求。此外,Kafka还支持使用HTTP和WebSocket等协议进行数据传输。

0条评论
0 / 1000
吴****昌
4文章数
0粉丝数
吴****昌
4 文章 | 0 粉丝
吴****昌
4文章数
0粉丝数
吴****昌
4 文章 | 0 粉丝
原创

KAFKA基础知识入门

2023-08-03 01:38:06
16
0

连接参数

在连接Kafka时,连接参数的指定应该是根据应用程序的需求来确定的,并且应该符合Kafka提供的连接参数规范。在一般情况下,连接Kafka时应该指定以下几个参数:

  1. bootstrap.servers:用于指定Kafka集群中至少一个broker的地址和端口号,以便客户端能够连接到Kafka集群。这个参数是必需的。

  2. group.id:用于指定消费者所属的消费组的标识符。同一消费组内的消费者将共享消费者组的负载。这个参数通常是必需的,除非你的应用程序不需要使用消费者。

  3. key.deserializer和value.deserializer:用于指定消息的键和值的反序列化方式。这些参数应该与你在生产者中使用的序列化器相匹配。

  4. enable.auto.commit:用于指定是否启用消费者自动提交偏移量。如果启用,Kafka将自动将消费者的当前偏移量提交到服务器。如果禁用,则应用程序必须自己手动提交偏移量。

  5. auto.offset.reset:用于指定消费者在读取分区时的起始偏移量。当消费者启动时,如果没有可用的偏移量,则会使用该参数指定的值来确定从哪里开始读取。可选值为"earliest"(从分区的最早消息开始读取)和"latest"(从分区的最新消息开始读取)。

这些是Kafka连接中最基本的参数,但实际上还有很多其他参数可以用来控制连接行为。在指定连接参数时,应该根据应用程序的需求来选择适当的参数,并确保遵循Kafka提供的连接参数规范。

连接认证

无认证

在部署Kafka之后,默认情况下,Kafka使用的是PLAINTEXT传输协议和无认证机制。这意味着所有连接到Kafka broker的客户端都可以无需认证就可以发送和接收数据,因此需要谨慎处理Kafka broker的安全性问题。

import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.KafkaConsumer;

import java.util.Properties;

public class KafkaExample {
    public static void main(String[] args) {
        // 生产者示例
        Properties producerProps = new Properties();
        producerProps.put("bootstrap.servers", "localhost:9092");
        producerProps.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        producerProps.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        Producer<String, String> producer = new KafkaProducer<>(producerProps);
        producer.send(new ProducerRecord<>("test-topic", "key", "value"));
        producer.close();

        // 消费者示例
        Properties consumerProps = new Properties();
        consumerProps.put("bootstrap.servers", "localhost:9092");
        consumerProps.put("group.id", "test-group");
        consumerProps.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        consumerProps.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        Consumer<String, String> consumer = new KafkaConsumer<>(consumerProps);
        consumer.subscribe(Collections.singletonList("test-topic"));
        ConsumerRecords<String, String> records = consumer.poll(1000);
        for (ConsumerRecord<String, String> record : records) {
            System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
        }
        consumer.close();
    }
}

SASL认证

SASL(Simple Authentication and Security Layer)是一种通用的身份验证和安全层,用于保护Kafka集群中的数据安全。启用SASL认证可以确保只有经过身份验证的客户端才能连接到Kafka集群,并执行读取和写入操作。SASL还可以支持多种身份验证机制,例如Kerberos和OAuth,以满足不同应用程序的需求。

启用SASL认证并不意味着数据传输也是加密的,SASL只提供了一种认证机制,用于对客户端进行身份验证。如果需要对Kafka数据传输进行加密,需要使用Kafka提供的另一种安全机制:SSL/TLS。启用SSL/TLS后,Kafka将使用SSL/TLS协议对数据进行加密和解密,以确保数据的机密性和完整性。

在启用SSL/TLS的情况下,Kafka客户端将与Kafka broker建立双向加密连接,保护数据在传输过程中不被窃取或篡改。与SASL认证不同,SSL/TLS可以提供端到端的加密,即使在数据传输过程中,也能保证数据的机密性和完整性。

配置

在Kafka中,默认情况下SASL认证是关闭的,需要手动进行配置才能启用。如果你想启用SASL认证,你需要进行以下两个方面的配置:

1. 配置Broker端:在broker端的server.properties文件中,需要添加以下配置项:

listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN

2. 配置Client端:在client端的配置文件中,需要添加以下配置项:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="user" \
password="password";

认证插件

PLAIN认证

一种简单的明文认证方式,用户需要在客户端提供用户名和密码,Kafka会将用户名和密码进行Base64编码后发送给服务器进行认证。由于PLAIN认证是明文传输,因此不够安全,建议仅在安全的网络环境中使用。

import java.util.Properties;
import org.apache.kafka.clients.CommonClientConfigs;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.KafkaProducer;

public class KafkaProducerExample {
    public static void main(String[] args) {
        String bootstrapServers = "localhost:9092";
        String username = "user";
        String password = "password";
        String securityProtocol = "SASL_PLAINTEXT";
        String saslMechanism = "PLAIN";
        String topic = "test-topic";
        Properties props = new Properties();
        props.put(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
        props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, securityProtocol);
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
        props.put("sasl.mechanism", saslMechanism);
        props.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"" + username + "\" password=\"" + password + "\";");
        KafkaProducer<String, String> producer = new KafkaProducer<>(props);
        producer.send(new ProducerRecord<>(topic, "Hello, Kafka!"));
        producer.close();
    }
}
SCRAM认证

SCRAM (Salted Challenge Response Authentication Mechanism) 是一种更加安全的密码认证方式,它使用哈希函数对密码进行加盐和迭代,从而提高了密码的安全性。在SCRAM认证中,客户端和服务器之间会进行一系列的挑战和响应,最终完成密码的认证过程。

SCRAM插件支持多种哈希函数,如SHA-256、SHA-512等,可以根据具体情况进行选择。在Kafka中,SCRAM认证通常比PLAIN认证更加安全,建议在生产环境中使用。

import java.util.Properties;
import org.apache.kafka.clients.CommonClientConfigs;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.KafkaProducer;

public class KafkaProducerExample {
    public static void main(String[] args) {
        String bootstrapServers = "localhost:9092";
        String username = "user";
        String password = "password";
        String securityProtocol = "SASL_PLAINTEXT";
        String saslMechanism = "SCRAM-SHA-512";
        String topic = "test-topic";
        Properties props = new Properties();
        props.put(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
        props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, securityProtocol);
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
        props.put("sasl.mechanism", saslMechanism);
        props.put("sasl.jaas.config", "org.apache.kafka.common.security.scram.ScramLoginModule required username=\"" + username + "\" password=\"" + password + "\";");
        KafkaProducer<String, String> producer = new KafkaProducer<>(props);
        producer.send(new ProducerRecord<>(topic, "Hello, Kafka!"));
        producer.close();
    }
}
GSSAPI插件

GSSAPI (Generic Security Service Application Program Interface) 是一种基于Kerberos协议的认证插件,它可以提供更加安全的身份验证和会话加密。在使用GSSAPI插件时,用户需要先获得有效的Kerberos凭据,如票据等。

OAUTHBEARER插件

OAUTHBEARER是一种基于OAuth2.0协议的认证插件,它可以让用户使用OAuth2.0进行身份验证和授权,从而在Kafka中进行访问。在使用OAUTHBEARER插件时,用户需要先获得有效的OAuth2.0访问令牌。

其他认证

Kerberos认证

Kerberos是一种网络认证协议,可以提供安全的身份验证和会话加密。在Kafka中,可以使用Kerberos认证来保护客户端和Broker之间的通信安全。

Token认证

Token认证是一种无状态的认证机制,客户端在认证成功后会收到一个token,之后每次请求时需要将这个token携带到服务端。在Kafka中,可以使用Token认证来实现无状态的认证。需要注意的是,不同的认证机制适用于不同的安全需求,您应该根据实际情况进行选择和配置。

数据传输

Kafka的数据传输具备以下几个特点:

  1. 高吞吐量:Kafka通过分区、批处理和零拷贝等技术,可以实现非常高的数据吞吐量。同时,Kafka支持多个消费者并行消费同一个Topic中的消息,从而实现水平扩展,进一步提高吞吐量。

  2. 低延迟:Kafka的数据传输具备较低的延迟。消息在Producer发送到Kafka broker之后,可以立即被Consumer消费。同时,Kafka支持消息批处理,可以将多个消息一起发送或消费,进一步降低延迟。

  3. 可靠性:Kafka的数据传输具备高可靠性。Kafka使用多个副本来存储消息,并在某个Broker宕机时,自动将消息迁移到其他Broker上。同时,Kafka的消息写入和消费都是原子操作,可以保证消息的完整性和一致性。

  4. 多样性:Kafka支持多种数据类型的传输,包括文本、二进制、JSON和Avro等。Kafka还支持多种语言的客户端API,包括Java、Python、Go和C#等。

  5. 扩展性:Kafka具备良好的扩展性。通过添加新的Kafka broker节点,可以实现水平扩展,提高数据吞吐量和容量。同时,Kafka还支持自定义消息拦截器和插件,可以扩展Kafka的功能和特性。

总之,Kafka的数据传输具备高效、可靠、扩展性强、低延迟等优点,适用于高并发、高吞吐量的数据传输场景,例如日志收集、消息队列、事件处理等。

此外,Kafka提供了多种安全保护措施来保护数据传输过程中的安全性,包括:

  1. SSL/TLS:Kafka支持使用SSL/TLS协议来对传输数据进行加密。SSL/TLS是一种常用的安全协议,能够为数据传输提供加密和认证功能,避免数据被窃取或篡改。

  2. SASL:Kafka支持使用SASL协议来进行身份验证。SASL是一种通用的身份验证框架,支持多种身份验证机制,如PLAIN、SCRAM、GSSAPI等。

  3. IP白名单:Kafka支持配置IP白名单,只允许指定的客户端IP访问Kafka集群,避免非法访问。

  4. ACL:Kafka支持使用ACL(Access Control List)来对不同用户或客户端进行访问控制,控制不同用户或客户端对不同主题或分区的访问权限。

在网络协议方面,Kafka的数据传输默认使用的是自己的二进制协议,即Kafka协议。Kafka协议是一种基于TCP的自定义协议,具有高效、可靠、灵活等特点,能够满足高吞吐量、低延迟的数据传输需求。此外,Kafka还支持使用HTTP和WebSocket等协议进行数据传输。

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0