【油价】负油价甩锅程序员?( 二 )
在本文“千年虫”、“负油价”的讨论范围内 , 这种平衡术就要求系统设计者在健壮性、容错性与连续性之间做出平衡 。 如果一味强调健壮性 , 那么一旦系统发生错误 , 就很可能让错误扩大 , 酿成更大危机;如果单纯追求容错性 , 那么经常带病上岗的系统 , 健壮性又不会太强 。
比如对于负油价的例子 , 我们看到绝大多数与WTI连接的系统 , 在合法性检查时 , 都会拒绝发送价格为负值的请求 , 正是这个原因造成原油宝无法正常平仓 , 不过这个锅不能完全由程序员来背 , 因为不能确定发送负油价请求到交易所 , 会产生何种后果 。 因此这时到底选择容错性还是健壮性其实也未为可知 。
再举一个电竞的例子 , 在王者荣耀的比赛中到底是选择以孙膑为核心的容错体系 , 还是选择以后羿为核心的硬刚体系 , 就是在做这样的平衡 。 以健壮性为第一目标的体系 , 特别容易因为C位的倒地而猝死;容错性为核心的体系则容易被对手在前期就积累优势 , 从而不断被滚雪球 , 最终慢性死亡 。 所谓一代版本一代强 , 最终的版本之子 , 往往游戏的设计者都不能预测 , 所以也可以看到现在基本主流的即时战略和MOBA类游戏厂商都会有体验服 , 以提前获取游戏平衡性调整的资料 , 仅靠纸上谈兵几乎无法预测实际情况 。
所以复杂系统只能做平衡 , 十全十美的策略并不存在 。
本文插图
取舍-系统的应对之道
虽然从某种程度上讲千年虫与负油价都是边界的问题 , 但是千年虫对于其跨越1999年的行为是可以提前预期的 , 而负油价却不行 。 一个属于已知行为的异常 , 一个属于不可预期的异常 , 因此要应对危机 , 首先要了解异常与错误的类型 。
已知异常:最具代表的例子就是千年虫了 , 一般是由于系统设计时忽略的问题或者其它已知问题引起的 , 也被称作检查性异常 。 比如我们现在乘坐飞机火车都需要查验身份证件 , 对付这类异常都需要有对应的预案或者处理流程 。 对于系统整体来讲 , 服务不应该因此类异常中断 。
未知错误:这种情况一般是由系统设计时无法预期的边界而产生的 , 系统设计人员无法将系统运行时所遇情况考虑完整 , 未知错误出现后到底是让程序继续运行 , 还是崩溃蓝屏退出 , 其实是健壮性与容错性之间的抉择 。
重要错误:如堆栈溢出 , 磁盘IO错误等等 , 遇到此类错误到底是立即蓝屏或者崩溃以防事态扩大 。 但是未知错误与重要错误往往边界不清 , 处理逻辑也很麻烦 。
复杂系统的异常处理原则就是做好检查性异常的处理流程 , 不过这其中的处理方案其实非常难以取舍 。 只能提示尽量使用Java中Finally的机制 , 以便保存好错误现场情况后续复盘 , 出现不可预期的问题时尽快提示人工介入兜底 。
本文插图
本文插图
本文插图
今日福利
遇见大咖
由 CSDN 全新专为技术人打造的高端对话栏目《大咖来了》来啦!
【【油价】负油价甩锅程序员?】CSDN 创始人&董事长、极客帮创投创始合伙人蒋涛携手京东集团技术副总裁、IEEE Fellow、京东人工智能研究院常务副院长、深度学习及语音和语言实验室负责人何晓冬 , 来也科技 CTO 胡一川 , 共话中国 AI 应用元年来了 , 开发者及企业的路径及发展方向!
推荐阅读
- 财联社-深度|OPEC+ 视频会议临近 延长减产协议预期推升油价至近三月新高
- FX168财经|欧佩克+产油国或在6月4日举行线上会议 油价续刷3月中旬以来高位
- 华尔街见闻|沙俄接近达成延长减产协议 油价企稳
- 汇通网|创历史最大月度涨幅后,油价继续上涨
- 中新经纬外媒:预计年内油价逐步上升,但难超40美元/桶
- 有料财经|五月原油大涨91%!今日加油站最新油价信息,6月国内油价调整在即
- 今日油价查询|全国最新油价调整消息:5月27日调整后:全国92、95号汽油价格表
- 油价|番禺一油站92号汽油价格低至4.03元u002F升
- 周五|油价又创下一个历史纪录!这次是大涨88%!更值得关注的是…
- 今日油价查询|「油价大跌」超1.4元/升,创2016年来新低油价,下次调整要涨?
