专栏首页技巅系统架构和代码实现的高可控性

系统架构和代码实现的高可控性

    在软件系统架构和实现领域,大家都比较注重高可靠性、高性能、高并发。今天我想从另外一个维度说说软件系统架构与实现,那就是高可控性。为什么高可控性如此重要?因为一旦一个系统失去控制,就没有人能够评估出会产生什么样的结果。例如一个海量数据传输系统,如果不能对流量进行很好的控制,那么当大数据量来时可能把某台集群网络打满,也可能把一个交换机的网络io打满,也有可能把整个机房网络打满,导致整个机房瘫痪。

    今天我就从系统架构和代码两个层面说说怎样做到高可控性。第一,作为一个合格的系统架构师在做架构设计时,不能只把能够实现功能的架构设计出来就可以了,还必须要考虑到每一个模块出现各种问题所面临的场景,针对这些场景做容错设计。当然不是所有的问题都能够有容错方案,但是自己心里一定要清楚出现问题所带来的后果和怎样快速的解决问题,恢复系统。例如某一个模块出现问题不可用了,是会影响系统的主要功能还是辅助功能,如果是主要功能是否需要ha方案,如果是辅助功能是否可以直接降级等。一句话,在整个系统中每一种异常情况和问题都能够在你的掌控范围之内。第二,代码层面的可控性。这一点主要针对编写代码的实现者,你必须要对某一行代码可能带来的效果和问题都需要有充分的理解。很多人可能会问,自己写的代码肯定知道怎么回事。我看未必,很多人写代码只考虑把功能实现,其实不知道这些代码背后在不同场景下是有不同表现的。例如内存不够了,你申请内存失败;写文件由于锁阻塞了;发送网络io数据,网络掉线了等 这些都还是最基本的异常情况,更深入或者更难的是,现在大家都用成熟的开发库和框架,大部分人只掌握这些代码库和框架的基本功能,不理解背后的实现原理,可能在某种情况下就不是我们预期的结果。这些问题经常出现在代码库和开发框架本身有bug的情况下,只是在特殊场景触发而已。所以要对代码的绝对可控需要掌握的东西也很多,但这就是区分大牛和菜鸟的本质内容。对系统架构和代码绝对的高可控性有什么好处?其实是显而易见的,没有任何系统不出问题。但是出现问题以后你能不能马上的控制住局面并且快速的解决这就要看你对系统和代码的可控性程度了。

    在现实工作中,很多系统出现小问题,由于对系统不可控,导致问题的进一步扩大,也由于对系统不可控很久都找不到问题,更不用说解决问题了。对代码不可控,出现问题时只能慢慢的去重新看代码,做各种假设和验证。但是话说回来,要对整体系统架构和代码可控也不是那么简单,因为现在系统架构用到太多的开源系统,要对这些开源系统很好的掌握本身就很难,你的系统架构在各个操作系统之上,操作系统也可能出现问题。代码级别的也一样存在各种困难。所以要做到尽可能对系统可控,需要我们掌握更多的技能和知识,这也是菜鸟到大牛的转变过程。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 毕业工作五年的总结和感悟(中)-公有PAAS平台

    技巅
  • 毕业工作五年的总结和感悟(上)

    技巅
  • 一个大型互联网公司高级技术的远程面试题目和解答过程以及源代码

    技巅
  • 如何用PEP 8编写漂亮的Python代码

    Pep 8的存在是为了提高Python代码的可读性。但为什么可读性如此重要呢?为什么编写可读的代码是Python语言的指导原则之一?

    Python知识大全
  • 微分享回放 | 提高系统开发效率的“银弹”——X-series可视化大规模应用开发工具集

    作者简介 赫杰辉,携程框架研发部高级研发经理,负责携程DAL组件开发与推广。 在开发一线奋战多年的老兵,热爱中国传统文化和推广开源软件,希望用自己开发的工具为...

    携程技术
  • 感悟1

    转眼间已经毕业3年了,从13年工作算起也算是工作5年多了,期间做过android、 flex 、c#、前端偏js、Java、半运维。最终还是选择了曾经最讨厌的J...

    日薪月亿
  • 如何培养良好的编程习惯?

    首先你的项目结构要清晰,养成良好的文档结构分类习惯是很有必要的,举个最简单的web网站项目。

    Bug生活2048
  • 为什么大公司还在用过时的技术?

    本文出自一朋友给我的提问,于是博主呕心沥血给他花式洗脑了几个小时。忽然发现,应该还有许多朋友有同样的疑问。所以整理成文。

    Java技术栈
  • 【每周一坑】注册表单验证

    长假过后,大家都缓过神来了吗?在这里祝大家上班快乐~ 今天来个应用题。在使用各种网站和应用时,少不了要注册账号,这种注册表单大家应该屡见不鲜了吧。 ? 一般这些...

    Crossin先生
  • 为你揭秘全球最大软件公司的代码评审机制

    微软代码评审是一种被广泛采用的工程实践。成千上万的工程师认为这是一个伟大的最佳实践。大多数高绩效团队花费大量时间进行代码评审。

    IT大咖说

扫码关注云+社区

领取腾讯云代金券