自己原文公众号: https://mp.weixin.qq.com/s/FRcxNQGWjui2LCpOE8FaZA
前几天和以前同事吃饭。他们也是刚毕业后不 久就跟着我,可以说是我带的。现在都在各自领域负责技术。我问其中一个他们现在业务规模,他们峰值有1000笔秒。(这里不方便说具体数字)你就算一天86400秒都是峰值那就9千万笔交易。实际一定没有9000万,但是千万级别一定有的。(一个Oracle的RAC一天做几千万真不叫事,当然其他的数据库产品也有可能,我仅仅说设计的好的话,其他的数据库也能支持)
我想起我以前经历过,我问一个系统的开发负责人,你们系统忙不忙?他说不忙,我说我看后台你的总资金11亿了。他说嗯,其中有一笔就1个亿。这里你可能觉得是笑话,但是我说的是衡量一个系统是不是繁忙不能看总成交额,而是应该看笔数。
随着每次付款听到的,支付宝到账,微信到账,收钱吧到账。这些都是OceanBase、TDSQL、Oracle(第三方支付以及聚合支付我猜还是Oracle的多)这些后台的成交压力。再简化的流程也是要记录,那年那月那日用户A向用户B付钱的insert,以及update减账户余额,这两步是少不了的。如果是支付宝、微信分别的内部转还要去update对方余额。如果是第三方的话,那么第三方要去做update动作。
做过计算机的都知道,买一块饼干(假如5元)和买一吨煤(假如5万元)对系统的冲击是一样的。所以如果有两个个系统说A系统一天交易额100亿元,交易笔数100笔。B系统一天交易10亿元,交易笔数1亿笔。显而易见B系统的压力高,难度大。而A系统说实在的,一个人也做的过来。实在不行,那就2个人。
所以我们不要听每天的交易金额,而是应该看交易量,才是判断系统负荷的标准。
此外还要看。如果两个外卖系统(场景和规模都差不多的前提下)外卖就是这样。A系统用了1万台服务器支持了现在业务,B系统用了10万台服务器支持了现在业务。那么显然A系统的开发和运维水平高出B系统几个档次。因为他们用了更合理的资源,或者是优化的技术手段做到了同样的效果。
以前总有人问如何管理几百个库(首先阿里 腾讯这种上百万台数据库的我管理不好,能力有限,有那个本事我就去那里了)但是一般的企业上千个数据库了不起了。一般都是几十到上百。其实这种我还是有不少经验的。
遵守开发规范,合在一起就方便管理了。单机最好了(为了安全,高可用和容灾也是要的)所以严谨一点说单套是最好了。
因为我们大多数企业没有每天1亿笔订单或者交易。而每秒1000对数据库来说是没有太大压力的。
你看12306春运,发送旅客几亿人次,那就是几亿订单啊。因为还有退改签的再乘以30%吧。
而支付宝 微信都有8-9亿用户。平均每人一天5笔左右交易吧。一天50亿笔差不多吧。这种属于极个别,我们不讨论这个。
想想以前我们做公安系统记录人车,一天随随便便就是5000万记录,单机Oracle。还是X86服务器。 一天一亿记录的时候是小型机。而这些新增的那就是交易笔数,就是系统压力。
