Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 卡夫卡·萨斯勒握手时间太长_C#_Security_Apache Kafka_Confluent Platform - Fatal编程技术网

C# 卡夫卡·萨斯勒握手时间太长

C# 卡夫卡·萨斯勒握手时间太长,c#,security,apache-kafka,confluent-platform,C#,Security,Apache Kafka,Confluent Platform,说明: 使用SASL/紧急停堆或SASL/明文进行身份验证大约需要9秒才能完成。这正常吗 如何复制: 一个Kafka broker实例(v1.1.0) 一名C#制作人(合流卡夫卡客户v0.11.4版)完成以下工作: 一个C#消费者(合流卡夫卡客户v0.11.4版),执行以下操作: server.properties: broker.id=0 num.network.threads=3 num.io.threads=8 socket.send.buffer.bytes=102400 so

说明: 使用SASL/紧急停堆或SASL/明文进行身份验证大约需要9秒才能完成。这正常吗

如何复制:

  • 一个Kafka broker实例(v1.1.0)
  • 一名C#制作人(合流卡夫卡客户v0.11.4版)完成以下工作:
  • 一个C#消费者(合流卡夫卡客户v0.11.4版),执行以下操作:
  • server.properties:

    broker.id=0
    num.network.threads=3
    num.io.threads=8

    socket.send.buffer.bytes=102400
    socket.receive.buffer.bytes=102400
    socket.request.max.bytes=104857600
    session.timeout.ms=1000

    group.initial.rebalance.delay.ms=0

    侦听器=SASL_SSL://localhost:9093

    ssl.keystore.type=JKS
    ssl.keystore.location=…
    ssl.keystore.password=…
    ssl.key.password=

    ssl.truststore.type=JKS
    ssl.truststore.location=…
    ssl.truststore.password=

    ssl.protocol=TLS
    ssl.enabled.protocols=TLSv1.2、TLSv1.1、TLSv1
    ssl.client.auth=必需
    security.inter.broker.protocol=SASL\u SSL
    ssl.secure.random.implementation=SHA1PRNG

    sasl.已启用。机构=普通,紧急停堆-SHA-256
    sasl.mechanism.inter.broker.protocol=PLAIN

    log.dirs=…
    num.partitions=1
    num.recovery.threads.per.data.dir=1

    offset.topic.replication.factor=1
    transaction.state.log.replication.factor=1
    transaction.state.log.min.isr=1

    log.retention.hours=168
    log.retention.bytes=1073741824
    log.segment.bytes=1073741824
    log.retention.check.interval.ms=300000
    num.replica.fetchers=1

    zookeeper.connect=localhost:2181
    zookeeper.connection.timeout.ms=6000
    group.initial.rebalance.delay.ms=0

  • 消费者权益:

    bootstrap.servers=localhost:9093
    group.id=测试消费者组
    fetch.min.bytes=1
    fetch.wait.max.ms=1
    auto.offset.reset=最新
    socket.blocking.max.ms=1
    fetch.error.backoff.ms=1
    ssl.ca.location=…
    ssl.certificate.location=…
    ssl.key.location=…
    ssl.key.password=..
    security.protocol=SASL\u SSL
    sasl.机构=普通
    sasl.username=…
    密码=

  • 地产商

    bootstrap.servers=localhost:9093
    压缩类型=无
    逗留时间ms=0
    重试次数=0确认次数=0

    ssl.ca.location=…
    ssl.certificate.location=…
    ssl.key.location=…
    ssl.key.password=

    security.protocol=SASL\u SSL
    sasl.机构=普通
    sasl.username=…
    密码=

  • 管理消费者。从请求到完成SASL握手大约需要9秒钟。这是日志:

    [2018-07-06 17:03:37673]调试将SASL服务器状态设置为握手或握手请求(org.apache.kafka.common.security.authenticator.SaslServerAuthenticator) [2018-07-06 17:03:37673]调试处理Kafka请求API_版本(org.apache.Kafka.common.security.authenticator.SaslServerAuthenticator) [2018-07-06 17:03:37673]调试将SASL服务器状态设置为握手请求(org.apache.kafka.common.security.authenticator.SaslServerAuthenticator) [2018-07-06 17:03:37673]调试处理Kafka请求SASL_握手(org.apache.Kafka.common.security.authenticator.SaslServerAuthenticator) [2018-07-06 17:03:37,674]使用客户端提供的SASL机制“普通”进行调试(org.apache.kafka.common.security.authenticator.SaslServerAuthenticator) [2018-07-06 17:03:46,805]调试设置SASL服务器状态以进行身份验证(org.apache.kafka.common.security.authenticator.SaslServerAuthenticator) [2018-07-06 17:03:46807]调试将SASL服务器状态设置为完成(org.apache.kafka.common.security.authenticator.SaslServerAuthenticator)

备注

  • 我在运行producer时也观察到了相同的持续时间

  • 在使用SCRAM-256进行身份验证时,我观察到了相同的持续时间

  • 我在运行Java客户端时观察到了相同的持续时间(
    kafka控制台使用者
    kafka控制台生产者

更新: 正如我在Ubuntu虚拟机上设置代理并从Windows连接客户端时所建议的那样,延迟不再被观察到。我想知道为什么SSL握手和SASL身份验证在Windows上都需要10秒钟

       

    var producerConfig =    
               PropertiesUtils.ReadPropertiesFile("producer.properties");

           using (var producer = new Producer(producerConfig, null, new StringSerializer(Encoding.UTF8)))
           {
               while (true)
               {
                   Console.Write("message: ");
                   string msg = Console.ReadLine();

                   producer.ProduceAsync("test-topic", null, msg);
               }
           }

        

    var config = PropertiesUtils.ReadPropertiesFile("consumer.properties");

            using (var consumer = new Consumer(config, null, new StringDeserializer(Encoding.UTF8)))
            {
                consumer.OnMessage += (_, msg)
                      =>
                {
                    Console.WriteLine(msg.Value);
                };

                consumer.OnError += (_, error)
                  => Console.WriteLine($"Error: {error}");

                consumer.OnConsumeError += (_, msg)
                  => Console.WriteLine($"Consume error ({msg.TopicPartitionOffset}): {msg.Error}");

                consumer.Subscribe("test-topic");

                while (true)
                {
                    try
                    {
                        consumer.Poll(TimeSpan.FromMilliseconds(1000));
                    }
                    catch(Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
            }