高并发系列之——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 ...
随机推荐
- django 结合 OPTIONS方法 处理跨域请求(单个视图方法中)
OPTIONS 方法比较少见,该方法用于请求服务器告知其支持哪些其他的功能和方法.通过 OPTIONS 方法,可以询问服务器具体支持哪些方法,或者服务器会使用什么样的方法来处理一些特殊资源.可以说这是 ...
- 前端必学内容:webpack3快速入门 1-23节内容参考
前端必学内容:webpack(模块打包器) webpack3 学习内容,点击即可到达 (1).webpack快速入门——如何安装webpack及注意事项 (2).webpack快速入门——webpac ...
- graphviz画图与中文乱码等问题总结
最近想写一些文档,画一些程序的逻辑图,用了vision,markdown等软件感觉不怎么好用,于是找到graphviz,这款强大的软件.下面介绍一些入门,还有自己在用的过程中遇到的问题 1.中文乱码的 ...
- 微信小程序富文本编辑,Thinkphp5.1
内容很简单,代码做了注释可以看一下 主要是把 文本 标题 标题颜色 图片 赋值到数组内, 举例: { pic: "/Share/image/images/bgqq_01.png" ...
- HDU-1087-Super Jumping! Jumping! Jumping!(线性DP, 最大上升子列和)
Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- C#-输入输出,类型,运算符,语句的练习——★判断年份是否是闰年★
//输入一个年份,判断是否是闰年 //(能被4整除却不能被100整除的,年份世纪年份能被400整除的是闰年) Console.Write("请输入一个年份:"); int year ...
- 杨辉三角-python
# -*- coding: utf-8 -*- def triangles(): yield [1] # n = 0 第一行 yield [1, 1] # n = 1 第二行 b, n, old = ...
- [转] 如何在 CentOS7 中使用阿里云的yum源
[From] https://www.cnblogs.com/lpbottle/p/7875400.html 1. 备份原来的yum源 mv /etc/yum.repos.d/CentOS-Base. ...
- CKEditor图片上传实现详细步骤(使用Struts 2)
本人使用的CKEditor版本是3.6.3.CKEditor配置和部署我就不多说. CKEditor的编辑器工具栏中有一项“图片域”,该工具可以贴上图片地址来在文本编辑器中加入图片,但是没有图片上传. ...
- unity 优化之overdraw查看
scene视图里面能直接看,打开左上角那个下拉选项,选择overdraw就行 转载篇在game视图下查看overdraw: https://blog.csdn.net/complicate ...