![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
消息中间件
沐雨金鳞
大行不顾细谨
展开
-
canal在执行不同类型的sql语句时的rowData返回情况
Drop table test;create table test(name varchar(20), age int);可以看到,当我们使用drop和create语句时,我们通过rowChange.getSql()可以直接获得其sql语句!insert into test(name, age) values("123", 123);UPDATE test SET age = 1 where name = "123";DELETE FROM test WHERE na..原创 2021-04-15 14:49:18 · 1197 阅读 · 0 评论 -
Kafka消息数据积压,Kafka消费能力不足怎么处理?
1、增加topic的partition数量,分发到其他结点,分散结点压力2、增多consumer group中consumer的数量,消费者数=分区数3、如果是下游的数据处理不及时:提高每批次拉取的数量。(拉取数据/处理时间<生产速度)...原创 2020-09-28 09:28:00 · 2987 阅读 · 0 评论 -
flume+kafka实现实时信息获取
本篇是接上一篇而来的:log4j日志传送至flume至kafka显示输出1、Testlog类信息:package com.bupt.realcaldemo.test;import org.apache.log4j.Logger;public class Testlog { protected static final Logger LOG=Logger.getLogger(Testlog.class); public static void main(Strin.原创 2020-09-19 16:20:02 · 399 阅读 · 0 评论 -
log4j日志传送至flume至kafka显示输出
妈耶,一个简简单单的功能,废了我大半天功夫,反思了一下原因,1是自己之前学的东西记不清了,各种配置搞的很晕,看了半天,2是网上的教程实在不堪入目,跟着走让人云里雾里,费半天功夫出不来结果。仅此,详细告诉大家流程及结果演示。一、安装kafka 和 flume(mac的,如果是其他的,请从网上自己找一下)MAC安装Kafka安装kafka时会默认安装zookeeperMAC安装Flume二、启动zookeepernohup zookeeper-server-start /usr..原创 2020-09-19 15:59:30 · 434 阅读 · 1 评论 -
Flume虞兮叹一(为什么要把kafka和flume集成)
为什么要集成Flume和Kafka我们很多人在在使用Flume和kafka时,都会问一句为什么要将Flume和Kafka集成?那首先就应该明白业务需求,一般使用Flume+Kafka架构都是希望完成实时流式的日志处理,后面再连接上Flink/Storm/Spark Streaming等流式实时处理技术,从而完成日志实时解析的目标。1. 生产环境中,往往是读取日志进行分析,而这往往是多数据源的,如果Kafka构建多个生产者使用文件流的方式向主题写入数据再供消费者消费的话,无疑非常的不方便。 2.原创 2020-09-17 08:56:15 · 665 阅读 · 2 评论 -
kafka虞兮叹三(消息有序消费)
两种方案:方案一,kafka topic 只设置一个partition分区 方案二,producer将消息发送到指定partition分区解析:方案一:kafka默认保证同一个partition分区内的消息是有序的,则可以设置topic只使用一个分区,这样消息就是全局有序,缺点是只能被consumer group里的一个消费者消费,降低了性能,不适用高并发的情况 方案二:既然kafka默认保证同一个partition分区内的消息是有序的,则producer在发送消息时可以指定需要保证...原创 2020-09-17 08:00:40 · 577 阅读 · 0 评论 -
kafka虞兮叹二(生产消息不丢失不重复)
一、producer生产消息不丢失ack应答机制:只要设置acks=all(-1),那么数据就不会丢失!acks:0:producer不等待broker的ack,这一操作提供了一个最低的延迟,broker一接收到还没有写入磁盘就已经返回,当broker故障时有可能丢失数据;1:producer等待broker的ack,partition的leader落盘成功后返回ack,如果在follower同步成功之前leader故障,那么将会丢失数据;-1(all):producer等待broker原创 2020-09-16 21:24:56 · 270 阅读 · 0 评论 -
kafka虞兮叹一(消费幂等性,不丢失不重复)
如何保证kafka消费数据不重复?(如何保证消息消费时的幂等性)一、背景:Kafka 实际上有个 offset 的概念,就是每个消息写进去,都有一个 offset,代表消息的序号,然后 consumer 消费了数据之后,每隔一段时间(定时定期),会把自己消费过的消息的 offset 提交一下,表示“我已经消费过了,下次我要是重启啥的,你就让我继续从上次消费到的 offset 来继续消费吧”。offset扫盲:offset在kafka0.9之前保存在zookeeper上,0.9之后保存在.原创 2020-09-16 21:15:24 · 935 阅读 · 1 评论 -
Kafka数据处理
一、新建KafkaStream项目二、添加两个依赖三、处理逻辑四、设置kafkaSteam,运行五、测试原创 2020-09-16 18:16:42 · 507 阅读 · 0 评论 -
Kafka事务
Kafka从0.11版本开始引入了事务支持。事务可以保证Kafka在Exactly Once语义的基础上,生产和消费可以跨分区和会话,要么全部成功,要么全部失败。Producer事务为了实现跨分区跨会话的事务,需要引入一个全局唯一的Transaction ID,并将Producer获得的PID和Transaction ID绑定。这样当Producer重启后就可以通过正在进行的TransactionID获得原来的PID。 为了管理Transaction,Kaf...原创 2020-09-16 14:43:33 · 271 阅读 · 0 评论 -
Zookeeper在Kafka中的作用
Kafka 0.9版本之前,consumer默认将offset保存在Zookeeper中 从0.9版本开始,consumer默认将offset保存在Kafka一个内置的topic中,该topic为__consumer_offsets 总结:Kfaka的数据会存储在Zookeeper上,比如集群的broker信息(有哪些borker.id),每个broker的每个topic信息(leader是谁,ISR集合有哪些等),0...原创 2020-09-16 14:30:44 · 1550 阅读 · 0 评论 -
kafka和flume区别
Flume更趋向于消息采集系统,Kafka更趋向于消息缓存系统。 kafka:目前项目中主要是用来做消息推送中间件,消息的处理完全由业务方自己定义,请求频次单机吞吐量轻轻松松50W+/s,数据在集群不全挂的情况下是不会丢数据,消费也很灵活,可以指定分区和offset,可以当做成一个数据库。 flume:用来做数据采集和落地,目前使用的是flume-ng,流程是source(kafka)->channel->hdfs 相比较kafka比较轻量级 ,就是一个数据的流通管道,当..原创 2020-07-16 10:37:23 · 1895 阅读 · 0 评论 -
Kafka自定义Interceptor拦截器
拦截器原理Producer拦截器(interceptor)是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑。对于producer而言,interceptor使得用户在消息发送前以及producer回调逻辑前有机会对消息做一些定制化需求,比如修改消息等。同时,producer允许用户指定多个interceptor按序作用于同一条消息从而形成一个拦截链(interceptor chain)。Intercetpor的实现接口是org.apac...原创 2020-07-15 21:01:27 · 368 阅读 · 0 评论 -
Kafka API (Producer and Consumer)
Producer API :消息发送Kafka的Producer发送消息采用的是异步发送的方式。 在消息发送的过程中,涉及到了两个线程——main线程和Sender线程,以及一个线程共享变量——RecordAccumulator。 main线程将消息发送给RecordAccumulator,Sender线程不断从RecordAccumulator中拉取消息发送到Kafka broker。 相关参数:batch.size:只有数据积累到batch.size...原创 2020-07-15 19:10:51 · 306 阅读 · 0 评论 -
Kafka的其他一些知识(高效数据读写、Zookeeper作用、事务)
什么是KafkaKafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。消息队列的优点和缺点优点:异步、解耦、削峰缺点:复杂度增加、消息队列如果崩了,那系统就没法用了、异步数据一致性问题消息队列的两种模式点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除) 消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。 消息被消费以后,queue 中不再有存储,所以消..原创 2020-07-15 15:45:51 · 239 阅读 · 0 评论 -
Kafka 消费者
1、消费方式我们知道消息队列的消费方式有两种,一种是pull的方式,Consumer主动消息队列中拉数据,另一种是Push,即消息队列主动将数据push推给Consumer,Consumer被动接受消息。Kafka采用的是Pull 主动拉的方式。Push 模式的缺点:很难适应消费速率不同的消费者,因为消息发送速率是由broker决定的。它的目标是尽可能以最快速度传递消息,但是这样很容易造成consumer来不及处理消息,典型的表现就是拒绝服务以及网络拥塞。而pull模式则可以根据c...原创 2020-07-15 15:20:26 · 326 阅读 · 0 评论 -
Kafka发送者(发送数据可靠性、副本间数据一致性)
上一节我们说了生产者是怎么将数据分区的,也就是Producer生产的消息怎么到不同Partition。1、那我们如何保证Producer发送的数据,能可靠的发送到指定的topic呢?topic的每个partition收到producer发送的数据后,都需要向producer发送ack(acknowledgement确认收到),如果producer收到ack,就会进行下一轮的发送,否则重新发送数据。2、何时发送ACK?副本数据同步策略:Kafka选择了第...原创 2020-07-15 12:27:26 · 877 阅读 · 0 评论 -
Kafka生产者分区partition策略
分区partition策略为什么要分区patition?(1)方便在集群中扩展,每个Partition可以通过调整以适应它所在的机器,而一个topic又可以有多个Partition组成,因此整个集群就可以适应任意大小的数据了;(2)可以提高并发,因为可以以Partition为单位读写了。怎么把数据放在不同的区?1、我们需要将producer发送的数据封装成一个ProducerRecord对象。2、我们看到Producer发送数据封装成对象时的参数,...原创 2020-07-15 11:28:40 · 2919 阅读 · 0 评论 -
Kafka文件存储机制
Kafka 中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向 topic的。 topic 是逻辑上的概念,而 partition 是物理上的概念,每个 partition 对应于一个 log 文件,该 log 文件中存储的就是 producer 生产的数据。 Producer 生产的数据会被不断追加到该log 文件末端,且每条数据都有自己的 offset。 消费者组中的每个消费者,都会实时记录自己消费到了哪个 offset,以便出错恢复时,从上次的位...原创 2020-07-15 10:53:37 · 206 阅读 · 0 评论 -
Kafka基础架构
Producer:消息生产者,向 kafka broker 发消息。 Consumer :消息消费者,从 kafka broker 取消息。 Consumer Group :消费者组,由多个 consumer 组成。 消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费; 消费者组之间互不影响。 所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。 Broker :一台 kafka ...原创 2020-07-15 10:44:39 · 143 阅读 · 0 评论 -
MAC安装Kafka
1、安装kafkabrew install kafka直接安装kafka即可,因为kafka依赖zookeeper,安装kafka时zookeeper会自动安装。截个图:2、启动zookeepernohup zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties &然后查看一下是否启动:启动正常!如果不启动zookeeper,直接启动kafka,会出现拒绝连接的情况:..原创 2020-07-15 09:58:51 · 340 阅读 · 0 评论