- 博客(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生产者配置还有许多,并且很多配置之间都是有关联的,除了生产者相关配置,还有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 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 线程池策略
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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人