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

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

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序猿DD

请不要在“微服务”的狂热中迷失自我!

2017年是“微服务”疯狂的一年,如同股灾前的狂欢,各种不同行业的技术团队都在宣讲着自己微服务实践的道路。然而大家是否有反思过自己真的在玩“微服务”吗?您真的在...

4155
来自专栏云计算D1net

基础设施即代码让混合多云管理更为复杂

对于任何一个力,都存在着一个与其大小相等方向相反的反作用力。这个物理学上的牛顿第三定律也同样适用于IaC:虽然这一服务是有优势的,但它也带来了一些问题。 本文是...

2818
来自专栏携程技术中心

干货 | 携程机票无线测试技术与效能提升

作者简介 罗昭君,携程机票无线高级测试经理,负责机票移动端功能测试、自动化测试、平台开发等。从事开发、测试工作近12年,先后在阿里巴巴、携程任职。 一、敏捷下移...

3045
来自专栏Java进阶架构师

「架构技术专题」总结:共计7篇阐述架构技术之美

详解架构中五个重要的核心指标:性能、可用性、伸缩性、扩展性和安全性。我们究竟如何把握?

1333
来自专栏直播系统源码

搭建直播平台过程中的全能“辅助”——流媒体服务器

直播在经历了爆发式增长后,在互联网领域中呈现出稳步增长的状态。前期观望许久的创业开发者们认为“火候到了”,纷纷开始将搭建直播平台项目提上日程。对于平台搭建来讲,...

2640
来自专栏Java学习网

论编程的最后期限

普通编程与专业编程之间有很多差别,而最为显著的就是截止日期。 截止日期 / 最后期限   当你给自己写程序的时候,只要你愿意,就可以用很多(或者很少)的时间来...

3387
来自专栏大数据

适合初学者的软件定义数据中心架构

软件定义数据中心是一种数据管理方式,它通过虚拟化来抽象计算、存储和网络资源,并将其作为服务提供。为了促进这一过程,SDDC包括智能软件以集中管理虚拟化资源,并自...

2137
来自专栏技术墨客

multi-tenant solution(多租户方案)说明

今天在研究vertx-Metrics时碰到了一个multi-tenant solution的概念,特此整理记录相关资料。

2092
来自专栏程序你好

微服务开发中5个惨痛教训

基于微服务的开发正在改变我们整个行业,超过70%的人正在尝试开发基于微服务的软件。微服务简化了业务、流程、技术和人员的集成,将大爆炸的整体问题分解为一个可以独立...

1053
来自专栏大数据挖掘DT机器学习

大数据架构和模式(三)——理解大数据解决方案的架构层

作者:Divakar Mysore等 来源:DeveloperWorks 摘要:大数据解决方案的逻辑层可以帮助定义和分类各个必要的组件,大数据解决方案需要使用...

3554

扫码关注云+社区

领取腾讯云代金券