<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://umll.github.io/</id><title>umll blog</title><subtitle>A minimal, responsive and feature-rich Jekyll theme for technical writing.</subtitle> <updated>2025-06-08T12:10:04+08:00</updated> <author> <name>umll</name> <uri>https://umll.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://umll.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="zh-CN" href="https://umll.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2025 umll </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>消息丢失问题</title><link href="https://umll.github.io/posts/%E6%B6%88%E6%81%AF%E4%B8%A2%E5%A4%B1%E9%97%AE%E9%A2%98/" rel="alternate" type="text/html" title="消息丢失问题" /><published>2025-04-09T11:00:00+08:00</published> <updated>2025-04-09T11:00:00+08:00</updated> <id>https://umll.github.io/posts/%E6%B6%88%E6%81%AF%E4%B8%A2%E5%A4%B1%E9%97%AE%E9%A2%98/</id> <content type="text/html" src="https://umll.github.io/posts/%E6%B6%88%E6%81%AF%E4%B8%A2%E5%A4%B1%E9%97%AE%E9%A2%98/" /> <author> <name>umll</name> </author> <category term="MQ" /> <summary>问题引出 在设计实现校园在线超市时，我采用了RocketMQ来异步处理业务，虽然平时的并发量不高，业务出错的情况很少，但是从系统的高可用性而言，还是需要制定一些消息方面的异常处理策略，如消息丢失问题、消息重复消费问题等。</summary> </entry> <entry><title>消息幂等方案</title><link href="https://umll.github.io/posts/%E6%B6%88%E6%81%AF%E5%B9%82%E7%AD%89%E6%96%B9%E6%A1%88/" rel="alternate" type="text/html" title="消息幂等方案" /><published>2025-04-08T11:00:00+08:00</published> <updated>2025-04-08T11:00:00+08:00</updated> <id>https://umll.github.io/posts/%E6%B6%88%E6%81%AF%E5%B9%82%E7%AD%89%E6%96%B9%E6%A1%88/</id> <content type="text/html" src="https://umll.github.io/posts/%E6%B6%88%E6%81%AF%E5%B9%82%E7%AD%89%E6%96%B9%E6%A1%88/" /> <author> <name>umll</name> </author> <category term="幂等" /> <summary>问题引出 最近在设计一个秒杀活动时，采用MQ来异步扣减Redis库存，并异步同步Redis与MySQL。</summary> </entry> <entry><title>幂等性方案</title><link href="https://umll.github.io/posts/%E5%B9%82%E7%AD%89%E6%80%A7%E6%96%B9%E6%A1%88/" rel="alternate" type="text/html" title="幂等性方案" /><published>2025-03-15T00:00:00+08:00</published> <updated>2025-06-08T12:09:30+08:00</updated> <id>https://umll.github.io/posts/%E5%B9%82%E7%AD%89%E6%80%A7%E6%96%B9%E6%A1%88/</id> <content type="text/html" src="https://umll.github.io/posts/%E5%B9%82%E7%AD%89%E6%80%A7%E6%96%B9%E6%A1%88/" /> <author> <name>umll</name> </author> <summary>这种问题的本质在于，提交了一样的数据，形成的结果也一致，造成了许多冗余数据。那么，假如在用户抢购商品时，如何防止用户重复提交呢？ 简介 幂等本身是一个数学概念，即f(n) = 1^n^，无论 n为多少，f(n)的值永远为1。在程序中，对于幂等的定义为：无论对某一个资源操作了多少次，其影响都应是相同的。换句话说，在接口重复调用的情况下，对系统产生的影响是一样的 例如： select * from order_info where order_id = 1 这个语句无论执行多少次，虽然结果有可能出现不同，都不会对数据产生改变，具备幂等性。 实现幂等性是为了防止用户重复提交表单、防止恶意刷单、防止消息重复消费等问题。 幂等设计主要考虑两个方面：空间、时间 空间：定义幂等的范围，如订单不允许重复下单 时间：定义幂等的有效期。有些业务需要永久保证幂等，如下单、支付。...</summary> </entry> <entry><title>mysql和redis库存扣减优化</title><link href="https://umll.github.io/posts/mysql%E5%92%8Credis%E5%BA%93%E5%AD%98%E6%89%A3%E5%87%8F%E4%BC%98%E5%8C%96/" rel="alternate" type="text/html" title="mysql和redis库存扣减优化" /><published>2025-03-10T11:00:00+08:00</published> <updated>2025-06-07T17:21:53+08:00</updated> <id>https://umll.github.io/posts/mysql%E5%92%8Credis%E5%BA%93%E5%AD%98%E6%89%A3%E5%87%8F%E4%BC%98%E5%8C%96/</id> <content type="text/html" src="https://umll.github.io/posts/mysql%E5%92%8Credis%E5%BA%93%E5%AD%98%E6%89%A3%E5%87%8F%E4%BC%98%E5%8C%96/" /> <author> <name>umll</name> </author> <category term="Redis" /> <summary>问题引出 最近在设计==校园超市小程序==的一些核心业务流程，对于订单扣减库存的问题让我思考良久，是直接锁定MySQL的库存数据呢，还是利用缓存存储库存？ 采用jmeter进行压测，库存初始值50，线程数量1000个，1秒以内启动全部，一个线程循环2次，共2000个请求 MySQL方案 &amp;amp;lt;update id=&amp;quot;decreaseStock&amp;quot;&amp;amp;gt; UPDATE product_stock SET product_stock = product_stock - 1 WHERE product_id = #{id} &amp;amp;lt;/update&amp;amp;gt; 测试结果： 这种情况肯定会超卖，增加AND stock_num &amp;amp;gt;= 1条件，即可避免超卖。 &amp;amp;lt;update id=&amp;quot;decreaseStock&amp;quot;&amp;amp;gt; UPD...</summary> </entry> <entry><title>RocketMQ实现库存同步</title><link href="https://umll.github.io/posts/RocketMQ%E5%AE%9E%E7%8E%B0%E5%BA%93%E5%AD%98%E5%90%8C%E6%AD%A5/" rel="alternate" type="text/html" title="RocketMQ实现库存同步" /><published>2025-03-08T11:00:00+08:00</published> <updated>2025-03-08T11:00:00+08:00</updated> <id>https://umll.github.io/posts/RocketMQ%E5%AE%9E%E7%8E%B0%E5%BA%93%E5%AD%98%E5%90%8C%E6%AD%A5/</id> <content type="text/html" src="https://umll.github.io/posts/RocketMQ%E5%AE%9E%E7%8E%B0%E5%BA%93%E5%AD%98%E5%90%8C%E6%AD%A5/" /> <author> <name>umll</name> </author> <category term="Redis" /> <summary>问题引出 最近在设计==校园超市小程序==的一些核心业务流程，对于订单扣减库存的问题让我思考良久，是直接锁定MySQL的库存数据呢，还是利用缓存存储库存？</summary> </entry> </feed>
