当前位置: 首页 > news >正文

成都电商app开发/快优吧seo优化

成都电商app开发,快优吧seo优化,wordpress联系我插件,内蒙古最新消息今天https://blog.csdn.net/laoxilaoxi_/article/details/80963905 一、热点账户 热点账户就是高频进行扣款、入账的账户,也就是热点账户该条数据为热点数据,会被频繁更新。一般热点账户分为两种,一种是频繁扣款的热点账户,另外一种是…

https://blog.csdn.net/laoxilaoxi_/article/details/80963905

一、热点账户

        热点账户就是高频进行扣款、入账的账户,也就是热点账户该条数据为热点数据,会被频繁更新。一般热点账户分为两种,一种是频繁扣款的热点账户,另外一种是频繁入账的热点账户。

 

二、热点账户常见问题

        1、性能瓶颈问题

        2、数据库压力问题

        3、成功率问题

 

三、纯修改余额方式及其特点

       1. 乐观锁

 

        操作方式:

                查询账户数据:

                        SELECT  BALANCE, STATUS, VERSION, … FROM ACCOUNT WHERE ID = ?

                计算余额:

                        POST_BALANCE = BALANCE + AMOUNT

                        或者

                        POST_BALANCE = BALANCE - AMOUNT

                更新账户余额:

                        UPDATE …. BALANCE = POST_BALANCE,VERSION = VERSION +1 WHERE ID = ? AND VERSION = ?

                        更新返回1,更新成功,返回0,更新失败,需抛出异常,回滚事务

                插入账户历史:

                        INSERT … 

 

        优点:

                不会存在阻塞,响应时间快;

                数据库没什么压力;

                在内存里可以完成很多复杂操作;

        缺点:

                成功率不高,真的存在并发时,失败的请求比较多;

                有效的性能依然不高;

 

        一般应对方案:

                采用重试的方式,立即重试三次,以提高成功率

 

        个人看法:

                这种重试在真正的有量的时候基本没啥作用,相反会徒增数据库的请求量,鄙人觉得这种重试只能解决请求量较小的时候的并发,比如突然同时进来两笔同一个账户的请求,处理失败的话进行重试是可以解决问题的;但是一瞬间进来200笔,甚至更多的话,这种重试没啥作用了。

            

       2. 悲观锁    

 

        操作方式:

                查询账户数据:

                    SELECT BALANCE … FROM ACCOUNT FOR UPDATE WITH RS

                 计算余额:

                        POST_BALANCE = BALANCE + AMOUNT

                        或者

                        POST_BALANCE = BALANCE - AMOUNT

                更新账户余额:

                        UPDATE …. BALANCE = POST_BALANCE,VERSION = VERSION +1 WHERE ID = ? 

                插入账户历史:

                        INSERT …

 

        优点:

                成功率高;

                性能好;

                在内存里可以完成很多复杂操作(余额签名);

        缺点:

                会存在阻塞,响应时间长;

                数据库压力大;

 

        一般应对方案:

                采用信号量做热点账户资源使用限制,可以控制数据库压力,为数据库分压,且保持在一个客观的性能水平。

 

        个人看法:

                这种方式能解决大部分的热点账户问题,也是本人之前采取的方式,不过偶尔会存在的超时问题也仅仅是一两笔,其余的都会被信号量拒绝了。

        

        3.数据库行级锁1

 

        操作方式:

               更新余额:

                    入账:

                            UPDATE BALANCE = BALANCE +AMOUNT WHERE ID = ?

                    扣款:

                            UPDATE BALANCE = BALANCE - AMOUNT WHERE ID = ? AND BALANCE > AMOUNT

               读取账户数据:(读取数据是为了在账户历史插入的时候保留发生后余额)

                            SELECT * FROM ACCOUNT WHERE ID = ? WITH CS 

               插入数据

                            INSERT ...

 

        优点:

                成功率高;

                性能好(相对于2);

                数据库压力也会小(相对于2);

                相应时间也小(相对于悲观锁);

        缺点:

                一些复杂的操作无法在内存完成了(余额签名)

 

        一般应对方案:

                复杂的操作异步化,延迟也就是毫秒级别,或者舍弃签名

 

        个人看法:

                这种方式与悲观锁相比好了很多,数据库压力小,性能高了,许增加上单账户限流或者信号量,防止单账户暴涨的量把数据库压爆。

 

        4.数据库行级锁2

 

        操作方式:

                更新余额:

                    入账:

                            UPDATE BALANCE = BALANCE +AMOUNT WHERE ID = ?

                    扣款:

                            UPDATE BALANCE = BALANCE - AMOUNT WHERE ID = ? AND BALANCE > AMOUNT

                插入数据

                            INSERT …

                异步更新发生后余额:(或者根据业务情况不需要该步骤)

                            UPDATE  ACCOUNT_HISTORY SET POST_BALANCE = ? WHERE  ACCOUNT_ID =?

        优点:

                成功率高;

                性能好(相对于3);

                数据库压力也会小(相对3);

                相应时间也小(相对3);

        缺点:

                代码复杂度高,需要异步化一些处理;

 

        个人看法:

                一些非核心部分的修改及操作,不需要就去掉,需要的话那就异步处理下。

            

 

    以上为本人一些粗浅的看法及实践,如有错误或者不恰当处,还望海涵,帮忙指出,也欢迎留言讨论,邮箱地址laoxilaoxi@foxmail.com,下次一起讨论一下更新余额方式之外的热点账户的一些看法。

    环境:Spring + Mybatis + DB2
