自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从理论到实践:零拷贝技术的全面解读

零拷贝技术的出现和发展,是为了适应高速网络和大规模数据处理的需要,解决传统数据传输机制的效率低下问题,优化系统资源利用,提高数据传输和处理的速度与性能。随着技术的进步,零拷贝技术在现代操作系统和高性能网络编程框架中得到了广泛应用,成为提高系统效率和响应速度的关键技术之一。深入理解I/O模型-CSDN博客Sentinel与Nacos强强联合,构建微服务稳定性基石的重要实践_nacos sentinel-CSDN博客。

2024-07-22 09:00:00 901

原创 深入理解I/O模型

所谓的 I/O 就是计算机内存与外部设备之间拷贝数据数据的过程。有 5 中 I/O 模型,分别是同步阻塞 I/O、同步非阻塞 I/O、多路复用I/O、信号驱动 I/O 和异步 I/O。为什么需要这么多的 I/O 模型呢?CPU 访问内存的速度远远高于外部设备,因此 CPU 是先把外部设备的数据读取到内存里,然后进行处理。当你的程序向外部设备发起一个读指令时,数据从外部设备拷贝到内存里需要一段时间才能完成,这个时候 CPU 做什么工作呢?是让 CPU 处理其他工作,还是让 CPU 不停地去查数据?

2024-07-16 09:00:00 675

原创 深入浅出 Spring @Async 异步编程的艺术

Async是 Spring 框架中的一个注解,用于支持异步方法的执行。在 Spring 中,当你在一个类的方法上使用@Async注解时,Spring 会确保该方法在不同的线程中执行,而不是调用者所在的线程。这意味着方法的执行可以并行进行,从而提高了应用程序的性能,尤其是在处理耗时的任务时。下面是 @Async 注解的源码,很简单,只有一个 value 属性,从源码上可以看出,这个注解可以应用在方法上,也可以应用在类上。/***/

2024-07-11 09:00:00 1024

原创 高性能的秘密:揭秘Nginx如何支撑亿级流量网站

Nginx 作为一款高性能的 Web 服务器和反向代理服务器,广泛应用于现代互联网,特别是对于实现微服务架构下的负载均衡和 API 网关功能至关重要。在互联网基础设施中扮演着重要角色,特别在高并发、高性能的网站和应用程序部署中。高性能:占用内存少,处理能力强,能够支持高并发连接。稳定性:长期运行稳定性高。低资源消耗:相比其他服务器软件,Nginx 对系统资源的使用非常高效。跨平台:可在多种操作系统上运行易于部署和维护:安装简单,配置文件结构清晰,文档丰富,社区活跃,持续更新和维护。

2024-06-29 21:41:04 1004

原创 揭秘SpringBoot自动装配原理

再来看下 @Import(AutoConfigurationImportSelector.class) 注解,AutoConfigurationImportSelector 是 Spring Boot 框架中的一个核心类,它负责自动配置类的导入选择过程,是实现 Spring Boot 自动配置机制的关键组件。SpringBoot 自动装配是 SpringBoot 框架中一项核心特性,它极大地简化了 Spring 应用的开发过程,使得开发者能够快速搭建和运行一个独立的、生产级别的应用程序,几乎无需手动配置。

2024-06-23 15:32:07 968

原创 从0开始理解DevOps

随着技术的不断进步,出现了云计算、容器技术(Docker)、配置管理工具、持续集成和持续部署(CI/CD)工具、代码管理构建工具等技术,为自动化软件交付提供了技术支持,使得快速、频繁、可靠的部署成为可能。

2024-06-16 09:30:00 703

原创 分布式系统设计指南

