昨日阅读2.5小时,总计79.5 小时
ch4. 分布式消息队列Kafka:构建数据流水线过程中常用的另外一类组件,即消息队列
设计动机:解决潜在问题(1)数据生产者和消费者耦合度过高;(2)生产者和消费者数据处理速率不对等;(3)大量并发的网络连接对后端消费者不够友好。
理解Kafka的重要地位:1)消息中间件;2)消息队列(缓存生产者产生的数据,使得消费者可以重复消费历史数据。3)发布订阅系统;4)消息总线
Kafka可以被看作一个消息队列,但与ZeroMQ、RabbitMQ等不同,它不遵循AMQP(Advanced Message Queuing Protocol),而是在Big Data场景下设计的,具有自己的特色和优势。
(可以比较与Flume的区别)
Kafka特点:高性能、良好扩展性、数据持久性
设计架构:一个分布式消息队列,将数据分区保存,并将每个分区保存成多份以提高数据可靠性。
Producer、Broker、Consumer、ZooKeeper等有机组成。
Kafka关键技术:可控的可靠性级别(3种应答方式);数据多副本;高效持久化机制、数据传输优化(批处理与Zero-copy技术)、可控的消息传递语义。
(程序设计示例)
典型应用场景:消息队列;流式计算框架的数据源、分布式日志收集系统中的Source或Sink、Lambda Architecture中的Source
数据存储篇
ch5. 数据序列化与文件存储格式
数据序列化方案:序列化框架Thrift(同时具有序列化和RPC功能,几乎支持所有编程语言)
序列化框架Protobuf(谷歌开源的序列化框架)
数据序列化方案:序列化框架Thrift(同时具有序列化和RPC功能,几乎支持所有编程语言)
序列化框架Protobuf(谷歌开源的序列化框架)