---------------------
作者:laoxilaoxi_
来源:CSDN
原文:https://blog.csdn.net/laoxilaoxi_/article/details/80963905
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/coolgame/p/10034047.html

http://www.lbrq.cn/news/1586665.html

相关文章:

  • 做网站风险分析/互联网营销师怎么报名
  • 济南mip网站建设公司/开封网络推广哪家好
  • 首页设计说明/谷歌seo推广服务
  • 从化b2b网站建设公司/免费软文推广平台
  • 网站界面设计要求/茶叶seo网站推广与优化方案
  • 合同下载 公司网站/怎么样推广自己的公司
  • 常用来做网站首业的是/谷歌seo新规则
  • 网站空间ip需不需要备案/技术短期培训班
  • 定制高端网站/汉川seo推广
  • 请问做网站需要什么软件/友情链接检测
  • 绞铜机 东莞网站建设/今日头条军事新闻
  • 网站选项卡如何做自适应/搜索引擎营销的模式有哪些
  • 手机网站jquery底部导航菜单/深圳海外推广
  • java mysql 网站建设/今日热点新闻事件简介
  • 淘宝优惠券网站怎么做 知乎/seo深圳培训班
  • 联图二维码生成器/网站seo技术
  • 昌乐网站建设/青岛最新消息
  • 国外建设网站流程/百度竞价排名广告
  • 青岛公司网站建设/站长工具网
  • 北京网站建设的价格天/seo对网店推广的作用
  • 做卖挖掘机的网站/搜狗推广登录平台官网
  • 网络营销的理论基础有哪些/seo sem什么意思
  • 怎么做直播室的网站/大连网站优化
  • 给政府做网站/品牌营销策划包括哪些内容
  • 网站网页设计模板下载/互联网广告平台有哪些
  • 本科学计算机是做网站吗/湖南产品网络推广业务
  • web网站开发用什么软件/手机网站怎么优化关键词
  • 企业网站建设 法规/打开百度搜索引擎
  • 没有公司个人可以做网站卖东西吗/潍坊seo教程
  • 赤峰网站建设red/如何做网站推广
  • 手机拍照识别中模糊场景准确率↑37%:陌讯动态适配算法实战解析
  • 使用Prometheus + Grafana + node_exporter实现Linux服务器性能监控
  • 透明矿山:科技重塑矿业未来
  • 网页前端CSS实现表格3行平均分配高度,或者用div Flexbox布局
  • 《算法导论》第 8 章—线性时间排序
  • Lesson 31 Success story