- 博客(108)
- 收藏
- 关注
原创 Spring Plugin与策略模式:打造动态可扩展的应用
策略模式的核心思想是将行为封装在一个个独立的类中,这些类实现了相同的接口或抽象类,客户端可以通过接口来调用不同的实现,而不知道具体的实现细节。PluginRegistryFactoryBean 是一个 FactoryBean,所以注入 PluginRegistry 类型的时候实际是调用 PluginRegistryFactoryBean 的 getObject 返回的内容。现在的移动支付非常的便捷,而且有很多支付方式,假如让你负责支付路由的设计该如何设计,如何实现支付渠道的选择的呢?
2024-11-11 09:00:00
1124
1
原创 从新手到高手:Spring AOP的进阶指南
AOP(Aspect-Oriented Programming) 面向切面编程,是一种编程范式,通过预编译和运行期间动态代理实现程序功能统一维护的一种技术。下面通过一个简单的案例来了解下AOP如何使用。Spring AOP 提供了一种优雅的方式来处理横切关注点,如日志记录、性能监控、安全性检查、事务管理和数据校验等。通过使用AOP,可以将这些关注点从业务逻辑中分离出来,提高代码的可维护性和可读性。在实际项目中,根据具体需求选择合适的AOP实现方式,可以显著提高开发效率和系统的可靠性。往期经典推荐。
2024-10-14 09:15:00
922
原创 从手动到智能: 动态线程池讲解
在平时的开发中,系统的性能和吞吐量是衡量系统的重要指标,那提高系统性能和吞吐量的方式你知道有哪些吗?减少网络通信:比如能批量通过接口查询的尽量避免多次循环查询减少 IO 操作:比如操作数据库时能批量操作的选择批量操作,减少与数据库的操作使用缓存:将数据缓存起来,减少网络请求等操作数据库建立合适的索引的减少锁的所用使用分布式设计异步编程使用多线程以上列举了一部分,还有其他一些优化技术就不一一列举了,本文的主角是动态线程池,下面详细介绍一下多线程编程。
2024-09-09 09:00:00
1184
原创 Spring Events 详解:解锁事件驱动架构
Spring Events 是 Spring 框架的一部分,它提供了一种机制来处理事件驱动的架构。这种机制允许开发者在应用程序的不同组件之间传递事件,从而使得这些组件可以松耦合地相互协作。随着异步编程模式的流行,Spring Events 将会提供更多内置支持,使得异步事件变得更加简单高效。
2024-08-12 09:00:00
1768
原创 Redis中的潜在阻塞点及其解决方案
Redis 作为高性能的键值对存储系统,在实际项目中得到了广泛的应用。但是在使用中我们必须重视有可能影响 Redis 性能的各种因素,本篇文章就带你了解可能会引起 Redis 阻塞的各种因素及解决方案。
2024-08-07 09:00:00
977
原创 Logback 日志打印导致程序崩溃的实战分析
日志记录是必不可少的一环,帮我们追踪程序的行为,定位问题所在。然而,有时日志本身却可能成为问题的根源。所以要根据实际情况选择合适的日志输出方式,避免造成程序阻塞而导致业务收到影响。从理论到实践:零拷贝技术的全面解读_零拷贝详解-优快云博客Sentinel与Nacos强强联合,构建微服务稳定性基石的重要实践_nacos sentinel-优快云博客从0开始理解云原生架构-优快云博客TiDB高手进阶:揭秘自增ID热点现象与高级调优技巧_tidb 分布式自增id-优快云博客。
2024-07-30 09:00:00
1415
原创 从理论到实践:零拷贝技术的全面解读
零拷贝技术的出现和发展,是为了适应高速网络和大规模数据处理的需要,解决传统数据传输机制的效率低下问题,优化系统资源利用,提高数据传输和处理的速度与性能。随着技术的进步,零拷贝技术在现代操作系统和高性能网络编程框架中得到了广泛应用,成为提高系统效率和响应速度的关键技术之一。深入理解I/O模型-优快云博客Sentinel与Nacos强强联合,构建微服务稳定性基石的重要实践_nacos sentinel-优快云博客。
2024-07-22 09:00:00
1591
原创 深入理解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
969
原创 深入浅出 Spring @Async 异步编程的艺术
Async是 Spring 框架中的一个注解,用于支持异步方法的执行。在 Spring 中,当你在一个类的方法上使用@Async注解时,Spring 会确保该方法在不同的线程中执行,而不是调用者所在的线程。这意味着方法的执行可以并行进行,从而提高了应用程序的性能,尤其是在处理耗时的任务时。下面是 @Async 注解的源码,很简单,只有一个 value 属性,从源码上可以看出,这个注解可以应用在方法上,也可以应用在类上。/***/
2024-07-11 09:00:00
1127
原创 高性能的秘密:揭秘Nginx如何支撑亿级流量网站
Nginx 作为一款高性能的 Web 服务器和反向代理服务器,广泛应用于现代互联网,特别是对于实现微服务架构下的负载均衡和 API 网关功能至关重要。在互联网基础设施中扮演着重要角色,特别在高并发、高性能的网站和应用程序部署中。高性能:占用内存少,处理能力强,能够支持高并发连接。稳定性:长期运行稳定性高。低资源消耗:相比其他服务器软件,Nginx 对系统资源的使用非常高效。跨平台:可在多种操作系统上运行易于部署和维护:安装简单,配置文件结构清晰,文档丰富,社区活跃,持续更新和维护。
2024-06-29 21:41:04
1148
原创 揭秘SpringBoot自动装配原理
再来看下 @Import(AutoConfigurationImportSelector.class) 注解,AutoConfigurationImportSelector 是 Spring Boot 框架中的一个核心类,它负责自动配置类的导入选择过程,是实现 Spring Boot 自动配置机制的关键组件。SpringBoot 自动装配是 SpringBoot 框架中一项核心特性,它极大地简化了 Spring 应用的开发过程,使得开发者能够快速搭建和运行一个独立的、生产级别的应用程序,几乎无需手动配置。
2024-06-23 15:32:07
1222
原创 从0开始理解DevOps
随着技术的不断进步,出现了云计算、容器技术(Docker)、配置管理工具、持续集成和持续部署(CI/CD)工具、代码管理构建工具等技术,为自动化软件交付提供了技术支持,使得快速、频繁、可靠的部署成为可能。
2024-06-16 09:30:00
796
原创 分布式系统设计指南
分布式系统是由单体应用发展而来的,单体应用是将所有的业务功能维护在一个巨无霸的服务中,业务初期可能还能接受,但随着业务发展,单体应用中要维护的代码越来越多,这就导致了代码膨胀、维护成本高、不能快速迭代回滚、沟通成本高、业务耦合互相影响、部署繁琐等问题的出现。为了解决这些问题开始寻求将单体应用进行拆分,按业务模块将单体应用拆分成更小、更容易管理的若干个小服务。从单体应用发展为分布式系统是对技术、组织结构、开发流程等多方面的全面改革。那什么是分布式系统呢?
2024-06-12 09:00:00
1191
原创 深入解析MongoDB中的锁机制
MongoDB 作为一种非关系型文档数据库,在现代应用中扮演着极其重要的角色,尤其在处理大规模、高并发、灵活数据模型的场景下。MongoDB 拥有丰富的数据模型,而且文档没有固定的模式,这为扩展性提供了便利高可扩展性:MongoDB 设计之初就考虑到了扩展性,支持分片(sharding),可以轻松跨越多台服务器分配数据和处理请求,从而实现水平扩展。这对于处理海量数据等场景只管重要。高性能:MongoDB 支持各种索引,能够加锁数据的查询;
2024-06-08 09:15:00
1511
原创 云原生下的数据协调艺术:etcd存储系统解析
随着云原生与容器化技术的兴起,分布式系统的复杂性大大增加。分布式系统面临一系列问题,比如部署复杂、响应时间慢、运维复杂等,其中最根本的问题是多个节点之间的数据共享问题。这就需要一个可靠的共享的存储系统来同步信息,这时就出现了分布式存储系统,这也是其产生的背景。etcd 就是一个分布式存储的中间件,使用 Go 语言编写,并通过Raft协议确保分布式数据一致性,解决了分布式数据一致性问题。
2024-06-05 09:00:00
772
原创 Sentinel与Nacos强强联合,构建微服务稳定性基石的重要实践
Sentinel 与 Nacos的整合不仅强化了微服务的流量控制能力,还实现了配置的集中化、动态化管理,是提升系统稳定性和运维效率的关键措施,对于构建高可用、易维护的微服务架构具有深远的意义。
2024-06-02 09:30:00
1460
3
原创 云原生:Kubernetes下的Java应用部署实战详解
随着云原生技术的蓬勃发展,Kubernetes 已成为容器编排领域的事实标准,为微服务架构提供了强大的支撑。对于 Java 开发者而言,掌握在 Kubernetes 上部署和管理 Java 应用的技能变得尤为重要。本文将手把手带你完成一次 Java 应用从零到部署上 Kubernetes 的全过程,涵盖关键步骤、最佳实践及实用技巧。
2024-05-27 09:00:00
1349
原创 云原生基石:解码Docker镜像分层
Docker 镜像可以通过 Dockerfile 来定义和自动构建,Dockerfile 是一个文本文件,其中包含了一些列命令,用户从基础镜像开始,一步步安装软件、设置环境变量、复制文件等操作,最终生成一个新的镜像,这时就可以把镜像提交给 QA 镜像部署测试了。# 指定基础镜像# 配置环境变量,JDK 的安装目录# 拷贝 JDK 和 java 项目包# 安装 JDK# 配置环境变量# 启动命令这里基于 ubuntu 基础镜像,利用 Dockerfile 描述镜像结构。指令说明示例。
2024-05-23 09:00:00
1094
2
原创 构筑云原生的基石:Docker容器化技术入门
云原生(Cloud Native)是一种构建和运行应用程序的方法论,旨在充分利用云平台的优势,如弹性伸缩、持续交付、容错性、微服务架构等。Docker 作为云原生技术栈的关键组件,其引入和普及极大地推动了云原生应用的发展。
2024-05-20 09:00:00
948
原创 从0开始理解云原生架构
云原生技术栈的采用,使组织能够在公有云、私有云和混合云等环境中快速构建、部署和运行应用,适应快速变化的市场需求,同时也促进了开发和运维团队的紧密协作,推动了业务的持续创新和快速增长。Kubernetes: 从零开始理解K8s架构-优快云博客Kafka VS RabbitMQ,架构师教你如何选择_消息中间件选型分析-优快云博客高并发架构设计模板-优快云博客TiDB高手进阶:揭秘自增ID热点现象与高级调优技巧-优快云博客Redis性能大挑战:深入剖析缓存抖动现象及有效应对的战术指南-优快云博客。
2024-05-15 15:25:41
794
原创 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
744
原创 Seata分布式事务详解
分布式事务是指在分布式系统中,涉及多个节点(如数据库、服务)的一个操作序列,这些操作作为一个整体需要满足事务的ACID特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。在分布式系统中实现事务的管理比单一系统更为复杂,主要因为网络通信的不可靠性、节点间的异步操作及潜在的硬件故障等因素。事务分类:本地事务、传统分布式事务、Seata 分布式事务。
2024-05-07 09:00:00
1028
原创 Kafka VS RabbitMQ,架构师教你如何选择
消息队列在现代软件架构中已经成为不可或缺的中间件,如果你曾经搭建过系统服务需要用到消息中间件,一定会思考到底怎么选择呢?消息队列的主要功能如下:解耦、异步、扩展性、流量削峰、顺序保障、缓存等。处于某种原因,在大多数场景中 Kafka 和 RabbitMQ 是可以互换的,很多程序员可能都这么认为,这篇文章就带你从不同的维度让二者进行一下 PK,看看到底怎么选择。
2024-05-03 09:15:00
1465
4
原创 高并发架构设计模板
高并发(High Concurrency)是指特定时间段内系统能够同时处理大量请求或链接的能力,并且能够迅速给出响应。比如秒杀场景、人气超高的网红或明星进行直播时,直播间一下涌入大量的观众。高并发系统的涉及目标是确保用户访问量激增的情况下,系统仍能保持稳定运行,避免服务延迟或中断。响应时间:系统对单一请求做出反应的所需的时间。吞吐量:系统在单位时间内能够处理的请求数。没秒查询书:指QPS,衡量系统每秒种处理查询请求的数量。并发用户数:系统能够同时支撑正常使用系统功能的用户数量。
2024-05-02 09:15:00
1022
2
原创 TiDB高手进阶:揭秘自增ID热点现象与高级调优技巧
TiDB 作为分布式数据库,设计目标是提供高并发、高可扩展性和容错能力。然而,当系统中出现热点问题时,会对整体性能和稳定性产生一系列负面影响,可能产生性能瓶颈、写入延迟、读取性能下降。
2024-04-29 11:18:24
1606
原创 大数据的前世今生
要了解一个事务,不能一开始就特别关注细节,首先应该去了解他的历史,他的来龙去脉,这样才能有全局观,才能更加深刻的了解一个事务。对于技术,也同样适用,今天就来了解下大数据的前世今生。
2024-04-28 09:00:00
945
原创 Maven核心概念全解析
Maven 是一个广泛应用于 Java 项目构建和管理的自动化工具。它由 Apache Software Foundation 开发和维护,旨在简化和标准化软件项目的构建、依赖管理、报告和部署过程。
2024-04-26 09:00:00
991
1
原创 揭秘MyBatis插件:深入理解与实战运用
开源框架都注重自身的扩展性,为用户提供了扩展机制,这样具有很高的灵活性,同时也能根据自身的业务定制实现一些额外的功能。MyBatis 作为优秀的 ORM 框架,自然也考虑到了扩展性,这样使其拥有强大的灵活性。Mybatis 中虽然提供的叫插件,但是实际上是通过拦截器实现的,通过拦截某些方法的调用,植入拦截器的逻辑,实现插件功能。Executor:SQL 执行器,Mybatis 中对数据库的所有增删改查都是通过 Executor 实现的。
2024-04-24 09:00:00
1132
原创 Elasticsearch的可靠性保障
综上所述,Elasticsearch的可靠性设计涵盖了分布式架构、数据冗余、健康监测、数据一致性、数据持久化、高效同步等多个维度,通过一系列精心设计的机制和功能,确保在大规模、复杂环境下提供稳定、可靠的数据服务。实际应用中,还需结合业务特性和运维需求,进行合理的配置与监控,进一步强化系统的可靠性。
2024-04-23 09:15:00
955
原创 如何熟悉一个陌生的业务系统
要想熟悉一个陌生的系统首先要从业务入手,切不可操之过急一上来就深入到代码层面去看代码实现,通过业务北京、使用用户、业务流程等就能知道这个系统的价值所在。业务了解后在技术层面在了解系统架构、存储层设计、系统交互、运维部署等等。这里我想提醒你一下,不要过分纠结于技术的实现,要活学活用,不要嫌弃你的前辈怎么这样那样,获取是特定环境的限制。还有最最关键的一点,不要忽略人的重要性,如果这个系统还有其他同事经手过,要大胆的向其请教,甚至用一些“非正常手段”在也是可以的。
2024-04-22 09:00:00
864
1
原创 深度剖析Gateway在微服务治理中的关键角色
如果内置谓词不满足要求,想要实现自定义谓词,可以通过 Gateway 的可扩展谓词工厂来实现自定义谓词,Gateway 组件提供了一个统一的抽象类 AbstractRoutePredicateFactory 作为谓词工厂,你可以通过继承这个类来添加新的谓词逻辑。// 继承自通用扩展抽象类AbstractRoutePredicateFactory// 定义当前谓词所需要用到的参数@Validated@Override// 声明当前谓词参数的传入顺序。
2024-04-19 12:37:03
929
原创 手把手教你实现服务高可用性
服务高可用性(High Availability, HA)是指在正常工作条件下以及发生故障时,服务仍能持续稳定地提供预期功能的能力。为了实现服务的高可用性,通常需要采取一系列技术和策略,确保服务在面对硬件故障、网络问题、软件错误等各种异常情况时,依然能够对外提供服务或快速恢复正常。
2024-04-18 09:00:00
1224
原创 微服务拆分:打造高性能、高扩展的未来架构
单体应用将所有的功能都维护在一个巨无霸的服务中,然后打包成一个 war 包扔到 Tomcat中运行,对外提供服务。单体应用存在很多问题,比如开发中互相干扰、沟通成本高、无法快速迭代、无法单独回滚等。由于单体服务存在很多问题,计算机中的分治思想就产生了作用,将单体应用拆分成比较小的服务,分开维护。微服务拆分后每个服务可以单独部署、单独测试、单独发布回滚,并借助Docker和CI/CD(持续集成)完成快速上线。微服务拆分的合理性很大程度上决定了整个业务链路的可用性。
2024-04-17 10:29:51
1211
2
原创 MongoDB 索引全攻略
任何数据库都有索引这一核心功能,索引通常能够极大的提高查询效率,如果没有索引,MongoDB 在读取数据时必须扫描集合中的每个文件,并选取那些符合查询条件的记录。这种扫描查询集合的查询方式效率非常低,特别在处理大量数据时。索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。
2024-04-16 09:00:00
2938
原创 全面解读MongoDB高可用、高性能与高可扩展架构
MongoDB 作为一款广受欢迎的现代文档数据库,其高可用性(High Availability, HA)、高性能(High Performance)和高可扩展性(High Scalability)是其核心特性,使得它在各种大规模数据处理场景中表现出色。下面来分别介绍下"三高",高可用、高性能、高可扩展的原理。
2024-04-15 09:00:00
2186
原创 深入剖析MongoDB集群架构设计
MongoDB 有三种集群架构模式,分别为主从复制(Master-Slaver)、副本集(Replica Set)和分片(Sharding)模式。当讨论 MongoDB 的集群架构时,应强调副本集和分片这两种官方推荐和支持的模式。如果在历史背景下讨论,可以提及主从复制作为早期的一种复制方式,但需明确指出它在现代 MongoDB 中已不再适用。探索非关系型世界:MongoDB核心概念全解析-优快云博客TiDB存储引擎TiKV揭秘-优快云博客。
2024-04-14 11:06:47
2382
原创 TiDB存储引擎TiKV揭秘
TiKV 是一个分布式事务型的键值数据库,提供了满足 ACID 约束的分布式事务接口,并且通过 Raft 协议保证了多副本数据一致性以及高可用。TiKV 作为 TiDB 的存储层,为用户写入 TiDB 的数据提供了持久化以及读写服务,同时还存储了 TiDB 的统计信息数据。与传统的整节点备份不同,TiKV 参考了 Spanner 设计了 multi-raft-group 的副本机制。
2024-04-13 10:21:40
2522
原创 TiDB 数据库调度(PD)揭秘
TiDB PD (Placement Driver) 是 TiDB 分布式数据库系统中的核心组件之一,负责整个集群的元数据管理和调度工作。PD 在 TiDB 架构中扮演着至关重要的角色,确保了数据的正确分布、高可用性、以及资源的有效利用。
2024-04-12 11:04:59
2063
原创 深入浅出 TiDB MVCC:揭秘分布式数据库中的多版本并发控制
TiDB 是开源的分布式数据库,是一款同时支持在线事务处理与在线分析处理的融合型分布式数据库产品,具备水平扩容或缩容、金融级高可用、实时 HTAP、云原生分布式数据库、兼容MySQL5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP、OLAP、HTAP 解决方案。很多数据库都会实现多版本并发控制(MVCC),TiKV也不例外。设想这样的场景,两个客户端同时去修改一个 Key 的 Value,如果没有多版本控制,就需要对数据上锁,在分布式场景下,可能会带来性能及死锁问题。
2024-04-11 14:07:13
1208
原创 实战揭秘:深入解析SSE结合EventBus实现消息定向推送
EventBus 是一个广泛应用于开发中的轻量级事件发布/订阅框架,它的核心设计理念是简化应用程序内部各组件间的通信。通过采用发布/订阅(Publish/Subscribe)设计模式,EventBus能够有效地降低组件之间的耦合度,提高代码可读性和维护性。
2024-04-10 09:00:00
1952
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人