自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 Flink 02 | 英雄莫问出处 Flink丰富多彩的数据源

除了基本数据源外Flink 内置了许多数据源连接器:如Kafka Source、Elasticsearch Source等等,以满足不同的业务场景,比如Kafka 数据源.build();这是一个基础的数据源接口,用于定义非并行数据源或并行度为 1的数据源run(SourceContextctx) throws Exception:在这个方法中实现数据的生成逻辑,并通过 ctx.collect 发送数据。cancel():用于停止数据源的生成操作。当作业取消或出现异常时会调用此方法。

2024-09-26 19:38:33 784

原创 大数据 flink 01 | 从零环境搭建 简单Demo 运行

Flink是一个开源的流处理和批处理框架,它能够处理无界和有界的数据流,具有高吞吐量、低延迟和容错性等特点实时数据处理、数据分析、机器学习、事件驱动等。流处理是一种针对实时数据流进行连续处理的技术。它的数据通常是无界,数据以持续不断的流的形式到达。批处理是一种将大量数据集合在一起进行统一处理的技术。在批处理中,首先要收集存储数据,批处理通常用于处理历史数据或离线数据。

2024-09-25 20:17:03 507

原创 kafka (至关重要)多副本相关一些关键概念

本文介绍了kafka 中几个概念,这几个概念对理解kafka 多副本之间保证数据一致性、可靠性至关重要。kafka 所有分区的消息都是保存的日志中,读者可以带着下面两个问题阅读本文1. 新消息该往哪写?2. 如何衡量副本的同步进度3. 选举时依据什么选出最佳Leader副本是相对于分区的,每个分区都有自己的副本,并且这些副本分布在不同Broker上。

2024-09-24 18:56:33 329

原创 kafka 消费者线程安全问题详细探讨

因为通常拉取消息比较快,消息处理比较耗时,由于消息处理不涉及KafkaConsumer 相关API 操作,因此不存在线程安全问题。,如果业务处理很快则建议让业务处理逻辑放到 IO线程中执行,这样避免线程上下文切换影响性能。MessageOnlyDispatcher:只有请求和响应消息派发到线程池,其它连接断开、心跳等消息直接在 IO 线程上执行。ExecutionDispatcher:只把请求消息派发到线程池,响应和其它连接、断开、心跳等消息直接在 IO 线程上执行。

2024-09-23 20:03:13 1125

原创 kafka 事务 - 没错消息队列也有事务

妄想一篇文章且看后不动手就掌握的不现实,没人做不到。一些原理来源书本、官网等其他网络资料。源码例子自己本地跑过。如果您已经会了,真诚地欢迎您指出文中不足甚至错误,也希望您能温故知新。关注一起交流心得。如果您接触不久,也可以关注一起。

2024-09-22 19:15:49 296

原创 kafka 消息位移提交几种方式:消息重复消息、消息丢失的关键

一般情况我们消息位移自动提交就可以满足我们大部分场景,当然也有场景需要控制消息位移提交,需要我们在可靠性与性能之间做取舍,自动位移提交代码稍微复杂点,需要处理好位移提交失败的情况。

2024-09-21 18:40:32 1010

原创 kafka 超详细的消息订阅与消息消费几种方式

消费者订阅几种方式订阅多个主题按正则表达式订阅消息消费几种方式按分区消费按主题消费不区分笔者建议一开始学习Kafka最好不要用SpringBoot 集成方式,因为SpringBoot推崇用注解方式,比如等,就可以直接消费,这样不能直接接触kafka-client一些api, 且SpringBoot 给我们提供了很多默认配置,我们几乎零配置也可以使用,实际上kafka很多配置很重要的,不容忽视。

2024-09-19 19:07:55 483

原创 kafka 一步步探究消费者组与分区分配策略

本期主要聊聊kafka消费者组与分区。

2024-09-18 19:20:44 1039

原创 kafka 生产者重要配置——可靠性与吞吐量能否兼得?

kafka生产者配置还有许多,并且很多配置之间都是有关联的,除了生产者相关配置,还有ConsumerBrokerTopic等配置。只有掌握这些配置才能最大程度提升kafka性能同时兼顾可靠性以上就是我个人的理解喜欢的一起关注交流学习更多配置可以查看官方文档kafka官方文档。

2024-09-17 19:30:00 703

原创 kafka 生产者拦截器

