kafka快速入门

退步的程序员 2018-07-31 16:40:03 ⋅ 629 阅读


为什么会有kafka

起源是数据集成,从不同地方拿数据,数据流非常的乱

数据集成超麻烦,你往往会发现你用在收集整理数据的时间是最多的,像这样


随着时代的发展,会有各种各样的新数据,特点:实时的,不断产生,量大

数据有两种:一种是数据库数据,比如用户、产品等关系型数据;另一种是实时的数据,比如数据(包括用户点击、浏览等),应用数据(包括CPU的使用等)和log。


因此有了各种各样的新系统来处理这些数据


但是这些数据产生后,产生的问题:数据爆炸

如果不同的数据用不同的数据库来存储监控,不同应用要从不同的地方取得需要的数据,就会这样(炸了)


问题:

数据源多

数据传输可靠性

数据一致性

所以Kafka出现了,把数据集成这个环节做的简洁高效,像这样


解决办法就是通过一个统一的部件来做数据的采集传输

Kafka把这个过程抽象了一下变成了这样(眼熟不眼熟,就是生产者消费者模型呀):


kafka设计的基本原则


  1. 一个流能不能解决所有问题

  2. 不仅仅是消息系统,而是一个流处理系统

  3. 不仅是单台,而是clusters

特性:


  • 支持大数据,高吞吐

  • 保证消息的有序

  • 数据持久化

  • 支持分布式


Kafka最核心的是log,什么是log呢,log就是记录什么时间发生了什么事



log抽象起来就是有序序列

如果log非常多,就进行partition

当log很多就要做成分布式,对log分区,每个partition是独立的、不交互的,这样避免了partition之间的协调,非常高效。像这样:


那为什么不考虑不同partition之间的顺序呢?因为复杂度

工作流程就是数据源(生产者)将数据写入log,消费者从log中提取数据,log起到了一个消息队列的作用。所以Kafka就是一个基于分布式log实现的,具有发布/订阅功能的消息系统。


如何应用kafka

分布式系统

数据集成

实时计算

例子:


各个公司的ceo,如果其中某一个消息丢了怎么办


做法就是讲所有事件都排成有序队列,保证消息不丢


数据集成


因为Kafka用log记下了所有时间发生的所有事,任何一个状态都可以被恢复出来。Kafka的理念就是实时处理就是log加计算(Job),像这样:




---------------END----------------

后续的内容同样精彩

长按关注“IT实战联盟”哦



全部评论: 0

    我有话说:

    Kafka系列一

      前言 刚学了rabbitmq, 怎么突然又开始了kafka? 艺多不压身 <摸着渐渐稀疏的头发> 只有对比才能有更深的理解 起于专业,终于专业 起步 知乎上

    Kafka系列二

      分区 Kafka 的消息组织方 式实际上是三级结构:主题 - 分区 - 消息 问题一:为什么 Kafka 要做这样的设计?为什么使用分区的概念而不是直接使用多个主题呢? 分区的

    精品推荐:快速入门Netty

    BIO(缺乏弹性伸缩能力,并发量小,容易出现内存溢出,出现宕机 每一个客户端对应一个线程伪异步IO

    Apache Kafka 2.7.1 发布

    Apache Kafka 2.7.1 已发布,这是一个 bugfix 版本,其中包括来自 45 个 JIRA 的修复和改进,还修复了部分严重的错误。 改进 [KAFKA-10852] - 优化

    架构实战篇(七):Spring Boot Data JPA 快速入门

    Spring Data JPA 是Spring Data 的一个子项目,它通过提供基于JPA的Repository极大了减少了操作JPA的代码。

    运用Docker快速部署分布式项目

    快速搭建Docker分布式项目环境

    SpringBoot+kafka+ELK分布式日志收集

    Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。它允许您快速、实时地存储、搜索和分析大量数据。

    Apache Kafka 2.6.1 发布,分布式消息发布订阅系统

    Apache Kafka 2.6.1 已经发布,这是一个 bug 修复版本,它包括 41 个 JIRA 的修复和改进。 主要更新内容包括: Improvement [ 

    Yahoo 开源的 Pulsar 能否超越 Kafka

    来源:性能与架构链接:https://mp.weixin.qq.com/s/s4k9nioEDd1m2g0quj9kqA   Pulsar 是类似于 Kafka 的一个消息中间件,是

    Docker - 大数据环境快速搭建步骤

    快速搭建一个大数据的环境,我们可以使用Docker来实现,文章会演示如何使用。

    算法实战---OC快速排序(一)

    近来在巩固数据结构和算法的知识, 动动手操作操作. 能讲出来是真的懂了, 分享是件快乐的事第一.

    微服务架构实战篇:快速入手SpringBoot 2.0,欢迎入坑哦~~~

    SpringBoot 2.0 基本要求Java最低要求8以上,不再支持Java 6 和 7等低版本。

    转载:Kafka高可用,高吞吐量低延迟的高并发的特性背后实现机制

    1 概述 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式消息系统,Linkedin于2010年贡献给了Apache基金会并

    京东技术:面对海量流量七步走保证用户体验(部分操作能够快速实战)

    当促销活动正式开始时,不少用户开启了价格保护,在此高并发情况下,如何保证用户体验,如何保证系统的稳定性、高可用、快速计算结果,是本文的重点。

    YuebonCore 1.0.1 发布,权限管理及快速开发框架

    YuebonCore是基于.Net5.0开发的权限管理及快速开发框架,整合应用最新技术包括Asp.NetCore MVC、Dapper、AutoFac、WebAPI、Swagger、EF、Vue等

    Spring Initializr 0.1.0 发布,Spring 项目的快速开始生成器

    Spring Initializr 0.1.0 已经发布。 Spring initializr 是一个 Spring 项目的快速开始生成器。其提供了一个可扩展的 API 来生成基于 JVM

    TestableMock v0.6.0 发布,新增测试参数快速构造工具

    项目介绍 TestableMock是一款由阿里效能团队开源的Java单元测试增强工具,提供四项具有针对性的辅助能力: 快速Mock任意调用:解决传统Mock工具使用繁琐的问题 访问被测类私有成员