您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

三种架构设计思维模型

时间:2020-08-21 10:58:04  来源:  作者:

之前我发过一次孙玄(人称:玄姐)会在阿里云开发者社区开一个五节课程的架构师成长之路直播课,我也学习了他的第一课《技术人的道与术》后做了学习整理笔记并分享成文。今天,和你分享我学习他的第四课《架构设计思维模型》做的学习笔记,会和你分享三个架构师需要具备的架构设计思维模型。

1、模型1:业务需求至简抽象分析模型

玄姐认为,架构师需要具备的第一个重要的思维模型就是:业务需求至简抽象分析思维模型。通俗来讲,就是能不能抽象地分析出业务方或者客户方提出的一个需求背后,他真正的需求是什么。换句话说,能否分析出这个需求背后的本质是什么,而这个过程,就是业务需求抽象的过程。

其实这个思维模型也是产品经理的必修课,对于产品经理来说,挖掘「一匹更快的马」背后真实的用户动机是最重要的基本功,不要停留在用户提出的所谓需求上

有句关于产品需求挖掘的名言「用户不需要1/4 英寸的钻头,他需要的是1/4 英寸的洞」「用户需要的也不是1/4 英寸的洞,而是在墙上挂一幅画」「用户不是需要画,他需要房间的格调」等等。这些听起来像是抬杠的演绎,其实就是不断探索和挖掘真正需求的过程。

在实际的实践过程中,我们可能经常使用的方法是5个Why,即连续提问5个为什么,从而追究其根本原因,试着找到用户背后的真正动机。

我在之前学习刘润老师的《商业洞察力》时,了解到洞察力这个概念,其实它就对应了这个需求抽象分析的过程。所谓洞察力,就是透过表象,看清“系统”这个黑盒子里,要素以及它们之间连接关系的能力。

从玄姐处学到的三种架构设计思维模型

 

润总说,任何系统都可以进一步拆解为多个要素,以及要素之间的连接方式,即系统=要素 x连接关系。

举个例子,对于电脑来说,主板、显示器等组件和零件就是要素,而它们之间如何衔接和搭配让电脑这个系统运转起来,就是连接关系。我们往往容易看见整体,却容易忽视连接关系。

所有无法解决的问题,可能都是因为我们看不清。例如,普通的人观察一只手表,有洞察力的人可能会洞察几百个零件之间的“连接关系”。普通的人观察一次合作,有洞察力的人可能会洞察协议背后的利益分配、分析转嫁的“连接关系”。普通的人观察一个团队,有洞察力的人洞察团队里责、权、利的错综复杂的“连接关系”。

因此,我也认为,洞察力也是玄姐提到的这个业务需求至简抽象分析模型的关键。

2、模型2:哲学本质架构设计思维模型

玄姐认为,市面上有很多的架构,比如单体架构、SOA架构、微服务架构等等,他们的存在都有一个最本质的原因,那就是:“满足公司多业务场景的需求,最终达到公司层面降本增效的终极目的”。换句话说,只有做出的架构最终能够帮助公司实现降本增效,才是满足公司的业务场景的架构。

当然,这对于我们来说还是太抽象,于是玄姐给了细化的内容,也就是在做架构设计的时候,有一些最基本的定律。如果我们能够一层一层的抽象和分析,将架构设计映射到这些定律,那么就具备了这些架构设计的思维模型。

一种思维模型是:CAP架构设计思维模型

从玄姐处学到的三种架构设计思维模型

 

CAP是三个英文单词的首字母,分别是consistency、availability、partition tolerance。即强一致性、可用性、网络分区容忍性。CAP定律说的是,分布式系统三者只能同时满足二者,强一致性、可用性、网络分区容忍性三者同时满足的情况不存在。

如果我们能够结合业务场景,将CAP模型用起来,那么我们就能够掌握这个思维模型,就会离本质又进一步。否则,我们仅仅是掌握了CAP定律,而不知道怎么去应用。

另一种思维模型是:BASE架构设计思维模型

从玄姐处学到的三种架构设计思维模型

 

BASE是对CAP中一致性和可用性权衡的结果,其核心思想是即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。在很多情况下,我们都是没办法用CAP定律来进行映射的,但是可以通过映射到BASE的思维模型来去做。这时候能不能把它映射到BASE模型上去做,也是很重要的。

玄姐也给出了一个例子,以设计分布式锁为例聊了一下存储模型的选择。

一般情况下,分布式锁是一个CP模型,我们要求你的锁不能重复。但是,难道分布式锁的实现永远是CP模型吗,有没有一些场景,AP模型也是可以的。当然,只要涉及到金融相关的,比如说,我的交易,我的支付,我的转账,要求一定是CP模型。但是,当涉及到社交相关的,比如说,我发一个消息给朋友,本来消息发重复了以后应该过滤掉,但是它没有过滤掉,朋友收到我两条重复的消息,比如说今天晚上有空一起吃饭吗,本来他不想回我,当他发现这个消息发了两遍,他觉得我的邀请非常诚恳,他就答应我了。在这种场景下是可以用AP模型的。所以分布式锁也要根据场景折中,一定要把架构设计映射到CAP定律,到底采用一个什么样的模型来打造会比较合适,是非常重要的一个方向。

有了这样的思维模型之后,再去设计分布式锁就会比较明晰。在存储模型的选择上,如果是一个AP模型,可以用redis来做。如果是一个CP模型,则可以用etcd来做。有了最底层的架构设计之道,再去做其他场景也是很容易迁移复用的。

从玄姐处学到的三种架构设计思维模型

 

玄姐说:一切脱离业务场景谈架构都是耍流氓!

