Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >系统架构和代码实现的高可控性

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

作者头像
技巅
发布于 2018-05-25 06:19:56
发布于 2018-05-25 06:19:56
1K0
举报
文章被收录于专栏:技巅技巅

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年9月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
软考复盘:系统架构设计师核心考点总结
这里,我总结了一下软件架构设计这一部分的关键内容,它们值得每个备考的人反复记忆甚至背诵。
Edison Zhou
2023/03/06
1.5K0
软考复盘:系统架构设计师核心考点总结
软件架构发展历程分享
架构的形式与特点 设计文档和代码 我们一般说的架构既包括架构的设计过程,也包括设计的产出物,一般可以包括各类设计文档、设计图,也可以包括一些技术验证代码、Demo 或者其他相关程序。文档的目的在于准确记录我们的思维产物,在软件尚未实现时,作为指导蓝图,尽量精确的描述清楚软件。 在软件的实现过程中,可能随时随着我们的深入研究,根据具体情况对文档做出局部的一些调整和修改。文档作为结项或交接的一部分,也是整个软件项目的产出物的一部分,成为公司 IT 资产的有机组成部分。 架构服务于业务 正如19世纪的伟大建筑
CSDN技术头条
2018/04/18
1.4K0
【新版系统架构】系统架构设计师教程全篇知识点提炼
1、架构体现在组件中的一个系统的基本组织、彼此的关系和环境的关系及指导它的设计和发展的原则 2、系统是组织起来完成某一特定功能或一组功能的组件集 3、环境或者上下文决定了对这个系统的开发、运作、政策以及会对系统造成其他影响的环境和设置 4、任务是由一个或多个利益相关者通过系统达到一些目标的一个用途或操作
阿提说说
2023/10/16
5.8K0
【新版系统架构】系统架构设计师教程全篇知识点提炼
系统架构师2023年案例分析考前
系统开发基础:UML建模(UML类图、用例图、状态图等)、数据流图、设计模式、ER图
小马哥学JAVA
2022/12/15
6820
工作十年,在腾讯沉淀的高可用系统架构设计经验
👉腾小云导读 在系统的开发过程中,很多开发者都为了实现系统的高可用性而发愁。本文从研发规范层面、应用服务层面、存储层面、产品层面、运维部署层面、异常应急层面这六大层面去剖析一个高可用系统的架构设计需要有哪些关键的设计和考虑。希望腾讯的经验方法,能够给广大开发者提供参考。内容较长,您可以收藏后持续阅读。 👉看目录点收藏,随时涨技术 1 高可用系统的架构设计思想     1.1 可用性和高可用概念     1.2 高可用系统设计思想 2 研发规范层面     2.1 方案设计和编码规范     2.2 容量规划
腾讯云开发者
2023/03/14
5.5K0
工作十年,在腾讯沉淀的高可用系统架构设计经验
系统架构设计师|关于系统架构(上)
系统架构是系统的一种整体的高层次的结构表示,是系统的骨架和根基,其决定了系统的健壮性和生命周期的长短。
六月暴雪飞梨花
2024/08/19
8270
系统架构设计师|关于系统架构(上)
不当愣头青、聊聊软件架构中的那些惯用的保命手段
抛去吃瓜的爽文成分,深入其内核,我们不难发现,小米SU7备用电源的设计思路,在软件领域有着广泛的共鸣和深刻的意义。在软件开发与设计的广阔天地里,面对的是一个充满变数的世界,其中既包括普通用户的日常操作,也涵盖了网络故障、硬件崩溃乃至恶意攻击的种种挑战。按照墨菲定律的阐述,只要概率大于0%的事情就很容易会发生(说的通俗点,就是怕什么就会来什么)。做好异常场景的应对,是一个成熟程序员的进阶必修课,也是一个软件系统线上平稳运行的内在基石。
是Vzn呀
2024/11/13
1030
不当愣头青、聊聊软件架构中的那些惯用的保命手段
【系统架构】第一章-绪论
1、架构体现在组件中的一个系统的基本组织、彼此的关系和环境的关系及指导它的设计和发展的原则 2、系统是组织起来完成某一特定功能或一组功能的组件集 3、环境或者上下文决定了对这个系统的开发、运作、政策以及会对系统造成其他影响的环境和设置 4、任务是由一个或多个利益相关者通过系统达到一些目标的一个用途或操作
阿提说说
2023/10/16
2920
【愚公系列】软考高级-架构设计师 100-软件系统属性
软件系统的属性可以从多个角度来理解和分类,包括功能性、性能、维护性、可移植性、可靠性、安全性等。以下是一些主要的属性及其解释:
愚公搬代码
2024/08/10
2580
谈谈异地多活架构
无论是高可用计算架构,还是高可用存储架构,其本质的设计目的都是为了解决部分服务器故障的场景下,如何保证系统能够继续提供服务。但在一些极端场景下,有可能所有服务器都出现故障。例如,典型的有机房断电、机房火灾、地震、水灾……这些极端情况会导致某个系统所有服务器都故障,或者业务整体瘫痪,而且即使有其他地区的备份,把备份业务系统全部恢复到能够正常提供业务,花费的时间也比较长,可能是半小时,也可能是12小时。因为备份系统平时不对外提供服务,可能会存在很多隐藏的问题没有发现。如果业务期望达到即使在此类灾难性故障的情况下,业务也不受影响,或者在几分钟内就能够很快恢复,那么就需要设计异地多活架构。
iMike
2019/06/02
3.4K0
系统架构设计师|关于系统架构设计师(下)
本篇为系统架构设计师的第二篇,主要说说何为系统架构设计师,他与系统架构之间的关系以及如何成为系统架构设计师,如有描述不清,还望指出。
六月暴雪飞梨花
2024/08/20
8240
系统架构设计师|关于系统架构设计师(下)
25年5月软考架构师论文预测
论文题目方才在3月初,就确定了的,就是新八大架构中的 云原生、大数据架构、微服务、安全架构、层次架构。
方才编程_公众号同名
2025/04/29
3320
25年5月软考架构师论文预测
【愚公系列】软考高级-架构设计师 101-系统架构评估
系统架构评估(System Architecture Evaluation)是一种系统化的方法,用于分析和评估软件系统的架构设计,确保其满足预期的质量属性和需求。
愚公搬代码
2024/08/11
8280
高可用架构之异地多活
当谈到架构的高可用时,无论是高可用计算架构,还是高可用存储架构,其本质的设计目的都是为了解决部分服务器故障的场景下,如何保证系统能够继续提供服务。但在一些极端场景下,有可能所有服务器都出现故障。例如,典型的有机房断电、机房火灾、地震、水灾……这些极端情况会导致某个系统所有服务器都故障,或者业务整体瘫痪,而且即使有其他地区的备份,把备份业务系统全部恢复到能够正常提供业务,花费的时间也比较长,可能是半小时,也可能是一天。因为备份系统平时不对外提供服务,可能会存在很多隐藏的问题没有发现。如果业务期望达到即使在此类灾难性故障的情况下,业务也不受影响,或者在几分钟内就能够很快恢复,那么就需要设计异地多活架构。
架构狂人
2023/08/16
5250
高可用架构之异地多活
春节引流活动百万级高并发、高性能下单系统架构设计和实现
百万级高并发规模是整个电信行业前所未见的,放眼整个互联网行业这种规模也是极少出现的量级,高并发架构设计不能简单的根据已有的其他行业的经验进行借鉴,需要根据实际业务功能进行设计和实现。业务上,对各功能模块进行拆分、解耦是整个设计的基础,技术上,需要根据业务尽量将流程设计成异步化、服务化,数据存储和处理方面引入分布分表、读写分离、缓存技术,总体设计上考虑分布式、云化、容器化部署方式,同时为了防止出现故障引入监控功能和熔断机制。所有的系统都不是万无一失的,所以设计过程还需要考虑故障的自动恢复以及应急预案处理。
武宗涛
2024/12/26
1360
微服务的风险:分布式固有的复杂性、服务的依赖性及雪崩效应
在微服务架构下,传统的单体应用被拆分为多个服务后,服务的数量变多了,同时之前单体架构下进程内部的方法调用转变为分布式网络环境下的远程调用,因此构建分布式微服务系统带来了额外的开销。
愿天堂没有BUG
2022/10/28
6310
微服务的风险:分布式固有的复杂性、服务的依赖性及雪崩效应
系统架构基础知识入门指南-上
接上一篇文章《为什么测试要了解系统架构》的内容,这篇聊聊如何掌握基础的系统架构知识。
老_张
2024/04/15
2360
系统架构基础知识入门指南-上
猫头虎分享: 探索软件系统架构的革新之路
在这篇博客中,我们将深入探讨软件系统架构的发展与革新。从单体应用到微服务,再到云原生架构,每一步都标志着技术的进步和思维的转变。对于软件工程师、架构师以及技术爱好者而言,这篇文章将提供关键的知识点和技术细节,帮助理解和把握架构设计的脉络。涵盖了微服务、容器化、DevOps、云计算等多个关键词,本文将是你理解软件架构演变的完美指南。
猫头虎
2024/04/07
1690
猫头虎分享: 探索软件系统架构的革新之路
为什么需要关注软件架构
作者 | Pierre Pureur, Kurt Bittner 译者 | 明知山 策划 | 丁晓昀 许多软件开发人员不信任架构实践,他们将这些实践与严格和专横的过程以及重要的前期规划和设计联系在一起。 因此,他们相信,如果他们遵循这些实践,可能需要很长时间才能交付一些甚至可能不是客户想要的东西。 他们更愿意专注于理解客户的需求,并通过小而快速的敏捷迭代过程来交付产品。 他们当中有一些人相信,只要遵循了这些过程,架构自然会“出现”,而不需要有意识地进行计划或架构设计。因为存在这些信念,他们可能不认
深度学习与Python
2023/03/29
5880
为什么需要关注软件架构
5分钟了解系统架构设计(2)
最近梳理了之前学习的架构设计相关的一些课程学习总结,将其整理成了一个大纲脑图,以每篇5分钟系列展现出来,希望对你有所帮助。
Edison Zhou
2022/12/16
4000
5分钟了解系统架构设计(2)
推荐阅读
相关推荐
软考复盘:系统架构设计师核心考点总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档