随笔分类 - 分布式服务

摘要:业务新上了一个功能,在发布的过程中,系统报出了数据库死锁异常: 死锁发生在一个事务中,事务对多个表进行了操作。在报错日志中,死锁发生在tableA与tableB。一开始怀疑此次发布的某个改动中对上面这两张表新增了select或update操作。将注意力用在排查这个问题上。排查后发现没有相关的变更,又 阅读全文
posted @ 2019-04-04 09:09 melonstreet 阅读(1088) 评论(0) 推荐(1) 编辑
摘要:一个较为健壮的下单方案 最近在做的一个新项目中,有一个下单兑换的流程。用户的积分可以用来兑换物品。 这个过程中,需要有几部分的操作: 积分表扣除积分 兑换表写用户兑换内容、状态 下单 更新用户兑换表为兑换完成状态 这个流程中需要保证扣除积分后,能够为成功为用户下单。一个服务的调用会出现三种状态:成功 阅读全文
posted @ 2019-03-23 16:29 melonstreet 阅读(129) 评论(0) 推荐(1) 编辑
摘要:表数据过多时,通常会为表的记录增加缓存。在我们的业务中,用户的信息是使用redis来做缓存的,避免用户的每次请求都直接查询数据库。 在一些场景下,需要为用户的一连串数据库操作做事务管理,同时也需要删除掉旧的用户信息表的缓存。例如现在有一个金币兑换物品的场景,用户兑换的流程如下: 1. 用户信息表:扣 阅读全文
posted @ 2019-03-09 16:06 melonstreet 阅读(374) 评论(2) 推荐(0) 编辑
摘要:[TOC] 为什么需要保证幂等性 编程中的“幂等性”是指任意多次执行所产生的影响,与一次执行的影响相同。一个拥有幂等性设计的接口,保证无论一次或多次来调用接口,都能够得到相同的结果。接口的幂等性设计在某些场景下是必需的,例如用户下单的场景。 我们知道,服务之间的调用存在三种状态:成功、失败、超时。超 阅读全文
posted @ 2019-02-14 00:02 melonstreet 阅读(1905) 评论(0) 推荐(2) 编辑