摘要: 背景 在一个微服务架构的项目中,一个业务操作可能涉及到多个服务,这些服务往往是独立部署,构成一个个独立的系统。这种分布式的系统架构往往面临着分布式事务的问题。为了保证系统数据的一致性,我们需要确保这些服务中的操作要么全部成功,要么全部失败。通过使用RocketMQ实现分布式事务,我们可以协调这些服务 阅读全文
posted @ 2024-03-12 08:57 Y00 阅读(338) 评论(0) 推荐(3) 编辑
摘要: 缓存作为磁盘以外的一种存储数据的方式,它有着比磁盘更快的存取效率,因此,可以有效提高系统的性能。在单体系统中,一般会用到本地缓存。但在分布式系统中,本地缓存就显得不够用了,这时往往要用到分布式缓存。 分布式缓存特性 本地缓存因为就在应用系统进程的内存里面,不需要网络和对象拷贝的开销所以性能非常高,不 阅读全文
posted @ 2023-01-16 11:10 Y00 阅读(1186) 评论(0) 推荐(2) 编辑
摘要: 每年的双十一期间,各大电商平台流量暴增,同时,电商平台系统的负载压力也会很大。譬如订单支付的场景,每个订单支付成功后,服务器可能要完成扣减积分、扣减优惠券、扣减商品库存、发短信等一系列操作。单个用户请求,服务器处理起来并没有什么问题,但是,瞬时并发的多个请求到了服务器,数据库压力上来了,导致请求响应 阅读全文
posted @ 2022-11-13 18:03 Y00 阅读(766) 评论(1) 推荐(4) 编辑
摘要: 我们都知道,我们写的Java程序需要先经过编译,生成了.class文件(字节码文件)。然而,计算机并不能直接解释.class文件里面的内容,这时候就需要一个能加载、解释.class文件并且能按.class文件里的内容进行处理的一个东西--JVM。 JVM,就是Java虚拟机。它是一种规范,有针对不同 阅读全文
posted @ 2024-03-15 10:27 Y00 阅读(308) 评论(0) 推荐(0) 编辑
摘要: Git是一个开源的分布式版本控制系统,是目前主流的版本控制系统,很多软件项目都会用它做源代码管理。Git的常用操作想必很多人都会,但是可能了解Git内部原理的人并不多。了解一些底层的东西,可以更好的帮你理清思路,遇到问题的时候也可以更好的去解决。 准备工作 在介绍Git如何存储数据之前,我们先做一些 阅读全文
posted @ 2022-12-04 12:00 Y00 阅读(104) 评论(0) 推荐(0) 编辑
摘要: top命令可以用来监控服务器CPU、内存的运行情况,是Linux一个经常使用到的命令。 基本用法 第一行 显示当前系统运行信息,系统当前时间是23:23:21,运行了315days,当前有2个用户登录(2 users),系统平均负载压力情况(load average)为0.08(1min的平均负载压 阅读全文
posted @ 2022-10-24 00:12 Y00 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 什么是数据库事务? 事务,就是一系列操作的整体,其结果就是这一系列操作要么全部成功,要么全部失败。 譬如说,一个经典的例子--转账。 A要转帐给B 100块钱,要经历以下步骤: 1、扣除A账户100块钱。 2、增加B账户100块钱。 以上例子里的两个步骤,要么全部成功,要么全部失败,不然,就乱套了。 阅读全文
posted @ 2022-10-20 23:39 Y00 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 一个刚上线的IT系统,往往负载压力不大,所以不会存在什么性能问题。这时,人们大多只关心系统的功能性和用户体验。但是,随着时间推移,用户量和数据量都比刚上线的时候要多很多,高并发和大数据场景下,系统遇到性能瓶颈,持续不能改善最终导致系统崩溃。这对于做C端的开发人员应该更加深有体会。 系统经常响应慢,甚 阅读全文
posted @ 2022-10-16 00:42 Y00 阅读(320) 评论(0) 推荐(1) 编辑
摘要: @Transactional(readOnly=true)就可以把事务方法设置成只读事务。设置了只读事务,事务从开始到结束,将看不见其他事务所提交的数据。这在某种程度上解决了事务并发的问题。一个方法内,如果没有对数据库insert、update、delete的操作,那么,这个事务方法是可以设置成re 阅读全文
posted @ 2022-10-07 14:07 Y00 阅读(770) 评论(0) 推荐(0) 编辑
摘要: Spring @Transactional注解isolation属性 @Transactional注解通过isolation属性设置事务隔离级别。如下: @Transactional(isolation=Isolation.DEFAULT) public void method(){} isolat 阅读全文
posted @ 2022-10-07 14:05 Y00 阅读(1899) 评论(0) 推荐(0) 编辑
摘要: 有时候,我们明明在类或者方法上添加了@Transactional注解,却发现方法并没有按事务处理。其实,以下场景会导致事务失效。 1、事务方法所在的类没有加载到Spring IOC容器中。 Spring声明式事务的实现完全依赖于Spring的AOP代理机制,未被Spring管理的类中的方法不受Spr 阅读全文
posted @ 2022-10-07 14:04 Y00 阅读(956) 评论(0) 推荐(0) 编辑
摘要: 在Spring里,一个事务方法被另外一个事务方法调用时,两个方法的事务应该如何进行,说白话一点,就是说当出现异常需要回滚时,各个方法的数据操作是否要全部回滚,事务传播行为就是决定了这样的一个处理结果。A事务方法(外部方法)调用了B事务方法(内部方法,又叫被调用方法),B是继续在A的事务中运行呢?还是 阅读全文
posted @ 2022-10-07 14:02 Y00 阅读(445) 评论(0) 推荐(0) 编辑
摘要: 上一节说了Spring的事务配置,其中,声明式事务配置里有5种配置方式, @Transactional注解应该是最为常用的一种方式了。这一节就说说@Transactional注解。 @Transactional注解可以放到类名或者方法名上面, 写在类名上面,如下: @Transactional( p 阅读全文
posted @ 2022-10-07 14:01 Y00 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 事务是数据库操作最基本的单元,是逻辑上的一组操作,这一组操作在同一个会话中要么都执行成功,要么都失败,这也是事务的最基本特性--原子性。事务的作用是为了保证系统数据的正确性,因此,数据库应用程序中是会经常用到事务。下面就说一下在Spring里怎么做事务操作。 Spring事务使用方式 Spring事 阅读全文
posted @ 2022-10-04 10:15 Y00 阅读(834) 评论(0) 推荐(0) 编辑
摘要: 任何一名技术大神都是从小菜鸟开始的,这应该无一例外。当然,有的人成长的快,有的人成长得慢,有的人坚持下来,有的人半途而废。如果我们在成长的过程中能掌握一些方法,也许能少走一些弯路。 重视基础知识 万丈高楼平地起,我们学习任何东西往往都是从最基础的学起。看过《倚天屠龙记》的人也许都有印象,杨逍用了十年 阅读全文
posted @ 2022-10-04 10:09 Y00 阅读(263) 评论(0) 推荐(2) 编辑