3、模型3:根据场景Balance架构设计思维模型

玄姐认为,我们需要根据实际的业务场景来合理地设计系统架构,这个业务场景,包括了项目时间、团队研发能力、团队运维能力等。但是,最重要的还是要根据场景去折中或者平衡的这样的一种能力,其实也是一种重要的思维模型。

比如,有些人在大厂经历了许多磨练,具备了一定的架构设计能力,但当他去一个小厂或者一个创业公司的时候,再根据大厂的业务来设计架构的时候,他其实不一定能够设计出一个适合于当前业务的架构。因为,他没有场景折中能力,只能依葫芦画瓢,但是画出来的不一定是最优雅的。

将场景折中能力进一步细化,就会得到“合适”架构设计思维模型。换句话说,在大厂我们可以用这样的分布式架构,但是去了小厂,则不一定要继续设计一个分布式架构,这时对于初创期的小厂,可能一个单体架构会是一个比较好的起点方向。

什么叫做合适,可能还是比较抽象,对它进一步拆解,就会得到适度超前架构设计思维模型。换句话说,我们设计的架构应该是能够满足一定时间内业务的发展的,那么多长的时间算适度?玄姐认为半年到一年的时间段比较符合适度超前的。

看到这里,我回顾了一下我所在公司的架构设计,基本也是朝着适度超前的原则来设计的,我们基本是朝着满足未来一年内的需求来约定的。

4、学习小结

跟玄姐学习了思维模型,这其实是一种以不变应万变的设计能力,不变的是架构设计的思维模型,万变的则是各种业务场景。架构设计的终极之道,也是玄姐提到的哲学本质就是降本增效,我们所有的设计其最终目的都是希望公司能够降低成本提高效益。

参考资料

孙玄,《架构师的架构设计思维模型》from 阿里云开发者社区

findyi,《人与人的差异在于认知》

刘润,《商业洞察力30讲》

专栏:EdisonTalk(爱迪生说)

本文作者EdisonZhou,架构师,阿里云MVP,博客园"推荐博客"博主,Scrum联盟认证CSM,爱好阅读与分享。

本文首发于EdisonZhou的公众号“恰童鞋骚年”,欢迎关注,第一时间获得更多内容分享。



Tags:架构设计   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
背景在日常工作中,我们通常需要存储一些日志,譬如用户请求的出入参、系统运行时打印的一些info、error之类的日志,从而对系统在运行时出现的问题有排查的依据。日志存储和检索...【详细内容】
2021-11-23  Tags: 架构设计  点击:(20)  评论:(0)  加入收藏
如何设计一个好的软件架构,如何提高软件的扩展性,移植性,复用性和可读性?很多做嵌入式开发的朋友经常会遇到这种情况:一个项目软件设计完成了,客户提出了一些新的功能需求。这时侯...【详细内容】
2021-11-08  Tags: 架构设计  点击:(35)  评论:(0)  加入收藏
1、网络架构总体说明为了方便网络管理,园区网络通常按照功能或业务进行分层分区设计,园区内部网络包括终端层、接入层、汇聚层、核心层、出口区,园区外部的其他园区、分支、出...【详细内容】
2021-08-17  Tags: 架构设计  点击:(89)  评论:(0)  加入收藏
一:业务背景优惠券是电商常见的营销手段,具有灵活的特点,既可以作为促销活动的载体,也是重要的引流入口。优惠券系统是vivo商城营销模块中一个重要组成部分,早在15年vivo商城还是...【详细内容】
2021-08-06  Tags: 架构设计  点击:(74)  评论:(0)  加入收藏
组织结构是企业的骨架,是实现战略目标的载体,是企业运营的支撑,是岗位设置的依据,是企业信息流的渠道。如果企业缺乏合理的组织结构,就会造成分工不明确、权责不清楚、沟通渠道不...【详细内容】
2021-06-08  Tags: 架构设计  点击:(120)  评论:(0)  加入收藏
1. 前言嵌入式是软件设计领域的一个分支,它自身的诸多特点决定了系统架构师的选择,同时它的一些问题又具有相当的通用性,可以推广到其他的领域。提起嵌入式软件设计,传统的印象...【详细内容】
2021-04-15  Tags: 架构设计  点击:(250)  评论:(0)  加入收藏
背景考拉安全部技术这块目前主要负责两块业务:一个是内审,主要是通过敏感日志管理平台搜集考拉所有后台系统的操作日志,数据导入到es后,结合storm进行实时计算,主要有行为查询、...【详细内容】
2021-04-01  Tags: 架构设计  点击:(259)  评论:(0)  加入收藏
简介: 作为一名Java程序员,相信同学们都听说过微内核架构设计,也有自己的理解。那么微内核是如何被提出来的?微内核在操作系统内核的设计中又有什么作用?本文从插件化(Plug-in)架...【详细内容】
2021-02-24  Tags: 架构设计  点击:(158)  评论:(0)  加入收藏
由于多年前开发了一款聊天软件,今天朋友给我打电话,说他们公司准备开发一款内部使用的沟通交流工具,找我咨询关于即时聊天软件一些经验,于是跟他聊了一些关于这方面的东西,所以在...【详细内容】
2020-12-22  Tags: 架构设计  点击:(282)  评论:(0)  加入收藏
Nginx+Redis+MQ+DB下秒杀实现原理 Nginx+Redis+MQ+DB下限购实现原理 Nginx+Redis+MQ+DB下亿级流量实现原理 Redis在架构中的意义 分布式微服务是快了还是慢了 高可用和可用...【详细内容】
2020-12-22  Tags: 架构设计  点击:(364)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(3)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(8)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(20)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(16)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(16)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条