自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TiDB高手进阶:揭秘自增ID热点现象与高级调优技巧

TiDB 作为分布式数据库,设计目标是提供高并发、高可扩展性和容错能力。然而,当系统中出现热点问题时,会对整体性能和稳定性产生一系列负面影响,可能产生性能瓶颈、写入延迟、读取性能下降。

2024-04-29 11:18:24 821

原创 大数据的前世今生

要了解一个事务,不能一开始就特别关注细节,首先应该去了解他的历史,他的来龙去脉,这样才能有全局观,才能更加深刻的了解一个事务。对于技术,也同样适用,今天就来了解下大数据的前世今生。

2024-04-28 09:00:00 851

原创 Maven核心概念全解析

Maven 是一个广泛应用于 Java 项目构建和管理的自动化工具。它由 Apache Software Foundation 开发和维护,旨在简化和标准化软件项目的构建、依赖管理、报告和部署过程。

2024-04-26 09:00:00 846 1

原创 揭秘MyBatis插件:深入理解与实战运用

开源框架都注重自身的扩展性,为用户提供了扩展机制,这样具有很高的灵活性,同时也能根据自身的业务定制实现一些额外的功能。MyBatis 作为优秀的 ORM 框架,自然也考虑到了扩展性,这样使其拥有强大的灵活性。Mybatis 中虽然提供的叫插件,但是实际上是通过拦截器实现的,通过拦截某些方法的调用,植入拦截器的逻辑,实现插件功能。Executor:SQL 执行器,Mybatis 中对数据库的所有增删改查都是通过 Executor 实现的。

2024-04-24 09:00:00 928

原创 Elasticsearch的可靠性保障

综上所述,Elasticsearch的可靠性设计涵盖了分布式架构、数据冗余、健康监测、数据一致性、数据持久化、高效同步等多个维度,通过一系列精心设计的机制和功能,确保在大规模、复杂环境下提供稳定、可靠的数据服务。实际应用中,还需结合业务特性和运维需求,进行合理的配置与监控,进一步强化系统的可靠性。

2024-04-23 09:15:00 724

原创 如何熟悉一个陌生的业务系统

要想熟悉一个陌生的系统首先要从业务入手,切不可操之过急一上来就深入到代码层面去看代码实现,通过业务北京、使用用户、业务流程等就能知道这个系统的价值所在。业务了解后在技术层面在了解系统架构、存储层设计、系统交互、运维部署等等。这里我想提醒你一下,不要过分纠结于技术的实现,要活学活用,不要嫌弃你的前辈怎么这样那样,获取是特定环境的限制。还有最最关键的一点,不要忽略人的重要性,如果这个系统还有其他同事经手过,要大胆的向其请教,甚至用一些“非正常手段”在也是可以的。

2024-04-22 09:00:00 598 1

原创 深度剖析Gateway在微服务治理中的关键角色

如果内置谓词不满足要求,想要实现自定义谓词,可以通过 Gateway 的可扩展谓词工厂来实现自定义谓词,Gateway 组件提供了一个统一的抽象类 AbstractRoutePredicateFactory 作为谓词工厂,你可以通过继承这个类来添加新的谓词逻辑。// 继承自通用扩展抽象类AbstractRoutePredicateFactory// 定义当前谓词所需要用到的参数@Validated@Override// 声明当前谓词参数的传入顺序。

2024-04-19 12:37:03 820

原创 手把手教你实现服务高可用性

服务高可用性(High Availability, HA)是指在正常工作条件下以及发生故障时,服务仍能持续稳定地提供预期功能的能力。为了实现服务的高可用性,通常需要采取一系列技术和策略,确保服务在面对硬件故障、网络问题、软件错误等各种异常情况时,依然能够对外提供服务或快速恢复正常。

2024-04-18 09:00:00 742

原创 微服务拆分:打造高性能、高扩展的未来架构

单体应用将所有的功能都维护在一个巨无霸的服务中,然后打包成一个 war 包扔到 Tomcat中运行,对外提供服务。单体应用存在很多问题,比如开发中互相干扰、沟通成本高、无法快速迭代、无法单独回滚等。由于单体服务存在很多问题,计算机中的分治思想就产生了作用,将单体应用拆分成比较小的服务,分开维护。微服务拆分后每个服务可以单独部署、单独测试、单独发布回滚,并借助Docker和CI/CD(持续集成)完成快速上线。微服务拆分的合理性很大程度上决定了整个业务链路的可用性。

2024-04-17 10:29:51 1035 2

原创 MongoDB 索引全攻略

任何数据库都有索引这一核心功能,索引通常能够极大的提高查询效率,如果没有索引,MongoDB 在读取数据时必须扫描集合中的每个文件,并选取那些符合查询条件的记录。这种扫描查询集合的查询方式效率非常低,特别在处理大量数据时。索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。

