《基于Spark的机器学习资料21、kafka-背景及架构介绍.pdf》由会员分享,可在线阅读,更多相关《基于Spark的机器学习资料21、kafka-背景及架构介绍.pdf(1页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、背景及架构介绍 一、背景 什么是 kafka 呢,他是 LinkedIn 开发的一个分布式消息系统,用 scala 编写的,可以水平扩展和高吞吐率。原本开发自 LinkedIn,用作他们的活动流和运营数据处理管道的基础,之后被多家公司使用,慢慢发展壮大起来。二、简单介绍 kafka 是分布式的,基于发布/订阅的消息系统。1、即使对 TB 级以上数据也能保证常数时间复杂度的访问性能。2、高吞吐率:即使在非常廉价的商用机器上也能做到单机支持每秒 100k 条以上消息的传输。3、支持分区,消息分布式消费,但是只能保证每个 partition 内的消息顺序传输。并且支持在线水平扩展。为何使用消息中间件
2、呢,大家肯定接触过 rabbitmq、activemq、redis 等,估计有很多感触。我就不详细描述了,这个只能亲身参加过大的技术架构,自己身在其中,并且感受到不用消息中间件和用的区别。三、架构 了解架构之前,我们先了解一下基本名词。Broker:安装了 kafka 的服务器就是一个 broker。Topic:消息的类比,最好一类数据定一个 topic 去存储传输。Partition:分区,topic 可以定分到几个分区中。Producer:发送消息,发送者。Consumer:消费消息,消费者。Consumer Group:每个 Consumer 属于一个特定的 Consumer Group。从图中来看,kafka 集群包含若干个 producer 和 consumer 以及 broker,还有一个 zk 集群。Producer 通过 push 模式将数据发送到 broker,Consumer 通过 pull 模式拉取数据。Producer 发送消息到 broker 时,根据 partition 机制选择分不到哪一个 partition,设置合理的情况下,所有消息可 以均匀分不到不同的 partition 里,实现了负载均衡。