分布式系统是由单体应用发展而来的,单体应用是将所有的业务功能维护在一个巨无霸的服务中,业务初期可能还能接受,但随着业务发展,单体应用中要维护的代码越来越多,这就导致了代码膨胀、维护成本高、不能快速迭代回滚、沟通成本高、业务耦合互相影响、部署繁琐等问题的出现。为了解决这些问题开始寻求将单体应用进行拆分,按业务模块将单体应用拆分成更小、更容易管理的若干个小服务。从单体应用发展为分布式系统是对技术、组织结构、开发流程等多方面的全面改革。那什么是分布式系统呢?

2024-06-12 09:00:00 908

原创 深入解析MongoDB中的锁机制

MongoDB 作为一种非关系型文档数据库,在现代应用中扮演着极其重要的角色,尤其在处理大规模、高并发、灵活数据模型的场景下。MongoDB 拥有丰富的数据模型,而且文档没有固定的模式,这为扩展性提供了便利高可扩展性:MongoDB 设计之初就考虑到了扩展性,支持分片(sharding),可以轻松跨越多台服务器分配数据和处理请求,从而实现水平扩展。这对于处理海量数据等场景只管重要。高性能:MongoDB 支持各种索引,能够加锁数据的查询;

2024-06-08 09:15:00 841

原创 云原生下的数据协调艺术:etcd存储系统解析

随着云原生与容器化技术的兴起,分布式系统的复杂性大大增加。分布式系统面临一系列问题,比如部署复杂、响应时间慢、运维复杂等,其中最根本的问题是多个节点之间的数据共享问题。这就需要一个可靠的共享的存储系统来同步信息,这时就出现了分布式存储系统,这也是其产生的背景。etcd 就是一个分布式存储的中间件,使用 Go 语言编写,并通过Raft协议确保分布式数据一致性,解决了分布式数据一致性问题。

2024-06-05 09:00:00 679

原创 Sentinel与Nacos强强联合,构建微服务稳定性基石的重要实践

Sentinel 与 Nacos的整合不仅强化了微服务的流量控制能力,还实现了配置的集中化、动态化管理,是提升系统稳定性和运维效率的关键措施,对于构建高可用、易维护的微服务架构具有深远的意义。

2024-06-02 09:30:00 1158 3

原创 云原生:Kubernetes下的Java应用部署实战详解

随着云原生技术的蓬勃发展,Kubernetes 已成为容器编排领域的事实标准,为微服务架构提供了强大的支撑。对于 Java 开发者而言,掌握在 Kubernetes 上部署和管理 Java 应用的技能变得尤为重要。本文将手把手带你完成一次 Java 应用从零到部署上 Kubernetes 的全过程,涵盖关键步骤、最佳实践及实用技巧。

2024-05-27 09:00:00 657

原创 云原生基石:解码Docker镜像分层

Docker 镜像可以通过 Dockerfile 来定义和自动构建,Dockerfile 是一个文本文件,其中包含了一些列命令,用户从基础镜像开始,一步步安装软件、设置环境变量、复制文件等操作,最终生成一个新的镜像,这时就可以把镜像提交给 QA 镜像部署测试了。# 指定基础镜像# 配置环境变量,JDK 的安装目录# 拷贝 JDK 和 java 项目包# 安装 JDK# 配置环境变量# 启动命令这里基于 ubuntu 基础镜像,利用 Dockerfile 描述镜像结构。指令说明示例。

2024-05-23 09:00:00 864 2

原创 构筑云原生的基石:Docker容器化技术入门

云原生(Cloud Native)是一种构建和运行应用程序的方法论,旨在充分利用云平台的优势,如弹性伸缩、持续交付、容错性、微服务架构等。Docker 作为云原生技术栈的关键组件,其引入和普及极大地推动了云原生应用的发展。

2024-05-20 09:00:00 739

原创 从0开始理解云原生架构

云原生技术栈的采用,使组织能够在公有云、私有云和混合云等环境中快速构建、部署和运行应用,适应快速变化的市场需求,同时也促进了开发和运维团队的紧密协作,推动了业务的持续创新和快速增长。Kubernetes: 从零开始理解K8s架构-CSDN博客Kafka VS RabbitMQ,架构师教你如何选择_消息中间件选型分析-CSDN博客高并发架构设计模板-CSDN博客TiDB高手进阶:揭秘自增ID热点现象与高级调优技巧-CSDN博客Redis性能大挑战:深入剖析缓存抖动现象及有效应对的战术指南-CSDN博客。

