1.前言

1.1 包路径和源码

  下载链接

基于发布订阅的分布式消息系统,使用scala语言编写。

特点:采用分区机制,每个分区可以放到不同的服务器上,提高了吞吐率,同时基于磁盘存储,以及副本机制可以确保不丢失;流计算机制实现实时统计。

1.2 适用场景:TB级以上的数据

  淘宝,美团,电影票,订单之类

1.3 数据量

1.4 发送消息手段

  单播:当所有的Consumer都归属于一个Consumer Group时,可以指定。

  广播:有多个Consumer Group时,则每个Consumer Group中都可以接收到同样的消息。

1.5 认证协议:SASL_PLAINTEXT

2.时序图

一个kafka服务器称作一个broker,多个broker组成一个集群,其中有一个broker为首领。

3.关键配置项

  补充:kafka适用于linux环境中,解压并配置环境变量KAFKA_HOME,修改配置项即可使用

3.1 Zookeeper配置项:zookeeper.properties

3.2 消费者配置项:consumer.properties

3.3 生产者配置项:producer.properties

3.4 Kafka配置项:server.properties

  主要配置项

  broker.id log.dirs zookeeper.connect

4.生产者实现步骤KafkaProducer

  1. 读取生产者配置项
  2. 实例化ProducerConfig,并设置属性
  3. 实例化KeyedMessage,构造消息
  4. 实例化Producer,并send消息

5.消费者实现步骤KafkaConsumer

  1. 读取kafka配置文件中zookeeper链接字符串
  2. 实例化ConsumerConfig,并设置属性
  3. 创建Kafka连接器
  4. 通过topic获取数据流
  5. 关闭kafka链接

6.扩展

6.1 消息是什么?

  一组消息就是一个数据单元,由字节数组成。消息由键值对构成,其中key可以为空。

  可以分批次发送消息,格式为json或是xml。

6.2 消息如何存储?

  通过主题分类,一个主题有若干分区,先进先出顺序读取。

6.3 用什么维护broker信息?

高并发系列之——MQ消息中间件Kafka的更多相关文章

  1. Java高并发系列——检视阅读

    Java高并发系列--检视阅读 参考 java高并发系列 liaoxuefeng Java教程 CompletableFuture AQS原理没讲,需要找资料补充. JUC中常见的集合原来没讲,比如C ...

  2. java高并发系列-第1天:必须知道的几个概念

    java高并发系列-第1天:必须知道的几个概念 同步(Synchronous)和异步(Asynchronous) 同步和异步通常来形容一次方法调用,同步方法调用一旦开始,调用者必须等到方法调用返回后, ...

  3. java高并发系列 - 第6天:线程的基本操作

    新建线程 新建线程很简单.只需要使用new关键字创建一个线程对象,然后调用它的start()启动线程即可. Thread thread1 = new Thread1(); t1.start(); 那么 ...

  4. java高并发系列 - 第12天JUC:ReentrantLock重入锁

    java高并发系列 - 第12天JUC:ReentrantLock重入锁 本篇文章开始将juc中常用的一些类,估计会有十来篇. synchronized的局限性 synchronized是java内置 ...

  5. java高并发系列 - 第14天:JUC中的LockSupport工具类,必备技能

    这是java高并发系列第14篇文章. 本文主要内容: 讲解3种让线程等待和唤醒的方法,每种方法配合具体的示例 介绍LockSupport主要用法 对比3种方式,了解他们之间的区别 LockSuppor ...

  6. java高并发系列 - 第15天:JUC中的Semaphore,最简单的限流工具类,必备技能

    这是java高并发系列第15篇文章 Semaphore(信号量)为多线程协作提供了更为强大的控制方法,前面的文章中我们学了synchronized和重入锁ReentrantLock,这2种锁一次都只能 ...

  7. java高并发系列 - 第16天:JUC中等待多线程完成的工具类CountDownLatch,必备技能

    这是java高并发系列第16篇文章. 本篇内容 介绍CountDownLatch及使用场景 提供几个示例介绍CountDownLatch的使用 手写一个并行处理任务的工具类 假如有这样一个需求,当我们 ...

  8. java高并发系列 - 第17天:JUC中的循环栅栏CyclicBarrier常见的6种使用场景及代码示例

    这是java高并发系列第17篇. 本文主要内容: 介绍CyclicBarrier 6个示例介绍CyclicBarrier的使用 对比CyclicBarrier和CountDownLatch Cycli ...

  9. java高并发系列 - 第21天:java中的CAS操作,java并发的基石

    这是java高并发系列第21篇文章. 本文主要内容 从网站计数器实现中一步步引出CAS操作 介绍java中的CAS及CAS可能存在的问题 悲观锁和乐观锁的一些介绍及数据库乐观锁的一个常见示例 使用ja ...

随机推荐

  1. 第四界css大会 黑魔法-css网格背景、颜色拾取器、遮罩、文字颜色渐变、标题溢出渐变等

    1.css网格背景 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  2. JavaScript(汇聚页)

    JavaScript对象 String 对象 RegExp 对象 \W 元字符

  3. Wireshark系列(从入门到精通的10个干货)

    Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与网卡进 ...

  4. leetcode-54-螺旋矩阵

    题目描述: 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7 ...

  5. 后序线索化二叉树(Java版)

    前面介绍了前序线索化二叉树.中序线索化二叉树,本文将介绍后序线索化二叉树.之所以用单独的一篇文章来分析后序线索化二叉树,是因为后序线索化二叉树比前序.中序要复杂一些:另外在复习线索化二叉树的过程中,大 ...

  6. windows安装tesseract-OCR及使用

    tesseract是Python的一个OCR(光学字符识别)库 首先下载tesseract的exe安装文件   https://github.com/UB-Mannheim/tesseract/wik ...

  7. vue 在 html 中自定义 tag

    v-if,v-for,:key,:style,v-text,@click,:src,:poster,:class,:href

  8. 自定义ASP.NET Core日志中间件

    这个日志框架使用的是ASP.NET Core的NLog,用来记录每次请求信息和返回信息. 1.首先创建一个Web应用项目,我选择的是MVC模板: 2.使用NuGet添加Microsoft.Extens ...

  9. centos 7修改系统支持中文编码

    2019-03-14 查看系统现支持编码 }[root@web dc2-user]#locale LANG=en_US.UTF- LC_CTYPE="en_US.UTF-8" LC ...

  10. Mac下运行git报错"xcrun: error: invalid active developer path .."

    错误:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun ...