阿里毕玄:系统设计之系统建设的目标

简介: 本文为系统设计系列的第二篇,目标是否可衡量以及如何跟踪效果,会很大程度决定最后做出来的系统和目的是否能对齐。

作者:毕玄   
文章来源:微信公众号HelloJava

本文为系统设计系列(按照系统建设的目的->系统建设的目标->实现目标面临的核心问题->解决问题的设计->形成设计原则)的第二篇,目标是否可衡量以及如何跟踪效果,会很大程度决定最后做出来的系统和目的是否能对齐。

最近面试了不少架构师,更觉得<系统设计之系统建设的目的>这篇文章是值得再提下的,系统建设的目的是用来理解为什么要建设系统,到底是为了解决目前业务上面临的什么挑战,这是为了避免技术一端纯粹为了技术而技术,以及没和业务面临的主要挑战对齐的现象。

在分析清楚了系统建设的目的后,到了目标这个环节,最重要的是要把前面的目的的描述,转换为可衡量的目标的描述,之所以要形成可衡量的目标,最重要的原因是为了确保最后实现的系统是达成了系统建设的目的的,相信很多人都碰到过设计出来的系统和最后落地的系统很不一致的现象,通常这都是缺乏了可衡量的目标造成的。

举两个例子说下:

第一个是2011年做容器化,建设这套系统的目的是为了应对预计会越来越大的机器成本,目标相应的制定为支撑相同的业务量,机器下降一半。

第二个是2013年做异地多活,建设这套系统的目的是为了能够让业务具备更强的抵御灾害的能力,尽管后面发现因为有了异地多活,有了更多的好处,但那些确实在系统设计之初是完全没放在建设目的里的,后面能做到纯属巧合,例如因为有了异地多活使得后面的弹性借助云资源成为了现实,因为有了异地多活,基础设施技术的演进可以更加快速,在设计之初根据目的相应制定的目标为业务能够部署在中国多个地点(地点间距离>1千公里),多个地点部署的业务都处于承接流量的状态,且流量从A点切换到B点能在30s内完成。

有了清晰的可衡量的系统建设的目标,意味着:

  1. 确保了系统设计过程中可以非常针对性的围绕目标来做,避免偏题;
  2. 更重要也是最容易遗漏的一点,是可以做一个用来跟踪系统建设效果的系统,例如之前做容器化,我们会有一个展示,是容器化后的集群多少机器支撑了多少的业务量,和目前还未容器化的集群的一个对比;异地多活,会有一个管控系统,用来展示系统的部署情况,以及流量切换。 只有有了跟踪系统建设目标是否达标的系统,才能真正确保系统建设完毕后和初心保持了一致,否则很多系统建设的时候是一个目的,最后做完了是另外的状况,所以这个跟踪效果的体系是一定要在系统建设的时候同步就做好的。

从目的->目标这个部分,理论上并不复杂,但也很容易漏掉,导致后面的系统设计环节出问题,关键是要形成可衡量的目标,以及相应的跟踪目标达成情况的系统。

有了目标后,就要进入分析要达到目标,面临的核心问题的环节了,下回接着讲。

这个系列的文章会按照聊聊系统设计的套路来写,写的时候会理论结合实践,实践主要是讲我自己在相应的点上的一些经历:

  1. 系统设计之系统建设的目的
  2. 系统设计之系统建设的目标
  3. 系统设计之达成目标的核心问题 - 本文
  4. 系统设计之解决核心问题的设计
  5. 系统设计之设计原则
相关文章
|
Java 程序员
收藏!阿里毕玄16篇文章,深度讲解Java开发、系统设计、职业发展
阿里毕玄结合自己的经历深度讲解Java开发、系统设计、职业发展等问题,快来一键收藏吧。
35521 1
|
SQL 监控 关系型数据库
MySQL慢查询攻略
本文详细介绍了MySQL慢查询优化的全流程,从定位性能瓶颈到具体优化策略,再到高级调优与预防监控。首先通过开启慢查询日志和分析工具(如pt-query-digest)找到问题SQL,接着从索引优化(如最左前缀原则、覆盖索引)、SQL语句重构(如避免全表扫描)及EXPLAIN执行计划解析等方面进行核心优化。随后深入参数调优和架构升级,如调整innodb_buffer_pool_size、实施分库分表等。最后,通过实时监控工具(如PMM、Prometheus+Grafana)建立长效机制,并以电商订单查询为例,展示优化前后性能大幅提升的实战效果。
1228 0
|
缓存 NoSQL 算法
高并发秒杀系统实战(Redis+Lua分布式锁防超卖与库存扣减优化)
秒杀系统面临瞬时高并发、资源竞争和数据一致性挑战。传统方案如数据库锁或应用层锁存在性能瓶颈或分布式问题,而基于Redis的分布式锁与Lua脚本原子操作成为高效解决方案。通过Redis的`SETNX`实现分布式锁,结合Lua脚本完成库存扣减,确保操作原子性并大幅提升性能(QPS从120提升至8,200)。此外,分段库存策略、多级限流及服务降级机制进一步优化系统稳定性。最佳实践包括分层防控、黄金扣减法则与容灾设计,强调根据业务特性灵活组合技术手段以应对高并发场景。
3747 7
|
存储 供应链 前端开发
如何开发一套仓库管理系统?(附架构图+流程图+代码参考)
仓库管理系统(WMS)是现代物流与供应链管理的重要工具。本文介绍WMS的系统架构、功能模块、业务流程设计及开发实现,帮助企业提升库存管理效率,降低错误率,实现自动化操作,提供实用的开发方案。
|
JavaScript Java 测试技术
基于Java的仓库管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的仓库管理系统的设计与实现(源码+lw+部署文档+讲解等)
590 0
|
算法 C++ 容器
剑指Offer - 面试题40:最小的k个数
剑指Offer - 面试题40:最小的k个数
237 0
|
JavaScript 前端开发 索引
|
缓存 NoSQL JavaScript
面试官:电商库存扣减如何设计?如何防止超卖?
面试官:电商库存扣减如何设计?如何防止超卖?
|
关系型数据库 MySQL 数据库
mysql使用Navicat创建分区
mysql使用Navicat创建分区
878 0
mysql使用Navicat创建分区