高并发系列之——MQ消息中间件Kafka
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
- 读取生产者配置项
- 实例化ProducerConfig,并设置属性
- 实例化KeyedMessage,构造消息
- 实例化Producer,并send消息
5.消费者实现步骤KafkaConsumer
- 读取kafka配置文件中zookeeper链接字符串
- 实例化ConsumerConfig,并设置属性
- 创建Kafka连接器
- 通过topic获取数据流
- 关闭kafka链接
6.扩展
6.1 消息是什么?
一组消息就是一个数据单元,由字节数组成。消息由键值对构成,其中key可以为空。
可以分批次发送消息,格式为json或是xml。
6.2 消息如何存储?
通过主题分类,一个主题有若干分区,先进先出顺序读取。
6.3 用什么维护broker信息?
高并发系列之——MQ消息中间件Kafka的更多相关文章
- Java高并发系列——检视阅读
Java高并发系列--检视阅读 参考 java高并发系列 liaoxuefeng Java教程 CompletableFuture AQS原理没讲,需要找资料补充. JUC中常见的集合原来没讲,比如C ...
- java高并发系列-第1天:必须知道的几个概念
java高并发系列-第1天:必须知道的几个概念 同步(Synchronous)和异步(Asynchronous) 同步和异步通常来形容一次方法调用,同步方法调用一旦开始,调用者必须等到方法调用返回后, ...
- java高并发系列 - 第6天:线程的基本操作
新建线程 新建线程很简单.只需要使用new关键字创建一个线程对象,然后调用它的start()启动线程即可. Thread thread1 = new Thread1(); t1.start(); 那么 ...
- java高并发系列 - 第12天JUC:ReentrantLock重入锁
java高并发系列 - 第12天JUC:ReentrantLock重入锁 本篇文章开始将juc中常用的一些类,估计会有十来篇. synchronized的局限性 synchronized是java内置 ...
- java高并发系列 - 第14天:JUC中的LockSupport工具类,必备技能
这是java高并发系列第14篇文章. 本文主要内容: 讲解3种让线程等待和唤醒的方法,每种方法配合具体的示例 介绍LockSupport主要用法 对比3种方式,了解他们之间的区别 LockSuppor ...
- java高并发系列 - 第15天:JUC中的Semaphore,最简单的限流工具类,必备技能
这是java高并发系列第15篇文章 Semaphore(信号量)为多线程协作提供了更为强大的控制方法,前面的文章中我们学了synchronized和重入锁ReentrantLock,这2种锁一次都只能 ...
- java高并发系列 - 第16天:JUC中等待多线程完成的工具类CountDownLatch,必备技能
这是java高并发系列第16篇文章. 本篇内容 介绍CountDownLatch及使用场景 提供几个示例介绍CountDownLatch的使用 手写一个并行处理任务的工具类 假如有这样一个需求,当我们 ...
- java高并发系列 - 第17天:JUC中的循环栅栏CyclicBarrier常见的6种使用场景及代码示例
这是java高并发系列第17篇. 本文主要内容: 介绍CyclicBarrier 6个示例介绍CyclicBarrier的使用 对比CyclicBarrier和CountDownLatch Cycli ...
- java高并发系列 - 第21天:java中的CAS操作,java并发的基石
这是java高并发系列第21篇文章. 本文主要内容 从网站计数器实现中一步步引出CAS操作 介绍java中的CAS及CAS可能存在的问题 悲观锁和乐观锁的一些介绍及数据库乐观锁的一个常见示例 使用ja ...
随机推荐
- 【12c OCP】最新CUUG OCP-071考试题库(49题)
49.(11-1) choose the best answer Examine the structure of the SHIPMENTS table: You want to generate ...
- c++ 多态总结
C++的多态性用一句话概括就是: 在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数. 如果对象类型是派生类,就调用派生类的函数:如果对象类型是 ...
- 深入理解Scala的隐式转换
摘要: 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码. 使用方式: 1. ...
- 注解中用于@target的方法annotation/--ElementType.METHOD,ElementType.TYPE对应方法,类接
@Target: @Target说明了Annotation所修饰的对象范围:Annotation可被用于 packages.types(类.接口.枚举.Annotation类型).类型成员(方法.构造 ...
- centos和ubuntu配置路由的三种方式
本篇总结三种修改路由的方式:route, ip route, 以及通过修改文件来配置路由,前2种命令行形式适用于ubuntu和centos,重启失效,最后一种永久有效. 一. route命令 ...
- socketserver模块解析
socketserver模块是基于socket而来的模块,它是在socket的基础上进行了一层封装,并且实现并发等功能. 看看具体用法: x import sockets ...
- Linux之virtualbox中的ubuntu虚拟机linux系统共享文件夹
windows通过virtualbox软件与linux系统机型文件共享 1.第一步 在设置中找到共享文件夹选项,选择添加共享文件夹 2.第二步 选择需要与linux进行共享的文件夹,并选择固定分配 3 ...
- rdlc报表函数
字符串函数 使用串联运算符和 Visual Basic 常量可将多个字段组合在一起.以下表达式返回两个字段,它们分别位于同一文本框的不同行中: 复制代码 =Fields!FirstName. ...
- [ZJOI2019]Minimax搜索
先求出根节点的权值\(w\).根据套路,我们对于每个\(k\),计算\(w(s)\leq k\)的方案数,差分得到答案.为了方便,接下来考虑计算概率而不是方案数. 可以发现,对于一个给定的有解的子集, ...
- (转)IBM AIX系统安装
本文经孤独红尘收集整理,转载请注明出处:http://huxuan713.blog.163.com/< xmlnamespace prefix ="o" ns =" ...