架构设计
weixin_38642703
这个作者很懒,什么都没留下…
展开
-
Java接口的幂等性设计
转载:https://www.cnblogs.com/jack87224088/p/8688948.html 在微服务架构下,我们在完成一个订单流程时经常遇到下面的场景: 一个订单创建接口,第一次调用超时了,然后调用方重试了一次 在订单创建时,我们需要去扣减库存,这时接口发生了超时,调用方重试了一次 当这笔订单开始支付,在支付请求发出之后,在服务端发生了扣钱操作,接口响应超时了,调用方重...转载 2019-09-03 11:22:05 · 171 阅读 · 0 评论 -
如何通过springboot + redis + 注解 + 拦截器,实现接口幂等性校验?
一、概念 幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次,比如: 订单接口, 不能多次创建订单 支付接口, 重复支付同一笔订单只能扣一次钱 支付宝回调接口, 可能会多次回调, 必须处理重复回调 普通表单提交接口, 因为网络超时等原因多次点击提交, 只能成功一次 等等 二、常见解决方案 唯一...原创 2019-09-03 11:22:38 · 103 阅读 · 0 评论 -
分布式事务
收藏 | 第一次有人把“分布式事务”讲的这么简单明了 不知道你是否遇到过这样的情况,去小卖铺买东西,付了钱,但是店主因为处理了一些其他事,居然忘记你付了钱,又叫你重新付。 又或者在网上购物明明已经扣款,但是却告诉我没有发生交易。这一系列情况都是因为没有事务导致的。这说明了事务在生活中的一些重要性。 有了事务,你去小卖铺买东西,那就是一手交钱一手交货。有了事务,你去网上购物,扣款即产生订单交易...转载 2019-09-03 10:21:03 · 75 阅读 · 0 评论 -
线上部署Kafka和ES,为啥JVM堆内存分配越大,性能反而越低?
本文给大家聊一个生产环境的实践经验:线上系统部署的时候,JVM堆内存大小是越大越好吗? 先说一个前提,本文主要讨论Kafka和Elasticsearch两种分布式系统的线上部署情况,不是普通的Java应用系统 1、是否依赖Java系统自身内存处理数据? 先说明一点,不管是我们自己开发的Java应用系统,还是一些中间件系统,在实现的时候都需要选择是否基于自己Java进程的内存...转载 2019-09-05 10:23:05 · 489 阅读 · 1 评论 -
高并发环境下,先操作数据库还是先操作缓存?
前言 在分布式系统中,缓存和数据库同时存在时,如果有写操作的时候,先操作数据库还是先操作缓存呢? 先思考一下,可能会存在哪些问题,再往下看。下面我分几种方案阐述。 缓存维护方案一 假设有一写(线程A)一读(线程B)操作,先操作缓存,在操作数据库,如下流程图所示 1)线程A发起一个写操作,第一步del cache 2)线程A第二步写入新数据到DB 3)线程B发起一个读操作,cach...原创 2019-09-10 10:40:02 · 160 阅读 · 0 评论