2024-04-16 09:00:00 959

原创 全面解读MongoDB高可用、高性能与高可扩展架构

MongoDB 作为一款广受欢迎的现代文档数据库,其高可用性(High Availability, HA)、高性能(High Performance)和高可扩展性(High Scalability)是其核心特性,使得它在各种大规模数据处理场景中表现出色。下面来分别介绍下"三高",高可用、高性能、高可扩展的原理。

2024-04-15 09:00:00 1194

原创 深入剖析MongoDB集群架构设计

MongoDB 有三种集群架构模式,分别为主从复制(Master-Slaver)、副本集(Replica Set)和分片(Sharding)模式。当讨论 MongoDB 的集群架构时,应强调副本集和分片这两种官方推荐和支持的模式。如果在历史背景下讨论,可以提及主从复制作为早期的一种复制方式,但需明确指出它在现代 MongoDB 中已不再适用。探索非关系型世界:MongoDB核心概念全解析-CSDN博客TiDB存储引擎TiKV揭秘-CSDN博客。

2024-04-14 11:06:47 1198

原创 TiDB存储引擎TiKV揭秘

TiKV 是一个分布式事务型的键值数据库,提供了满足 ACID 约束的分布式事务接口,并且通过 Raft 协议保证了多副本数据一致性以及高可用。TiKV 作为 TiDB 的存储层,为用户写入 TiDB 的数据提供了持久化以及读写服务,同时还存储了 TiDB 的统计信息数据。与传统的整节点备份不同,TiKV 参考了 Spanner 设计了 multi-raft-group 的副本机制。

2024-04-13 10:21:40 900

原创 TiDB 数据库调度(PD)揭秘

TiDB PD (Placement Driver) 是 TiDB 分布式数据库系统中的核心组件之一,负责整个集群的元数据管理和调度工作。PD 在 TiDB 架构中扮演着至关重要的角色,确保了数据的正确分布、高可用性、以及资源的有效利用。

2024-04-12 11:04:59 1179

原创 深入浅出 TiDB MVCC:揭秘分布式数据库中的多版本并发控制

TiDB 是开源的分布式数据库,是一款同时支持在线事务处理与在线分析处理的融合型分布式数据库产品,具备水平扩容或缩容、金融级高可用、实时 HTAP、云原生分布式数据库、兼容MySQL5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP、OLAP、HTAP 解决方案。很多数据库都会实现多版本并发控制(MVCC),TiKV也不例外。设想这样的场景,两个客户端同时去修改一个 Key 的 Value,如果没有多版本控制,就需要对数据上锁,在分布式场景下,可能会带来性能及死锁问题。

2024-04-11 14:07:13 767

原创 实战揭秘:深入解析SSE结合EventBus实现消息定向推送

EventBus 是一个广泛应用于开发中的轻量级事件发布/订阅框架,它的核心设计理念是简化应用程序内部各组件间的通信。通过采用发布/订阅(Publish/Subscribe)设计模式,EventBus能够有效地降低组件之间的耦合度,提高代码可读性和维护性。

2024-04-10 09:00:00 836

原创 Redis字符创类型内存消耗的奥秘

String 类型是二进制安全的,意思是 Redis 的String 类型可以包含任何数据,比如 jpg 图片或者序列化对象。还有一点是以前文章提到的,就是 Redis 在内存分配时并不是正好分配所需要的内存,而是分配的内存略大,比如申请 24 字节的内存,实际上会分配 32 字节的内存,这也是造成了内存消耗的一个原因。到这里你会发现,如果保存的字符串数据本身很小的话,那消耗在 SDS 元数据上的内存消耗就会很大,如果保存了大量这样的字符串数据,那内存消耗可想而知,保存了很多与数据无关的内容。

2024-04-09 09:00:00 899

原创 揭开Spring Bean生命周期的神秘面纱

Spring 是一个开源的企业级Java应用程序框架,它简化了企业级应用程序开发,同时促进了松耦合、面向切面编程(AOP)、声明式事务管理以及基于Java EE平台的最佳实践。Spring 已经成为现代 Java 企业级应用开发的事实标准框架之一。今天就来了解下 Spring Bean的生命周期。

2024-04-08 09:00:00 611

原创 Redis分布式锁:保障微服务架构下的并发控制与数据一致性实战指南

分布式锁是一种在分布式系统中实现锁机制的技术,用于控制多节点对共享资源的访问,确保在并发环境下能够正确地实现互斥访问。在传统的单机环境下,我们可以使用线程锁来解决并发控制问题,但在分布式环境下,由于多个节点间物理分离,无法直接使用线程锁,因此需要设计一套能够在分布式系统中工作的锁服务。分布式锁需要一个单独的分布式系统来实现,可以实现分布式锁的主要方式有:Redis、Zookeeper、基于数据库实现等。本文主要介绍基于 Redis 实现的分布式锁。互斥性:确保同一时刻只有一个客户端持有锁。

