zoukankan      html  css  js  c++  java
  • Kafka核心技术与实战——24 | 请求是怎么被处理的?

    • 无论是 Kafka 客户端还是 Broker 端,它们之间的交互都是通过“请求 / 响应”的方式完成的
      • Apache Kafka 自己定义了一组请求协议,用于实现各种各样的交互操作
      • 比如常见的 PRODUCE 请求是用于生产消息的,FETCH 请求是用于消费消息的,METADATA 请求是用于请求 Kafka 集群元数据信息的
      • 所有的请求都是通过 TCP 网络以 Socket 的方式进行通讯的
    • 常见请求处理方案
      • 1、顺序处理请求。
        • 吞吐量太差。由于只能顺序处理每个请求,因此,每个请求都必须等待前一个请求处理完毕才能得到处理
        • 这种方式只适用于请求发送非常不频繁的系统
      • 2. 每个请求使用单独线程处理
        • 为每个入站请求都创建一个新的线程来异步处理
        • 为每个请求都创建线程的做法开销极大,在某些场景下甚至会压垮整个服务。还是那句话,这个方法只适用于请求发送频率很低的业务场景
    • Kafka 使用的是Reactor 模式
      • Reactor 模式是事件驱动架构的一种实现方式,特别适合应用于处理多个客户端并发向服务器端发送请求的场景
      • 在这个架构中,Acceptor 线程只是用于请求分发,不涉及具体的逻辑处理,非常得轻量级,因此有很高的吞吐量表现。而这些工作线程可以根据实际业务处理需要任意增减,从而动态调节系统负载能力
    • 小结
      • Kafka Broker 请求处理流程的解析应该讲得比较完整了。明确请求处理过程的最大意义在于,它是你日后执行 Kafka 性能优化的前提条件
  • 相关阅读:
    ChibiOS/RT 2.6.9 CAN Low Level Driver for STM32
    ChibiOS/RT 2.6.9 CAN Driver
    STM32F4 Alternate function mapping
    Spartan6 slave SelectMap configuration fails owing to JTAG?
    STM32F4: Generating parallel signals with the FSMC
    STM32F4xx -- Cortex M4
    STM32F4 HAL Composite USB Device Example : CDC + MSC
    AT91 USB Composite Driver Implementation
    USB组合设备 Interface Association Descriptor (IAD)
    MDK5 and STM32Cube
  • 原文地址:https://www.cnblogs.com/minimalist/p/12986308.html
Copyright © 2011-2022 走看看