大数据处理:Kafka与流处理系统深度解析
1. Kafka消费者API线程安全问题
Kafka消费者API并非线程安全的,所有与代理的网络交互都在检索事件的同一客户端线程中进行。若要并发处理事件,消费者需实现线程方案。常见的做法有两种:
- 每个消费者一个线程模型 :此方法提供了简单的解决方案,但代价是要在代理处管理更多的TCP连接和获取请求。
- 单线程获取事件并将处理工作卸载到处理线程池 :这种方式可能提供更高的可扩展性,但手动提交事件会更复杂,因为线程需要协调,以确保在提交之前处理完主题的所有事件。
2. Kafka的可扩展性
Kafka的主要可扩展性机制是主题分区。创建主题时,需指定用于存储事件的分区数量,Kafka会在集群的代理之间分配这些分区。这实现了水平可扩展性,生产者和消费者可分别并行地向不同分区写入和读取数据。
生产者启动时,可使用 Properties 对象指定要连接到集群的主机/端口对列表,示例Java代码如下:
Properties props = new Properties();
props.put("bootstrap.servers", "IPbroker1,IPBroker2");
生产者连接到这些服务器,以发现集群的配置,包括代理的IP地址以及哪些分区分配给了哪些代理。
Kafka采用“笨代理”架构,生产者负责选择事件分配到的分区,这使代理能专注于接收、存储和传
超级会员免费看
订阅专栏 解锁全文
900

被折叠的 条评论
为什么被折叠?



