对于上面的创建订单的代码正规配资平台在哪找,如果现在需要新增一个需求,再创建订单之后发送一个消息到消息队列或者调用一个 RPC,你会怎么做呢?很多同学首先会想到,直接在事务方法里面进行调用:
这种代码在很多人写的业务中都会出现,事务中嵌套 rpc,嵌套一些非 DB 的操作,一般情况下这么写的确也没什么问题,一旦非 DB 写操作出现比较慢,或者流量比较大,就会出现大事务的问题。由于事务的一直不提交,就会导致数据库连接被占用。这个时候你可能会问,我扩大点数据库连接不就行了吗,100 个不行就上 1000 个,再上篇文章已经讲过数据库连接池大小依然会影响我们数据库的性能,所以,数据库连接并不是想扩多少扩多少。
那我们应该怎么对其进行优化呢?在这里可以仔细想想,我们的非 db 操作,其实是不满足我们事务的 ACID 的,那么干嘛要写在事务里面,所以这里我们可以将其提取出来。
在这个方法里面先去调用事务的创建订单,然后再去调用其他非 DB 操作。如果我们现在想要更复杂一点的逻辑,比如创建订单成功就发送成功的 RPC 请求,失败就发送失败的 RPC 请求
发布于:湖南省