Kafka简单介绍+安装

Kafka是一个高性能的分布式消息队列,常用于实时数据管道和流应用程序。它具有速度快、可扩展性和容错性。相较于传统消息通信方式如Socket、FTP和JMS,Kafka提供更高效的消息传递,支持多语言,并广泛应用于实时信息流处理。在安装方面,Kafka支持单节点到多节点的集群部署,安装过程中需注意Broker数与Partition数的关系,以确保集群负载均衡。
摘要由CSDN通过智能技术生成

什么是Kafka

Kafka是一个分布式消息队列,用于构建实时数据管道和流应用程序。它具有水平可扩展性,容错性,快速性。在各大互联网公司生产环境中广泛使用,目前已经有很多分布式处理系统支持使用Kafka,比如,Spark、Strom、Flume等

Kafka是一个分布式流平台,用于发布和订阅记录流。Kafka可以用于容错存储。Kafka将主题日志分区复制到多个服务器。Kafka的设计目的是为了让你的应用能在记录生成后立即就能处理。Kafka的处理速度很快,通过批处理和压缩记录有效地使用IO。Kafka会对数据流进行解耦。Kafka用于将数据流到数据湖、应用和实时流分析系统中。Kafka主要应用于实时信息流的大数据收集或者实时分析(或者两者兼有)。Kafka既可以为内存微服务提供服务,也可以用于向复杂事件流系统和IoT/IFTTT式自动化系统反馈事件。

Kafka消息队列

  • 传统的消息通信方式
    (1) Socket通信协议 —— 端到端通信
    缺点:
    a. 服务器端和客户端必须同时在线(两端任何一端不在线都无法传输数据);
    b. 传输大量数据时,数据安全不完备(如果传一个文件会正常接收,如果传2个G的文件那么会容易出现丢包的情况),对网络要求极高。

    (2)文件服务器(ftp)
    ftp的出现是解决soket的缺点, 不用同时在线,解决超大文件上传,下载问题
    f指的是文件形式,一般指超大文件,电影等。如果传2G电脑用Socket,容易丢包,socket必须两端同时在线

    • 优点:
      解决了socket的缺点

    • 缺点:
      a. 实时性比较差(socket客户端和服务器端发送消息时接收到数据,ftp不需要同时在线)
      b. 本地磁盘IO读写(传输文件写到磁盘);

    (3)共享数据库方式(Database) (大家都访问同一个库)

    • 优点:
      数据库连接池有限的 (一边往数据库里插数据,一边从数据库里获取数据)
    • 缺点:
      系统间访问共享数据库比较难实现:因业务需求很难将数据库共享(例如淘宝数据库和美团的数据库);

    (4)JMS(Java Message Services)协议
    JMS(Java Messaging Service)是Java平台上有关面向消息中间件(MOM)的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发,翻译为Java消息服务。

    通过JMS协议,可以通过不同平台互相发送消息,所以要求每个平台都要对应相应的接口开发程序,需要面向业务编程

    缺点:具体相关业务的需求
    a. 点对点(一对一模式)
    一旦一个消息被阅读,该消息将被从队列中移走。
    (queue,只要有一个consumer消费,就会从队列中移除,采用拉的方式)
    b. JMS主题(一对多)
    一种支持发送消息给多个订阅者的机制(采用推的方式)。

  • KAFKA消息队列
    系统解耦、削峰填谷、定时任务、异步通知等等
    消息队列是在JMS基础上开发出来的,它没有queue队列,和JMS一样有topic,consumer group,每一个topic可以被每一个consumer group的一个consumer消费

    即如果有两个组A 、B :
    A组中有 a1-consumer 、a2-consumer、 a3-consumer
    B组中有 b1-consumer、 b2-consumer、 b3-consumer
    那么A组中任意某一个consumer消费了,会将这个组从组队列中移除,即该组其他consumer不能再消费。
    B组同理如果想让a1 a2 a3 b1 b2 b3都消费主题,可以分别给它们单独设组,
    (即只要组成员有一个消费就从该组队列移除,类似于queue)

Kafka的特点

  • 速度快。
    Kafka基于zero copy原则,深度依靠操作系统内核实现快速移动数据,能将数据记录分批处理。这些批次数据可以通过端到端的方式从生产者到文件系统(Kafka主题日志)再到消费者。批处理能实现更高效的数据压缩并减少I / O延迟。Kafka将不可变的提交日志写入连续磁盘,从而避免了随机磁盘访问和磁盘寻道速度慢的问题。Kafka支持增加分区进行横向扩展。它将主题日志分成几百个(可能有数千个)分区分布到数千个服务器。这种方式可以让Kafka承载海量负载。

  • 支持多语言
    客户端和服务器之间的Kafka通信使用基于TCP的线路协议,该协议是版本化和文档化的。Kafka承诺保持对老客户端的向后兼容性,并支持多种语言,包括C#,Java,C,Python,Ruby等多种语言。Kafka生态系统还提供REST代理,可通过HTTP和JSON轻松集成。Kafka还通过Kafka的融合模式注册(ConfluentSchema Registry)支持Avro模式。Avro和模式注册允许客户以多种编程语言制作和读取复杂的记录,并允许记录的变化。

  • 应用广泛
    Kafka支持构建实时流数据管道,支持内存微服务(比如actors,Akka,Baratine.io&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值