2024-04-04 09:15:00 763

原创 探析Drools规则引擎的工作原理

通过上图调用栈课发现,Drools 同时支持多种规则人间类型,经过规则编译后规则就进入到了生产内存中,二所谓的生产内存其实就是 KieBase,它包含了从 .drl 规则文件中加载并编译好的规则。在 Drools 中,Rete 算法以及其变种(如ReteOO)被用来优化规则引擎的性能,它构建了一个高效的推理网络,该网络能够记住之前的匹配结果,从而在新的事实插入、更新或删除时,迅速识别出受到影响的规则,以及哪些规则条件已经满足,应当被触发执行。:工作内存是规则引擎暂存事实的地方,也是规则引擎的执行场所。

2024-04-03 09:00:00 875

原创 深入浅出 Drools 规则引擎

规则引擎是一种软件系统组件,设计目的是将业务决策逻辑从应用程序的主流程中解耦出来,使得业务规则可以独立于应用程序代码进行管理和变更。这种机制极大地提高了业务灵活性和可维护性,尤其是在那些业务规则频繁变动或者十分复杂的环境中。本文将介绍 Drools 的基本概念和简单引用,让你能快速上手使用 Drools 规则引擎。

2024-04-02 09:00:00 1050

原创 系统优化都没做过?看这篇就够了

遇到系统优化有的人一上来就是 JVM 优化,相反 JVM 差不多快是系统优化的最后手段了,影响系统性能的因素有很多,如下图:想做系统优化一个很重要的问题是首先要发现系统的瓶颈,那就需要完善的监控系统了。监控工具有很多开源的或者商用的监控,相信每个公司都会进行监控系统的接入,就不过多介绍,只要你能通过监控工具发现问题就行,下面来说一下如何进行系统优化。

2024-03-31 09:15:00 727 1

原创 MySQL文件系统解密:binlog、redolog与undolog如何守护数据安全与一致性

MySQL 的表结构定义文件主要用于存储数据库中表的逻辑结构信息,而不涉及具体的数据内容。在 MySQL 早期版本中,所有的表(无论其使用的存储引擎是什么)都会有一个对应的.frm文件,这个文件包含了创建表时定义的所有列信息、索引信息、表选项以及其他元数据。

2024-03-30 09:16:09 1097 1

原创 深度剖析MySQL锁:解开数据库并发控制的神秘面纱

MySQL 锁是 MySQL 数据库管理系统中为了实现并发控制和数据一致性的机制。在多用户并发访问数据库时,锁可以确保多个事务在对同一数据进行操作时不会相互干扰,以防止数据不一致的现象发生。

2024-03-29 09:00:00 759

原创 MySQL为什么会选错索引

在平时不知道一有没有遇到过这种情况,我明明创建了索引,但是MySQL为何不用索引呢?为何要进行全索引扫描呢?

2024-03-28 09:00:00 865

原创 MySQL索引优化实战宝典

MySQL索引是MySQL数据库用于快速查找和访问数据的一种数据结构,它就像书的目录一样,可以帮助数据库系统更快地定位到所需数据的位置,从而大大提高查询性能。下面来看一下索引分类。

2024-03-27 09:00:00 1291

原创 35岁不是程序员终点站:转型、坚守还是涅槃

程序员35岁危机

2024-03-26 11:04:55 921 1

原创 深入JVM内核揭示Java多态背后的神秘机制

在Java虚拟机(JVM)层面来看多态的本质,主要聚焦于方法调用的动态绑定机制。Java 中的多态性允许子类对象替代父类对象使用,且调用方法时能够调用到子类中重写的方法,这就是所谓的“运行时多态”。

2024-03-26 09:00:00 618

原创 RabbitMQ 存储机制与流控

RabbitMQ 保证可靠性的一条是消息的持久化,那消息时如何持久化的呢?

2024-03-25 09:00:00 747

原创 RabbitMQ 的高阶应用及可靠性保证

上篇文章介绍了 RabbitMQ 的基本概念和使用,这篇文章就来介绍下其高阶应用和可靠性保证。

2024-03-24 21:45:26 1119

原创 探秘 RabbitMQ 的设计理念与核心技术要点

消息队列中间件(message queue middleWare, MQ)指利用高效可靠消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程通信。一般有两种传递模式:点对点模式和发布订阅模式。点对点的模式是基于队列的,消息生产者发送消息到队列,消费者从队列中接收消息,队列的存在使得消息的异步传输成为可能。

2024-03-24 11:16:29 1087

