- 博客(77)
- 收藏
- 关注
原创 Kubernetes (k8s) 命令大全
本文整理了Kubernetes常用命令,涵盖集群管理、Pod、Deployment、Service等核心资源操作。基础命令包括查看集群信息、资源详情和删除资源;Pod相关命令涉及创建、查看、进入和删除Pod;Deployment命令包括创建、更新、回滚和扩缩容;Service命令涉及创建和管理服务;ConfigMap和Secret命令涵盖创建、查看和删除配置与密钥;最后介绍了Namespace的创建、查看和删除操作。这些命令为Kubernetes日常管理提供了实用参考。
2025-06-07 00:29:00
407
原创 Kubernetes + Jenkins + GitLab 自动部署 Java 应用完整方案
本方案实现从 GitLab 代码提交 → Jenkins 自动构建 → Kubernetes 部署 Java 应用的全流程自动化,适用于企业级 DevOps 流水线。进入 Jenkins Web 界面 →。在 Kubernetes 集群中创建。在 GitLab 仓库根目录创建。
2025-06-07 00:15:24
480
原创 Kubernetes etcd 详解 以及 etcd数据同步的核心原理
etcd 是 Kubernetes 的核心组件之一,作为分布式键值存储系统,它负责存储 Kubernetes 集群的所有配置数据和状态信息。etcd 是 Kubernetes 的“大脑”,所有集群状态(如节点、Pod、Service、ConfigMap、Secret 等)都存储在 etcd 中。实现分布式一致性,确保集群中所有节点的数据同步。
2025-06-07 00:14:24
328
原创 Kubernetes ConfigMap 与 Kubernetes Secret
Kubernetes ConfigMap与Secret摘要 ConfigMap用于存储非敏感配置数据,支持键值对或文件形式,实现配置与镜像解耦。可通过命令行或YAML创建,并挂载为环境变量或文件。特点包括1MB大小限制、命名空间隔离及需手动更新配置,适用于应用配置和环境变量。 Secret专为敏感数据设计(如密码、证书),默认加密存储。使用方式类似ConfigMap,但更安全。两者均支持环境变量和文件挂载,但Secret适用于密钥等机密信息。最佳实践是将非敏感数据存于ConfigMap,敏感数据用Secre
2025-06-07 00:13:29
485
原创 Kubernetes Ingress详解 (一) (二) (三) (四)
Kubernetes Ingress详解 Ingress是Kubernetes管理外部访问的核心API对象,主要功能包括HTTP/HTTPS路由、负载均衡、SSL/TLS终止等。它由Ingress资源(规则定义)和Ingress Controller(执行组件)两部分组成,支持多域名访问、路径路由等场景。典型配置包含host、path和backend服务定义,高级功能涵盖路径重写、自定义错误页等。部署时需先安装Ingress Controller(如Nginx),并通过Service将流量最终分发到Pod。
2025-06-07 00:12:18
487
原创 Kubernetes架构介绍、Node与Pod的区别
用户接口层 | <---> | 控制平面层 | <---> | 数据平面层 || (kubectl等) | | (Master节点) | | (Worker节点) || | |v v v| 命令行工具 | | API Server | | kubelet || Dashboard等 | | (集群网关) | | (节点代理) || | |v v v| Web UI | | Controller | | 容器运行时 || | | Manager | | (Docker等) |
2025-06-07 00:09:52
513
原创 Seata TCC模式详解(底层原理与实现 + Java代码示例)
Seata TCC模式详解:通过Try-Confirm-Cancel三阶段实现分布式事务。Try阶段预留资源并检查业务规则(如库存检查),Confirm阶段确认业务操作(订单支付),Cancel阶段执行补偿(恢复库存)。实现要点包括幂等性设计、业务状态管理和异常处理。Java示例展示了订单服务接口及实现,通过@GlobalTransactional注解开启全局事务。TCC模式适合复杂业务场景,需遵循Try轻量化、状态机管理和异常捕获等最佳实践。虽然实现复杂,但提供了事务控制的灵活性。
2025-06-07 00:07:41
461
原创 Seata XA模式详解(底层原理与实现 + Java代码示例)
Seata XA模式采用两阶段提交(2PC)协议实现分布式事务,通过事务管理器(TM)和资源管理器(RM)协调事务处理。相比TCC和Saga模式,XA提供强一致性但性能较低。本文详细解析了XA模式的底层原理,包括两阶段提交流程和与数据库XA协议的交互,并提供了完整的Java实现示例:1)项目依赖配置;2)数据库表设计;3)订单和库存服务实现;4)XA模式配置;5)全局事务控制器。代码示例展示了如何在Spring Boot项目中集成Seata XA模式,实现跨服务的分布式事务管理。
2025-06-07 00:07:17
529
原创 Seata Saga模式详解(底层原理与实现 + Java代码示例(Choreography(编排式))、Orchestration(编制式)))
Seata Saga模式是一种分布式事务解决方案,将长事务拆分为多个本地事务,每个都配有补偿操作。它分为编排式和编制式两种实现方式,包含执行、补偿和恢复三个阶段。核心在于补偿操作设计、事务状态管理和异常处理,适合跨服务业务流程但对性能要求不高的场景。Java示例展示了编排式Saga的实现,包含事件定义、服务接口和实现类,强调每个业务操作需提供幂等性补偿。该模式虽实现复杂,但为分布式事务提供了灵活性,是处理复杂业务逻辑的重要模式。
2025-06-07 00:06:49
577
原创 Seata AT模式详解(底层原理、底层流程图、Java代码示例等)
Seata AT模式是一种基于自动补偿机制的分布式事务解决方案,采用两层架构设计(TM/RM和TC)。其核心原理是通过SQL拦截自动记录undo_log,实现事务的自动回滚补偿。运行流程分为准备阶段(记录操作快照)和提交/回滚阶段(基于undo_log执行自动补偿)。AT模式具有零代码侵入、自动回滚、高性能等优势,适用于对一致性要求高的场景。使用时需注意数据库配置和异常处理,合理设计事务边界以优化性能。
2025-06-07 00:06:16
740
原创 Seata分布式事务方案详解
Seata是阿里巴巴开源的分布式事务解决方案,支持AT、TCC、Saga和XA四种模式。AT模式基于两阶段提交,自动化程度高;TCC模式通过Try-Confirm-Cancel三阶段处理复杂业务;Saga模式适合长事务场景;XA模式提供强一致性。Seata包含TC(协调器)、TM(管理器)和RM(资源管理器)三大核心组件,能有效解决微服务架构下的分布式事务问题。开发者可根据业务场景选择不同模式,其中AT模式因自动化程度高成为首选,而TCC和Saga则分别适用于复杂业务和长流程场景。
2025-06-07 00:05:45
384
原创 分布式事务-2PC、3PC、TCC全方面对比
摘要 本文对比了三种分布式事务解决方案:2PC(两阶段提交)、3PC(三阶段提交)和TCC(Try-Confirm-Cancel)。2PC通过准备和提交两阶段实现强一致性,但存在阻塞和单点故障问题;3PC增加预提交阶段以减少阻塞,但仍有数据不一致风险;TCC通过预留资源方式实现最终一致性,适合复杂业务但实现成本高。流程图和表格直观展示了三者的阶段划分、一致性级别和适用场景差异。Java代码示例分别实现了2PC和3PC的协调逻辑,体现不同方案的编程模式。总体而言,2PC简单但不可靠,3PC改进可用性,TCC灵
2025-06-06 10:38:36
371
原创 混合事务架构设计(Saga + TCC)(一)、(二)、(三)、(四)
本文提出了一套混合事务架构设计方案,结合Saga和TCC两种模式的优点,适用于复杂的分布式业务场景。方案采用业务分层原则:核心业务(如资金、库存)使用TCC保证强一致性,非核心业务(如订单、物流)采用Saga提高吞吐量。设计了统一的事务协调器来编排两种事务模式,并详细说明了各组件实现方案,包括TCC服务的三阶段操作和Saga的补偿机制。关键创新点在于事务边界划分、补偿机制协调和统一状态管理。该架构既保证了核心业务的可靠性,又提升了系统整体性能,适用于电商、供应链和金融等典型场景。
2025-06-06 00:24:37
522
原创 Saga模式与TCC模式的选择指南
Saga模式与TCC模式的选择应基于业务需求特性:Saga适用于最终一致性场景,实现简单且异步补偿不影响主流程性能,适合订单、库存等可短暂不一致的业务;TCC通过预留资源保证强一致性,适合资金交易等高风险操作,但实现复杂度高。两者补偿机制差异显著:Saga直接逆向回滚操作,TCC需处理预留资源释放。补偿失败时,Saga允许部分失败和业务降级,TCC则需严格人工干预。实际应用中可混合使用,核心业务用TCC保障,非核心流程用Saga提升效率。
2025-06-06 00:20:58
495
原创 高并发场景下MySQL死锁的预防措施选择
高并发场景下MySQL死锁预防的关键在于平衡业务正确性与系统性能。核心原则包括优先保证数据一致性、评估方案ROI和渐进优化。具体措施分四层面:事务设计(缩短时长、固定访问顺序)、SQL优化(精确查询、合理索引)、配置调整(隔离级别、锁等待参数)和架构优化(分库分表、读写分离)。实施路径建议从快速见效的事务顺序调整开始,中期优化SQL和事务粒度,长期考虑架构改造。必须避免过度优化和一刀切方案,持续监控死锁情况,针对不同业务模块采取组合策略。最终要在数据一致性和系统性能间找到动态平衡。
2025-06-06 00:16:39
565
原创 MySQL 死锁处理机制
MySQL采用自动死锁检测机制,默认每5秒扫描一次事务等待图,发现循环等待会立即回滚代价最小的事务(返回1213错误)。建议开发者捕获死锁异常并重试,同时优化事务设计:缩短时长、固定访问顺序、减少事务粒度。可通过SHOW ENGINE INNODB STATUS查看死锁详情,关键是要实现幂等操作和重试逻辑,并避免在高并发场景下忽略死锁问题。合理配置隔离级别和监控死锁日志有助于预防死锁发生。
2025-06-06 00:16:02
292
原创 InnoDB B+树索引处理并发写入冲突的机制
InnoDB通过多机制协同处理B+树索引并发写入冲突:行级锁、间隙锁和临键锁确保数据一致性;MVCC机制通过多版本控制和ReadView减少读写阻塞;自动死锁检测与处理保证系统可用性;锁升级/降级策略平衡并发与开销;优化措施(乐观锁、批量操作)提升性能。不同事务隔离级别提供灵活的并发控制选择,开发者需根据业务特点合理配置,在数据一致性和并发性能间取得平衡。
2025-06-06 00:15:19
212
原创 InnoDB B+树索引在数据更新时的平衡维护机制
InnoDB的B+树索引通过页分裂(节点空间不足时按中间键拆分为两页)和页合并(节点利用率低于50%时与相邻节点合并)维护平衡。更新操作涉及主键变更时需"先删后插",非主键更新则直接修改或调整索引位置。InnoDB采用锁机制和MVCC控制并发操作,并通过双向链表、自适应哈希索引等优化平衡维护效率。监控页分裂/合并次数、使用自增主键及定期重组索引可优化性能,MySQL 8.0+还引入了并行分裂等改进机制。
2025-06-06 00:14:32
526
原创 MySQL B+树 详解
MySQL中的B+树索引机制是一种高效的多路平衡搜索树结构,其核心特点包括:1)多叉节点设计(单页可存约1170个索引项),显著降低树高(3层可管理2千万数据);2)叶子节点双向链表连接,支持高效范围查询;3)分离式存储(非叶子节点仅导航,叶子节点存数据)。相比哈希表(不支持范围查询)和二叉树(I/O次数多),B+树通过高扇出特性优化磁盘I/O,3次访问即可定位数据。InnoDB中,聚集索引叶子节点直接存储行数据,二级索引则需回表。典型应用包括范围查询、排序和覆盖索引,但频繁更新可能导致页分裂。优化方向包括
2025-06-06 00:13:45
559
原创 InnoDB的MVCC(多版本并发控制)机制工作原理
InnoDB的MVCC机制通过多版本并发控制实现高效的非锁定读,核心包含隐藏字段(DB_TRX_ID、DB_ROLL_PTR)、Undo Log版本链和ReadView事务快照。ReadView依据事务ID判断数据可见性,确保不同隔离级别下(RC可读已提交、RR可重复读)的隔离性。二级索引需回表查询主键记录判断可见性,Purge线程清理无用的历史版本。优化建议包括控制长事务、合理设计索引和调整Purge参数。MVCC通过版本链和快照机制,在RC/RR级别减少锁竞争,平衡性能与隔离性。
2025-06-06 00:13:02
400
原创 MySQL InnoDB引擎核心机制详解
摘要:MySQL InnoDB 引擎采用分层存储结构(表空间、段、区、页、行),通过缓冲池、写缓冲等内存组件优化 I/O。其核心事务机制依赖 Undo/Redo 日志保证原子性与持久性,MVCC 和行级锁(包括 Next-Key 锁)实现隔离性。后台线程协同处理脏页刷新、日志清理等任务。索引设计上,聚集索引提升主键查询效率,自增锁优化并发插入。不同隔离级别下 MVCC 行为各异,READ COMMITTED 每次生成新 ReadView,REPEATABLE READ 保持视图一致性。整体架构通过存储优化、
2025-06-06 00:12:08
505
原创 分布式理论 - BASE理论
BASE理论与分布式事务设计摘要 BASE理论是分布式系统设计的核心原则,包含三要素:基本可用(系统故障时保证核心功能)、软状态(允许数据短暂不一致)和最终一致性(确保数据最终同步)。该理论是对CAP定理中AP系统的补充,通过牺牲强一致性换取高可用性,适用于电商大促、社交网络等场景。在微服务架构中,可通过事件驱动、Saga模式等实现跨服务最终一致性事务,典型案例如DynamoDB、Cassandra等系统。BASE理论的优势在于高可用和可扩展性,但也带来数据短暂不一致等挑战,需结合业务场景权衡设计。
2025-06-06 00:11:06
637
原创 分布式理论 - CAP
分布式系统CAP定理与最终一致性解析 CAP定理指出分布式系统无法同时满足一致性、可用性和分区容错性。实际应用中,系统通常在CP(强一致)和AP(高可用)之间选择。CP系统如ZooKeeper牺牲可用性保证数据一致,而AP系统如Cassandra通过异步复制、Gossip协议等手段实现最终一致性。后者允许短暂不一致,换取高可用性。现代分布式系统常采用混合策略(如Saga模式)灵活平衡CAP特性,根据业务需求选择强一致或最终一致方案。最终一致性适用于社交网络、电商等容忍延迟的场景,而金融系统则需强一致性保障。
2025-06-06 00:10:09
475
原创 开发模式-目标管理-OKR(Objectives and Key Results,即目标与关键成果法)
敏捷开发中的OKR目标管理实践摘要 OKR(目标与关键成果法)通过设定定性目标(Objective)和量化关键结果(KR),与敏捷开发形成战略与执行的协同。其核心流程包括:战略目标拆解为团队OKR→映射至Sprint任务→迭代交付与动态调整→季度评分复盘。实践中,OKR提供长期方向(如季度目标),敏捷实现短期突破(2-4周迭代),工具链(Jira、PingCode)支持目标与任务对齐。典型案例如字节跳动通过OKR与Scrum结合实现大规模协作。挑战包括目标对齐、KR量化设计等,需通过工作坊、SMART原则解
2025-06-06 00:09:02
706
原创 开发模式-敏捷开发-Kanban
摘要: Kanban是一种基于可视化与持续改进的敏捷方法,通过限制在制品(WIP)和优化工作流实现高效交付。其核心原则包括可视化工作流、限制WIP、管理流动效率及持续改进(Kaizen)。Kanban适用于运维、跨团队协作等场景,强调灵活性与快速响应,与固定迭代的Scrum形成对比。典型工具如Jira、Trello支持看板管理,而实施挑战需通过数据驱动和渐进推广解决。Kanban的弱仪式感与强适应性使其成为需求多变场景的理想选择,成功关键在于坚持WIP限制和团队协作优化。
2025-06-06 00:07:47
605
原创 团队开发- 软件开发全流程详解-中小团队实践优化建议
对核心模块强制执行单元测试(覆盖率≥80%),否则阻塞合并。,通过工具链压缩非编码时间,最终实现“需求→上线”的高效流转。:合并需求与设计评审,时间控制在1小时内,提前共享材料。:该流程体现了传统开发模式的严谨性,但对中小团队需进行。:采用蓝绿部署,通过Kubernetes实现秒级回滚。
2025-06-06 00:06:41
390
原创 开发模式-敏捷开发-Scrum
摘要: Scrum是一种强调迭代增量、团队协作的敏捷开发框架,通过2-4周的Sprint周期交付产品增量。其核心包括三大角色(产品负责人、Scrum Master、开发团队)、三大工件(产品待办列表、冲刺待办列表、增量)及五大事件(如每日站会、Sprint评审)。相比传统瀑布模型,Scrum灵活应对需求变更,适合互联网产品等快速迭代场景,但依赖团队成熟度与协作能力。典型工具如Jira、Trello支持需求管理,实践案例显示其能显著缩短交付周期并提升用户满意度。成功实施需团队坚守敏捷原则与持续优化流程。
2025-06-05 11:28:33
705
原创 开发模式-传统模式-螺旋模型(Spiral Model)
螺旋模型深度解析摘要 螺旋模型是一种风险驱动的迭代开发模式,由Boehm提出,结合瀑布模型的系统性和原型模型的灵活性。其核心是通过多轮循环(计划、风险分析、开发测试、用户评估)逐步完善系统,重点在于早期风险识别与控制。优势包括适应复杂需求(如军工、医疗系统)、渐进交付和风险前置管理,但需较高成本与专业团队。相较传统瀑布模型,螺旋模型更强调动态调整和原型验证。现代实践中,常与敏捷方法结合提升效率。该模型适用于高风险、技术探索型或长期演进项目,是复杂系统开发的有效框架。
2025-06-05 11:09:43
419
原创 开发模式 - 领域驱动设计(DDD)开发模式
领域驱动设计(DDD)解析 DDD是一种以领域模型为核心的开发方法,通过统一语言和充血模型实现业务与技术对齐,降低维护成本。其分层架构(用户接口层、应用层、领域层、基础设施层)强调业务逻辑内聚,与传统贫血模型相比,DDD使代码更贴近业务规则,适合电商、金融等复杂系统。优势包括高内聚、适应演化,但存在学习曲线陡峭、初期投入高等挑战。核心工具如Event Storming和Axon Framework,典型应用场景为多领域交互的长期项目。
2025-06-05 10:28:13
740
原创 开发模式 - 业务驱动开发(Business-Driven Development, BDD)
摘要:业务驱动开发(BDD)是以业务需求为核心,通过业务流程建模(BPMN)和技术实现高效协同的开发模式。其流程包括业务建模、需求分解、技术实现和持续反馈,借助低代码平台、微服务架构等工具加速交付。相比传统开发,BDD更灵活、协作性更强,适用于复杂业务系统和数字化转型。典型案例显示其可提升效率60%,但需解决模型抽象和工具整合的挑战。BDD成功关键在于跨团队协作与适配组织文化。
2025-06-05 10:14:02
481
原创 开发模式 - ATDD(验收测试驱动开发,Acceptance Test Driven Development)
摘要:ATDD(验收测试驱动开发)是一种敏捷方法,通过客户、开发者和测试者三方协作,提前定义验收标准并编写测试用例,确保产品符合业务需求。其流程包括需求分析、编写测试、开发实现和持续验证,工具如Cucumber和SpecFlow可支持执行。相比TDD和BDD,ATDD更聚焦业务验收和多方协作,适用于复杂需求项目,能提升需求明确性和质量,但也面临标准制定和工具学习成本等挑战。
2025-06-05 10:05:52
649
原创 开发模式 - 测试驱动开发(TDD)
测试驱动开发(TDD)采用"红-绿-重构"循环模式,通过测试先行确保代码质量。相比传统开发,TDD具有缺陷预防(某银行缺陷率降62%)、设计引导等优势,但存在初期效率降低30%等挑战。适用场景包括金融系统核心模块、微服务接口测试等,推荐JUnit/pytest等工具链。最佳实践建议控制测试粒度、采用增量开发。TDD尤其适合需要高可靠性的系统,虽前期投入较大,但长期可提升40%迭代速度,是质量保障的有效手段。
2025-06-05 09:56:03
192
原创 开发模式 - 行为驱动开发(BDD)
BDD(行为驱动开发)是一种敏捷开发方法,通过自然语言描述系统行为,促进团队协作。其核心是使用Given-When-Then语法描述需求,关注系统行为而非实现细节。BDD流程包括需求研讨、编写Gherkin场景、自动化测试和持续集成。相比传统模式,BDD能减少需求误解和测试维护成本。优势包括早期缺陷预防和需求可追溯,但需克服学习曲线和文化阻力。典型工具如Java的Cucumber和Python的Behave,适用于金融、电商等行业。实施建议从核心模块试点,选择合适框架,培育协作文化。需要行业特定方案可提供场
2025-06-05 09:55:06
125
原创 设计模式七大原则 - 依赖倒置原则(Dependence Inversion Principle, DIP)
摘要: 依赖倒置原则(DIP)是面向对象设计的核心准则,强调高层模块与低层模块均应依赖抽象接口而非具体实现,实现模块间解耦。其核心是通过抽象层隔离变化,支持依赖注入、工厂模式等方式灵活扩展。遵循DIP可降低耦合度、提升可测试性,典型应用包括分层架构和插件化系统。实践中需平衡抽象粒度与性能,结合Spring等框架简化实现。该原则与开闭原则、里氏替换原则协同,共同构建高维护性系统架构。(150字)
2025-06-05 00:48:12
428
原创 设计模式七大原则 - 接口隔离原则(Interface Segregation Principle, ISP)
摘要: 接口隔离原则(ISP)强调客户端不应依赖不需要的接口,通过拆分臃肿接口为多个专用接口(如Readable/Writable),确保类仅依赖最小功能集。其优势包括降低耦合、提高复用性,实现方式为按职责拆分接口(如将Worker拆分为Developer/Tester)和依赖注入。反例中BasicPrinter被迫实现无用的scan()方法,正例通过细化接口消除冗余。ISP适用于分层架构、插件系统等场景,需与单一职责原则配合,避免过度拆分。核心价值是提升系统灵活性与可维护性,需平衡接口粒度与实用性。(15
2025-06-05 00:47:49
627
原创 设计模式七大原则 - 迪米特法则(Law of Demeter, LoD)
迪米特法则要求对象仅与直接朋友(成员变量、参数、返回值)交互,避免跨层调用(如a.getB().getC()),以降低耦合。其核心是通过封装和接口设计隐藏细节,例如校长通过教师类获取班级总分而非直接访问学生类。优势包括提升可维护性、复用性和测试便利性。实现方式包括封装非必要方法、应用门面/中介者模式。适用于分层架构、微服务等场景,需平衡解耦与性能,避免过度设计。该法则与SRP、DIP等原则协同,是构建松耦合系统的关键实践。
2025-06-05 00:47:28
362
原创 设计模式七大原则 - 合成/聚合复用原则(Composite/Aggregate Reuse Principle, CARP)
合成/聚合复用原则(CARP)摘要 该原则主张优先通过组合/聚合而非继承实现代码复用,以降低耦合、提升灵活性。核心区别在于组合(强生命周期绑定)与聚合(弱绑定)的关系强度。相比继承易导致的僵化设计,组合方式支持动态功能扩展(如依赖注入),符合开闭原则。典型应用包括分层架构、插件系统等场景,需注意避免过度设计。CARP与单一职责、里氏替换等原则协同,是构建模块化、易维护系统的关键方法,但需结合实际需求权衡使用。
2025-06-05 00:46:54
286
原创 设计模式七大原则 - 里氏替换原则(Liskov Substitution Principle, LSP)
摘要: 里氏替换原则(LSP)是面向对象设计中确保子类与父类行为一致的关键准则,要求子类可透明替换父类且不改变程序逻辑。其核心包括:子类需遵守父类契约(如不强化前置条件、不弱化后置条件)、慎用继承(优先组合),并通过行为一致性提升系统健壮性。典型应用如Java集合框架中List与子类的替换。违反LSP的案例(如正方形继承长方形)可通过组合或接口重构解决。LSP与开闭原则、依赖倒置原则紧密关联,是构建可扩展、稳定继承体系的基础。(150字)
2025-06-05 00:46:32
708
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人