- 博客(38)
- 收藏
- 关注
原创 Lua限流器的3种写法
上篇文章讲解了Lua脚本,事务和Pipline之间的使用方式和性能差距,本篇文章将聚焦Lua脚本,我将用三种写法来展现如何实现一个Redis限流器。
2025-02-10 23:34:35
1004
原创 详解Redis中lua脚本和事务
当使用 MULTI 开启事务后,后续的命令会被放入队列,直到调用 EXEC 时,队列中的命令才会依次执行。在脚本执行的过程中,不会执行其他客户端的命令,即脚本中的所有操作要么全部成功,要么全部失败。若脚本执行过程中出现错误,整个脚本的执行会停止,并且没有回滚机制,已执行的部分操作不会被撤销。Lua 脚本将多个操作封装在一个脚本中,减少了客户端与服务器之间的网络往返次数,并且脚本在服务器端执行,减少了命令解析的次数,通常在处理复杂逻辑时性能更优。同时,WATCH 命令可以用于实现乐观锁,处理并发更新的情况。
2025-02-10 23:13:07
1151
原创 Websocket从原理到实战
WebSocket 是一种在单个 TCP 连接上进行全双工通信的网络协议,它使得客户端和服务器之间能够进行实时、双向的通信,既然是通信协议一定要从发展历史到协议内容到应用场景最后到实战全方位了解。
2025-02-07 23:41:49
721
原创 函数式接口@FunctionalInterface
函数式接口是指只包含一个抽象方法的接口。需要注意的是,函数式接口可以包含默认方法、静态方法和Object类的公共方法,但只能有一个抽象方法。函数式接口为 Java 引入了 Lambda 表达式和方法引用等函数式编程的特性。
2025-02-07 21:55:18
192
原创 SpringBoot整合RocketMQ
在当今快速发展的软件开发领域,构建高效、稳定的应用系统是每个开发者的追求。Spring Boot 作为一款极具影响力的开发框架,凭借其强大的自动化配置和便捷的开发特性,极大地简化了项目搭建过程。使用 Spring Boot,我们无需再为框架之间的兼容性、适用版本等繁杂问题而烦恼。只需简单添加一个配置,就能轻松引入所需的各种功能和组件,实现快速开发。消息队列中间件是分布式系统中不可或缺的重要组件。在分布式系统中,各个服务之间相互独立又紧密协作,消息队列就像是一座桥梁,连接着不同的服务,实现它们之间的高效通信。
2025-02-06 22:57:55
494
原创 【教学】推送docker仓库
Docker Hub 这个最常见的公共 Docker 仓库为例,本文将介绍如何把本地 Docker 镜像推送到公共 Docker 仓库。
2025-02-06 22:39:31
758
原创 使用 Grafana 和 Prometheus展现消息队列性能
引言上篇文章通过JMX提取Kafka数据,本篇文章将通过JDBC存储Kafka性能数据存储于数据库,并通过Grafana 和 Prometheus进行展示,实现开发中常用的可视化监控。
2025-02-03 14:46:16
958
原创 Kafka流式计算架构
Kafka 凭借其卓越的架构设计,具备极为高效的流式计算能力,在海量数据环境下,依然能够以惊人的速度实现消息的高性能消费,轻松应对高并发、低延迟的严苛业务需求。无论是实时数据处理、复杂事件分析,还是大规模数据的实时监控,Kafka 都能凭借出色的性能表现,为各类应用场景提供坚实可靠的支持。本文将深入剖析 Kafka 流式计算能力的核心原理,从数据摄取、处理逻辑到状态管理,全方位解析其实现高性能消息消费的关键技术与策略,带你一窥 Kafka 在消息处理领域的卓越魅力。
2025-02-02 12:59:41
1402
1
原创 详解Kafka并行计算架构
在高流量的复杂场景下,Kafka 凭借卓越的性能表现脱颖而出,始终维持着极高的吞吐率和高效的消息消费能力,在众多消息队列产品中独树一帜。Kafka 的分区架构堪称其高性能的核心秘诀,它通过多维度的精妙设计,达成了并行计算的高效执行。从数据分布的合理规划,到多消费者的并行消费模式,再到生产者的并行写入机制,以及独特的数据存储结构,每个环节都紧密配合、协同发力,共同推动着 Kafka 在海量数据处理场景中稳步前行,不断刷新性能。
2025-02-02 12:53:34
823
原创 Kafka架构
Kafka 凭借其独树一帜的分区架构,在消息中间件领域展现出了卓越的性能表现。其分区架构不仅赋予了 Kafka 强大的并行计算能力,使其能够高效处理海量数据,还显著提升了系统的容灾能力,确保在复杂的运行环境中始终保持稳定可靠。本文将深入剖析 Kafka 的架构选型,通过对其底层逻辑的抽丝剥茧,帮助我们提炼架构设计的关键能力与思维模式,进而为优化自身系统架构提供极具价值的参考。
2025-02-02 01:41:45
653
原创 为什么就Kafka有分区?
消息队列很多,RocketMQ RabbitMQ ActiveMQ 多数是Broker+Quene的策略,本篇文章详细分析Kafka的分区技术选型的意义和作用。
2025-02-02 01:26:45
601
原创 Kafka分区策略实现
当上述默认策略无法满足业务需求时,可以自定义分区策略。通过实现接口,重写partition方法来实现自定义的分区逻辑。例如,根据消息的某些特定字段(如时间、地理位置等)来进行分区,以满足特定的业务需求。@Override// 自定义分区逻辑,这里简单示例根据消息值的长度分区@Override@Override// 使用自定义分区器的生产者示例i < 10;i++) {
2025-01-29 17:55:17
1636
1
原创 Kafka的消息协议
在学习MQTT消息协议的时候我常常思考kafka的消息协议是什么,怎么保证消息的可靠性和高性能传输的,接下来我们一同探究一下。
2025-01-29 17:40:10
1045
原创 RocketMQ 中如何实现消息的可靠传递?
持久化策略:内存注定是不可靠的,刷盘一定是可靠性首选,但是刷盘导致的IO延时如何优化,是评判中间件性能的关键。重试机制:3次重试应该是各个开源框架的默认重试次数。集群化策略:单个节点注定不是高可用的最终形态,主从复制多节点可靠是最终态。幂等机制:保持消息的重复消费可靠性,幂等键或者其他策略都是可参考的。
2025-01-29 17:35:26
970
原创 实体类未设置字段如何不参与转化json?
Jackson 是一个广泛使用的 Java JSON 处理库,Spring Boot 默认使用它来处理 JSON 数据。你可以通过 @JsonInclude。Gson 是 Google 开发的一个简单易用的 Java JSON 处理库。注解来控制哪些字段会被序列化到 JSON 中。
2025-01-25 14:41:27
269
原创 初识消息队列之Qos标准
这是最低等级的服务质量。消息发送者只发送一次消息,不进行任何重试或确认操作。消息可能会到达接收者,也可能在传输过程中丢失,发送者不会关心消息是否成功到达。:适用于对消息丢失不太敏感、实时性要求较高且数据量较大的场景,如传感器数据的快速上报,偶尔丢失一些数据对整体业务影响不大,只要能快速获取到最新的数据即可。:发送者会确保消息至少被传递一次。消息发送后,发送者会等待接收者发送的确认消息(PUBACK),如果没有收到确认,发送者会重新发送消息,直到收到确认或者达到最大重试次数。
2025-01-25 14:32:44
1069
原创 Spring项目部署到Docker
确保你的 Spring 项目已经开发完成,且能在本地正常运行。执行完上述命令后,会在项目的target(Maven)目录下生成相应的 JAR 文件。
2025-01-23 23:21:12
478
原创 nutzboot框架入门
NutzBoot 是基于 Nutz 框架开发的一款轻量级、高效的 Java Web 开发脚手架,它旨在简化 Java Web 应用的开发与部署流程,为开发者提供便捷、高效的开发体验。
2025-01-23 23:15:12
1152
原创 【实战设计模式】策略模式
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
2025-01-22 00:11:20
265
原创 提升开发效率100% 这些idea常见快捷键你还不知道?
Ctrl + Alt + O 优化导包 (失效的和不使用的都可以快速优化)Crtl + Alt + L 格式化代码(选中部分代码可以格式化部分)Alt + F8 代码计算器(配合断点使用)Ctrl + Alt + + 快速全文展开。Ctrl + Alt + - 快速全文折叠。Alt + V 代码计算器计算结果。主要是我开发觉得好用的。
2025-01-20 21:46:26
95
原创 初识Kubernetes
Kubernetes(通常简称为 K8s)是一个开源的容器编排平台,,最初由谷歌开发,旨在为容器化应用提供一个高效、可靠的管理和部署平台。它于 2014 年开源,迅速成为容器编排领域的事实标准,被广泛应用于各种规模的企业和组织中,用于管理和运行容器化的应用程序。
2025-01-15 22:41:42
214
原创 云计算到底是什么
云计算是一种基于互联网的计算模式,它通过网络将计算资源(如服务器、存储、网络、软件等)以服务的形式提供给用户,使用户可以根据自身需求随时随地获取和使用这些资源,而无需了解和管理底层的技术细节。
2025-01-15 22:39:53
353
原创 CI/CD是什么?
CI/CD 是持续集成(Continuous Integration)、持续交付(Continuous Delivery)和持续部署(Continuous Deployment)的缩写,是一种软件开发实践和流程,旨在实现软件的快速、高质量交付。
2025-01-14 21:24:34
905
原创 【Docker实践】数据持久化和迁移
本文主要阐述Docker容器持久化方法和不同环境Docker持久化数据的迁移方案。接着,进入 MySQL 容器内部,使用。采取基于日志的同步方式(binlog)便可以达到恢复数据的目的。
2025-01-05 16:57:29
1128
原创 SQL语句处理查询空值
例子:查询并返回 Employee 表中第二高的薪水。如果不存在第二高的薪水,查询应该返回 null。技术:可以把SQL变成临时表查询,放置SELECT ()中。场景:如果有查询结果则返回结果,否则为null。PS:也可以使用内置IFNULL()函数。
2024-03-30 10:28:28
372
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人