2024-05-15 15:25:41 642

原创 Kubernetes: 从零开始理解K8s架构

Kubernetes 是一个开源的容器编排系统,用于自动化应用容器的部署、扩展和管理。它是Google基于Borg系统(Google的内部运行系统)的经验并贡献给 Cloud Native Computing Foundation(CNCF)的项目。Kubernetes 中间有8个字母,所以也被称为 K8s。K8s 有如下的特性服务发现和负载均衡:K8s 可以使用 DNS 名称或自己的 IP 地址暴露容器,如果到一个容器的流量过大,K8s 能够负载均衡并分配网络流量,以保证服务稳定。

2024-05-11 09:00:00 657

原创 分布式事务

分布式事务是指在分布式系统中,涉及多个节点(如数据库、服务)的一个操作序列,这些操作作为一个整体需要满足事务的ACID特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。在分布式系统中实现事务的管理比单一系统更为复杂,主要因为网络通信的不可靠性、节点间的异步操作及潜在的硬件故障等因素。事务分类:本地事务、传统分布式事务、Seata 分布式事务。

2024-05-07 09:00:00 929

原创 Kafka VS RabbitMQ,架构师教你如何选择

消息队列在现代软件架构中已经成为不可或缺的中间件,如果你曾经搭建过系统服务需要用到消息中间件,一定会思考到底怎么选择呢?消息队列的主要功能如下:解耦、异步、扩展性、流量削峰、顺序保障、缓存等。处于某种原因,在大多数场景中 Kafka 和 RabbitMQ 是可以互换的,很多程序员可能都这么认为,这篇文章就带你从不同的维度让二者进行一下 PK,看看到底怎么选择。

2024-05-03 09:15:00 1105 4

原创 高并发架构设计模板

高并发(High Concurrency)是指特定时间段内系统能够同时处理大量请求或链接的能力,并且能够迅速给出响应。比如秒杀场景、人气超高的网红或明星进行直播时,直播间一下涌入大量的观众。高并发系统的涉及目标是确保用户访问量激增的情况下,系统仍能保持稳定运行,避免服务延迟或中断。响应时间:系统对单一请求做出反应的所需的时间。吞吐量:系统在单位时间内能够处理的请求数。没秒查询书:指QPS,衡量系统每秒种处理查询请求的数量。并发用户数:系统能够同时支撑正常使用系统功能的用户数量。

2024-05-02 09:15:00 848 2

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

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

2024-04-29 11:18:24 1186

原创 大数据的前世今生

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

2024-04-28 09:00:00 886

原创 Maven核心概念全解析

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

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

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

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

2024-04-24 09:00:00 1027

原创 Elasticsearch的可靠性保障

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

2024-04-23 09:15:00 797

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

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

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

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

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

2024-04-19 12:37:03 847

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

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

2024-04-18 09:00:00 855

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

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

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

原创 MongoDB 索引全攻略

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

2024-04-16 09:00:00 1814

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

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

2024-04-15 09:00:00 1537

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

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

2024-04-14 11:06:47 1497

原创 TiDB存储引擎TiKV揭秘

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

2024-04-13 10:21:40 1593

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

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

2024-04-12 11:04:59 1518

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

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

2024-04-11 14:07:13 885

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

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

2024-04-10 09:00:00 1194

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

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

2024-04-09 09:00:00 920

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

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

2024-04-08 09:00:00 664

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

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

2024-04-04 09:15:00 977

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

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

2024-04-03 09:00:00 1273

原创 深入浅出 Drools 规则引擎

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

2024-04-02 09:00:00 3088

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

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

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

空空如也

空空如也

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

TA关注的人

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