随着项目发展,现有模块不再符合需求,重构后端服务必要性拉满。👨💻 重构过程中,明确重构目标如引入新功能、性能提升、增强系统可用性等是前提条件,此外也必须考虑功能一致性和数据一致性这两大关键问题。 后台重构可以根据服务的不同需求划分为以下几类: 1️⃣逻辑模块重构:专注于优化代码逻辑和业务流程。 2️⃣存储模块重构:改进数据存储和检索机制。 3️⃣逻辑与存储模块联合重构:同 […]
随着项目发展,现有模块不再符合需求,重构后端服务必要性拉满。👨💻 重构过程中,明确重构目标如引入新功能、性能提升、增强系统可用性等是前提条件,此外也必须考虑功能一致性和数据一致性这两大关键问题。 后台重构可以根据服务的不同需求划分为以下几类: 1️⃣逻辑模块重构:专注于优化代码逻辑和业务流程。 2️⃣存储模块重构:改进数据存储和检索机制。 3️⃣逻辑与存储模块联合重构:同 […]
笔者在一线互联网公司,经历过数次大型系统的重构项目,也多次担任技术负责人,经历的重构项目包含:日吞吐量数万亿的计算型系统、基础架构中间件系统、高并发高稳定性要求的C端系统、业务复杂性较高的B端系统等。 同时了解到大型重构项目风险高、难度大、易流产,因此总结了本文供大家参考学习交流。 任何系统在持续的演进迭代的历程中,都难免因各类因素导致迈向重构,比如:系统可塑性与业务需求无 […]
最近在整理以前的工作笔记,又发现一个有意思的bug,在一个service调用另外一个类的方法时,出现了一个Spring的事务问题,Transaction rolled back because it has been marked as rollback-only,时间过去有点儿久了,不记得是压测时出的问题还是线上运行时出的问题了。 2021-01-25 19:42:00. […]
上一篇文章中见过了事务的特性以及隔离级别,今天来说一下事务的传播性,事务是一个好东西,但是并不是每一个方法都应该加上事务,在事务的隔离级别中提到过一点:越是严格,耗费的性能越大,那么如果每个方法都加了事务,而不论是否会涉及到数据的修改,那么这就属于事务的滥用了,没起到应有的作用不说,反而还会一点点的拖慢你的系统。 为了应对这一问题,“事务的传播性”这一概念又横空出世了,打个 […]
“事务”,一个经常能听到的概念,它到底是个什么东西呢?数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成,事务的正确执行,使得数据从一种状态转换到另外一种状态。
一、背景 大促已经如期而至,接下来我会从技术的角度,跟大家聊聊大促备战的底层逻辑和实战方案,希望能够解答大家心中的一些疑惑。 首先,大促为什么如此重要呢?先从数据的角度简单做一下分析,以下表格罗列了我们历年大促GMV成绩单: 年份 618销售额(亿元) 年销售额(亿元) 618销售额占比 2022 3793 33155 11.4% 2021 3 […]
一、踩坑描述 写分页查询接口,order by和limit混用的时候,出现了排序的混乱情况 在进行第N页查询时,出现与第一前面页码的数据一样的记录。 二、问题 在MySQL中分页查询,我们经常会用limit,如:limit(0,20)表示查询第一页的20条数据,limit(20,20)表示查询第二页的数据。业务上我们通常也会在分页的时候加上排序 order by; 但是当l […]
Spring中的@Autowired和@Inject注解有什么区别,这是Java面试中常见的Spring问题之一
Photo by Clément Hélardot on Unsplash 照片由Clément Hélardot在Unsplash上拍摄 1. Manually throw other exceptions 手动抛出其他异常 @Service public class DemoServiceImpl implements DemoService { @Autowired […]
前言 至少30年以前,一些软件设计人员就已经意识到领域建模和设计的重要性,并形成一种思潮,Eric Evans将其定义为领域驱动设计(Domain-Driven Design,简称DDD)。在互联网开发“小步快跑,迭代试错”的大环境下,DDD似乎是一种比较“古老而缓慢”的思想。 然而,由于互联网公司也逐渐深入实体经济,业务日益复杂,我们在开发中也越来越多地遇到传统行业软件开 […]
介绍 什么是状态机 有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机(英语:finite-state automation,缩写:FSA),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。 -- 维基百科 使用场景 针对需要通过状态扭转达到流程控制的场景。例如:收货,上架这两个动作 […]
最近在一个项目中,因为涉及很多状态的流转,我们选择使用状态机引擎来表达状态流转。因为状态机DSL(Domain Specific Languages)带来的表达能力,相比较于if-else的代码,要更优雅更容易理解。另一方面,状态机很简单,不像流程引擎那么华而不实。 一开始我们选用了一个开源的状态机引擎,但我觉得不好用,就自己写了一个能满足我们要求的简洁版状态机,这样比较K […]
对于缓存你应该知道的都在这张图里: The Picture From ByteByteGo.
学习批量思想、异步思想和空间换时间思想,优化数据库操作、降低接口耗时,提高接口性能。了解更多实用技巧,提升开发效率。
BeanUtils (1) BigDecimal (1) CDC (1) ETL (1) github (1) heap (1) LLaMa (1) MAT (5) MDM (1) Sora (1) TCP (1) 业务图 (1) 企业应用 (1) 停机迁移 (1) 内存泄露 (4) 协议 (1) 可用性 (1) 基础设施层 (1) 堆内存 (1) 堆外存 (1) 大事记 (1) 实时协作 (1) 对象转换 (1) 应用架构 (1) 异常 (3) 技术规范 (1) 技术选型 (4) 提示工程 (1) 数据交换 (1) 数据共享 (1) 数据双写 (1) 日期 (1) 时间 (1) 时间线 (1) 术语 (1) 架构方案 (14) 流程图 (1) 精度 (1) 线程模型 (1) 经验分享 (1) 网络编程 (2) 解耦 (1) 软件复杂性 (1) 软件工程 (1) 重构 (4) 重试 (1) 隔离级别 (1) 集群扩容 (1) 领域层 (3) 领域模型 (1)
COPYRIGHT © 2014-2024 verysu.com . ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang