
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习计算机编程开发技术,而本文我们就通过案例分析来简单了解一下,软件系统开发需要注意哪些问题。
一:负负得正
假如我们看到某个代码,明显有逻辑错误,想随手改改。你就要一件事情:这段明显有问题的代码为什么在线上运行着没有人来报bug?有一种正常运行叫做【负负得正】。如果把错误的逻辑改对了反而可能引起问题。
这种问题要避免好的时机是初版设计和开发阶段就避免。除了设计阶段逻辑要清晰,代码要做好审查、加上单体测试等测试手段外,可以将中间结果用debug日志打印。建议自测阶段多用debug级别日志跑几遍,进行观察。
二:终态设计
在分布式系统中,由于系统是分布在不同机器上的。还可能有一种状态叫:超时。成功、失败和超时是分布式系统调用的三态。
超时不是终态,而是一种中间状态:终有可能下游是成功了,也有可能是失败了。这时候我们需要在超时之后推定一种状态,推定成功或者失败。究竟是成功还是失败因功能而异。
比如付款操作,需要推定失败。如果不知道是否成功就推定是成功的,那用户可能没有付款就拿到了商品或者享受了服务,商家就会资金损失。推定失败让用户再次支付,终通过查询或者对账发现用户实际是支付成功的,可以再把钱给用户退回去,保证交易的公平性。
退款恰恰相反,需要推定成功。告诉用户,钱退给你了。终通过查询或者对账发现实际是退款失败了,可以系统重新发起退款,直到真正退成功为止。
后台管理系统也很需要这种终态设计。比如发布系统,发布了一个功能,发布系统如果出现了问题,这次发布没有结束。用户可能没有办法进行下一次发布。这时候可以设置超时自动结束,防止未结束的流程始终在那里。
三:长尾效应
之所以对同一个请求性能差距很大,原因很多,常见的有服务过载和队列过长。如果长尾处理不好,有可能上游判定超时,导致请求失败,影响正确性。需要系统处理好超时和重试。
四:存储周期
数据库、应用系统的磁盘都是宝贵的资源。数据不能无限期存储不做清理。清理的周期是一个重要的方面。因为这涉及对用户的承诺。
对数据库来说,比如交易库数据半年清理一次。那就要跟用户说清楚半年以上的交易不允许退款。因为原交易已经不在数据库,而是归档到大数据了。
对磁盘来说,如果应用日志是30天清理一次。那就要跟用户达成一致,非重大问题30天以上的不予追溯。为什么这里说重大问题呢,其实很多公司磁盘清理了,数据在hbase等大数据设备里还是有留存的。只是查询没有磁盘日志便利。
五:AKF扩展
X轴——代表无差别的克隆服务和数据,工作可以很均匀的分散在不同的服务实例上;
Y轴——关注应用中职责的划分,比如数据类型,交易执行类型的划分;
Z轴——关注服务和数据的优先级划分,如分地域划分。
白话来说:X轴拆分就是通过加机器水平拆分,就是横向扩展;Y轴拆分就是按业务逻辑垂直拆分;Z轴拆分就是按照算法进行分片,这个算法比如按地域,不同地域访问不同的分片或者服务。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。