当前位置:网站首页>架构篇(二)架构的复杂度来源
架构篇(二)架构的复杂度来源
2022-08-11 02:07:00 【林木森^~^】
上一篇我们谈到,架构的本质就是解决业务和技术变化带来的复杂性。
那这一篇我们来谈一下复杂性到底来自于哪里。
业务复杂性
系统首先要满足当前的业务需求,在此基础上,还要满足将来的业务需求,因此系统要能不断地扩展变化,包括调整现有功能,以及增加新功能。
而且,系统的功能变化不能影响现有业务,不要一修改,就牵一发动全身,到处出问题。因此,在架构设计上,要做到系统的柔性可扩展,能够根据业务变化做灵活的调整。
此外,市场不等人,上新业务要快,之前花了半年上了个业务,这回再上个类似的新业务,需要短时间就能落地。因此,架构设计上,还要做到系统功能的可重用,这样才能通过快速复用,实现业务敏捷和创新。
技术复杂性
要保证一个业务能正常运行,除了满足业务功能之外,还要保证这个系统稳定可用。
一个复杂系统是由很多部分组成的,如应用程序、服务器、数据库、网络、中间件等,都可能会出问题。那怎么在出问题时,能够快速恢复系统或者让备用系统顶上去呢?
还有流量问题,平时流量不大,少量机器就可以处理,但在大促的时候,大量流量进来,系统是不是能够通过简单地加机器方式就能支持呢?
此外还有低成本的问题,系统能否做到,使用廉价设备而不是高大上的IOE设备,使用免费的开源组件而不是昂贵的商业套件,使用虚拟化技术而不是物理机,并且在流量低谷和高峰的不同时期,让系统能够弹性缩容和扩容呢?
因此,一个好的架构设计既要满足业务的可扩展、可复用;也要满足系统的高可用、高性能和可伸缩,并尽量采用低成本的方式落地。所以,对架构设计来说,技术和业务两手都要抓,两手都要硬。
边栏推荐
- Mysq_Note4
- 颠覆性创新招商,链动2+1是个怎么样的制度模式?
- MySQL基础篇【第一篇】| 数据库概述及数据准备、常用命令、查看表结构步骤
- 微信公众号后台管理
- Detailed explanation of common methods of filtering matrix (array) elements in Matlab
- mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
- 基于 HPSO 与多核 LSSVM 的网络入侵检测
- nvidia-smi详解
- [The method of calling the child page from the parent page of the iframe] Stepping on the pit: It is the key to use `[x]` when getting elements. You cannot use `.eq(x)`, otherwise it will not be obtai
- Alibaba 最新神作!耗时 182 天肝出来 1015 页分布式全栈手册太香了
猜你喜欢
WeChat public account background management
FPGA learning column (xinlinx) serial communication -
如何防止离职员工把企业文件拷贝带走?法律+技术,4步走
漏洞管理计划的未来趋势
联盛德W801系列6-从微信小程序的角度来分析W801的蓝牙通信源码(indicate方式)
MySQL基础篇【第一篇】| 数据库概述及数据准备、常用命令、查看表结构步骤
Deep Learning [Chapter 2]
导入数据包上传宝贝提示“类目不能为空”是什么原因,怎么解决?
22-7-31
How to solve the problem of Tomcat booting and crashing
随机推荐
GBJ3510-ASEMI家电电源用整流桥GBJ3510
Pytorch/TensorFlow/Numpy常用函数汇总
leetcode 739. Daily Temperatures 每日温度(中等)
Detailed explanation of common methods of filtering matrix (array) elements in Matlab
MySQL Basics [Part 1] | Database Overview and Data Preparation, Common Commands, Viewing Table Structure Steps
超声三维重建总体架构
13.cuBLAS开发指南中文版--cuBLAS中的Level-1函数copy()和dot()
Matlab矩阵(数组)元素过滤常见方法详解
软件测试面试题:验收测试包括哪三种类型?
ora-00001违反唯一约束
paddle2.3和torch1.8在SentenceBert上的性能对比
FPGA学习专栏-串口通信(xinlinx)
软件测试面试题:软件测试的过程的V模型,说出它的缺点?
一次简单的 JVM 调优,拿去写到简历里
Geogebra 教程之 04 Geogebra 小程序
导入数据包上传宝贝提示“类目不能为空”是什么原因,怎么解决?
MySQL中的DDL常规操作总结
从键入网址到网页显示的详细过程
php 判断数组是否为多维数组
【备战“金九银十”】2022年软件测试面试题最新汇总