生产者拦截器接口包含三个方法onSend 方法可以对消息进行定制化修改onAcknowledgement 在消息被应答或者发送失败时执行该方法在IO线程执行,所以不要执行一些耗时操作,会影响消息投递速度close 用于执行一些资源释放的工作该生产者拦截器给消息添加个包含版本号信息的Header,配置生产者属性使其生效@Override@Override@Override@Override> map) {生产者拦截器还是比较简单,相应的还有消费者拦截器。

2024-09-16 19:30:00 367

原创 记一次kafka消息丢失问题排查

限于篇幅一些代码没有给出,欢迎私下交流学习。

2024-09-15 19:30:00 502

原创 kafka Partition使用详解

kafka将主题(Topic)划分为多个不同的片段,每个片段称为一个分区同一个分区的消息是有序的分区可以分布在不同的存储节点上,从而提升吞吐量可以通过增加分区的数量来扩展系统的处理能力默认每个Topic只有1个分区(num.partitions)生产者发送消息时可以直接指定分区序号消息未指定分区序号,则默认分区器确定分区序号消息Key 未指定,则轮询发送到各个分区消息Key 指定了,则根据Key 哈希确定分区序号kafka 提供了自定义分区的功能,只需要实现接口,以下是一个简单的分区器。

2024-09-14 19:15:00 409

原创 kafka 配置自定义序列化方式

自定义序列化器 只需要实现对应的 Serializer,UserDeserializer比如有一个 User 类@Data@Override@Override@Override@Override生产者与消费者配置...上面我们配置了 User 相关的序列化,但是实际上项目发送的消息内容肯定不止 User 这一种,我们需要针对不同类型指定不同的序列化方式本文主要介绍了自定义序列化方式,以及为不同类型指定不同的序列化实现方式。

2024-09-13 18:53:27 604

原创 kafka消息发送几种方式

有些发送异常可以通过重试几次后解决,比如网络异常,对于有些异常比如消息太大超出kafka配置的最大消息字节数,这类异常重试也会失败,所以这类异常KafkaProducer 不会进行任何重试。有没有办法既要异步发送还要能处理发送失败的场景,这就是第三种,发送完成时,执行相应的回调方法。:等待发送结果返回,这种方式是可靠的,因为异常能及时处理,但同步发送需要阻塞等待一条消息发送完才处理下一条,吞吐量差。发送是异步的,不关心发送的结果,吞吐量最高,但可能存在发送失败的情况。分为同步发送、异步发送。

2024-09-12 18:54:58 613

原创 kafka之路-01从零搭建环境到SpringBoot集成

1) 生产者将消息发送到Broker 节点,消费者从Broker 订阅消息2)消息订阅通常有服务端Push 和 消费端Pull两种方式,Kafka采用的是。

2024-09-11 19:21:22 857

原创 Dubbo 过滤器使用总结

过滤器适用于一些全局统一的处理,比如参数校验、权限控制、统一异常处理等等。

2024-09-10 19:56:21 381

原创 Dubbo 线程池策略

Dubbo 线程池,主要还是基于JDK线程池几个参数做文章,并没有发明什么新东西,因此理解Dubbo 线程池前提掌握jdk 线程池的工作原理,当然也可以自定义扩展实现。指定线程池方式如下。

2024-09-09 19:29:12 1155

原创 Dubbo 线程模型

默认使用的All, 所有的事件都放到业务线程处理,尽管有些请求处理很快,可能在IO线程处理比较合适,但是实际情况如果我们无法确定该业务逻辑是否哪天会处理变慢,使用All比较保险,因为它不会阻塞IO线程,导致其他请求无法处理。

2024-09-09 19:06:37 937

原创 Dubbo 负载均衡算法源码学习加使用总结

基于权重的负载均衡策略有 RandomLoadBalance,RoundRobinLoadBalance。计算权重时会考虑将系统启动时间,即预热时间,默认预热时间10分钟。预热时间:如果服务提供者启动时长,达不到预热时间,对应权重需要进行折算。根据预热时间计算权重int weight;

2024-09-07 19:12:07 777

原创 你还不会Dubbo集群容错?源码实现其实很简单

AbstractCluster.join 方法在doJoin 基础上增加拦截器,先忽略拦截器。doJoin 是一个抽象的方法具体有子类实现,返回AbstractClusterInvoker@Override加载对应负载均衡算法(LoadBalance)这里并没有调用负载均衡算法选择一个invoker,虽然AbstractClusterInvoker已经 实现逻辑select / reselect ,调用负载均衡算法选择一个invoker 是在子类中处理的。

2024-09-06 19:21:07 762

原创 Dubbo 服务目录- 服务提供者列表

Directory是Dubbo集群容错、负载均衡的基础,集群容错与负载均衡建立在多个服务提供者基础上,而Directory作用就是提供服务提供者列表。

2024-09-05 20:29:09 495

原创 Dubbo SPI 、自适应扩展点、自动包装使用总结

Dubbo SPI 整个源码几乎随处可见,掌握Dubbo SPI 能够轻松定制化各种扩展配置,并且对源码学习理解帮助很多,否则你会一头雾水,这里的SPI实现实现选择的是哪个实现。

2024-09-05 20:23:35 1013

原创 Dubbo 源码学习 | 消费端引用梳理

本文梳理Dubbo消费端获取引用对象,无感发起远程调用流程,当然限于篇幅,本文只讨论主流程, 一些集群容错、负载均衡等等没有涉及。

2024-09-04 19:15:19 740

原创 dubbo 02 | 源码学习-服务发布核心流程梳理

本文主要梳理服务发布的核心流程,以及关键代码,其中关键 Dubbo SPI Wrap 机制,部分读者可能无法将注册中心串起来。这只是开始,后面继续深入服务调用处理等等。

2024-09-04 19:09:54 676

原创 记一次令人哭笑不得的BUG (一)

令人哭笑不得的BUG,差点就砸键盘了

2023-02-06 20:13:31 101

原创 Java 命令行运行 & 参数传递入门

命令行运行Java 程序和进行参数传递

2023-02-05 09:11:56 1403

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除