原创 走进 Mybatis 内核世界:理解原理,释放更多生产力

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。由于没有屏蔽 sql,这对于追求高响应和性能的互联网系统十分重要,我们可以尽可能的通过sql去优化性能。

2024-03-23 13:22:10 1168

原创 一文掌握Java动态代理的奥秘与应用场景

ASM (Abstract Syntax Tree, bytecode manipulation and analysis framework) 是一个用于Java 字节码操作和分析的开源框架。ASM 允许开发者在运行时直接操作 Java 类的字节码,提供了低层次的 API,使得开发者可以精细地控制字节码的生成和修改,实现如字节码增强、类和方法的动态修改、AOP(面向切面编程)等功能。ASM 在JDK 中,具体位置如图通过 ASM 我们可以获取指定类的字节码try {

2024-03-22 14:51:15 940

原创 即时编译器在JVM调优战场的决胜策略

JVM中的即时编译器(如HotSpot的C1、C2编译器)会对代码进行即时编译优化,即时编译优化(Just-In-Time Compilation Optimization)是Java虚拟机(JVM)为了提升运行时性能而采取的一种策略。即时编译优化主要包括以下几个方面,下面来详细介绍一下。

2024-03-21 14:23:39 889

原创 JVM垃圾收集器你会选择吗?

JVM 垃圾收集器是Java虚拟机(JVM)中至关重要的组件,负责自动管理程序运行时产生的内存分配与回收。垃圾收集器通过检测并回收堆内存中不再使用的对象,从而保证了 Java 应用程序在持续运行过程中拥有足够的内存空间。如果说收集算法是内存回收的方法论,那垃圾收集器就是内存回收的实践者。各款经典的收集器之间的关系如下图,如果两个收集器之间存在连线,就说明他们可以搭配使用,收集器所处的区域,则表示它是属于新生代还是老年代。

2024-03-20 13:39:50 1315

原创 JVM 垃圾回收机制:探秘对象生死判定与高效回收算法

JVM 程序计数器、虚拟机栈、本地方法栈随着线程而生,随着线程而灭。栈中的栈帧随着方法的进入和退出而有条不紊的执行着出栈和入栈操作,因此这几个区域的内存回收都具备确定性。而 Java 堆和方法区则有着显著的不确定性:一个接口的多个实现类需要的内存可能不一样,一个方法锁执行的不同条件分支所需的内存也可能不一样。

2024-03-20 09:00:00 1028

原创 JVM内存模型深度解读

JVM(Java Virtual Machine,Java虚拟机)对于Java开发者和运行 Java 应用程序而言至关重要。其重要性主要体现在跨平台性、内存管理和垃圾回收、性能优化、安全性和稳定性、故障排查与性能调优等方面。今天就下学习一下 JVM 的内存模型。

2024-03-19 09:00:00 1023

原创 ZooKeeper是如何保证数据一致性的?

总之,ZAB 协议是 ZooKeeper 实现其作为分布式协调服务核心功能的关键所在,确保了在复杂网络环境和机器故障情况下,仍能提供强大而一致的数据服务,支撑起众多分布式系统的协同工作。往期经典推荐探索分布式强一致性奥秘:Paxos共识算法的精妙之旅-CSDN博客Raft共识算法领导者选举流程揭秘-CSDN博客Redis使用规范的最佳实践:打造高性能与稳定性的关键法则-CSDN博客SpringBoot项目并发处理大揭秘,你知道它到底能应对多少请求洪峰?_springboot并发处理-CSDN博客。

2024-03-18 09:00:00 1101

原创 Redis使用规范的最佳实践:打造高性能与稳定性的关键法则

在工作中 Redis 的使用非常广泛,它是提升性能的利器,那怎么样才能发挥出 Redis 的最大优势呢?那就是良好的使用规范,遵循 Redis 使用规范不仅能提升系统性能、节省资源、保障数据安全,还能极大地改善系统的可维护性、可靠性和长期可持续发展能力。今天就来介绍一下 Redis 的使用规范问题。

2024-03-17 10:20:08 1214

原创 实时数据传输的新里程——Server-Sent Events(SSE)消息推送技术

传统的请求模型是客户端发送一个请求到服务端,然后服务端做相应的处理,然后再将结果返回给客户端,这种“一问一答”的方式随着时间的推移并不能适应所有的场景。比如在社交媒体更新、新闻直播、股票市场、物联网智能设备等等方面,如下图。如果数据发生了更新,更新的数据能实时高效的推送给客户端就显的尤为重要。传统的方式是客户端需要去主动获取数据的变化,但是这种事不实时的,效率低,而且浪费资源。为了解决这一问题,Server-Sent Event(SSE)作为一种基于 HTTP 长连接的单向通信技术应用而生。

2024-03-16 09:45:00 1553

空空如也

空空如也

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

TA关注的人

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