学习分享(第3期):你所理解的架构是什么?_天天热议
什么是架构?
说到架构,这个概念没有很清晰的范围划分,也没有一个标准的定义,每个人的理解可能都不一样。
架构在百度百科中是这样定义的:架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
(相关资料图)
我们可以理解为:架构设计的主要目的是为了解决软件系统复杂度带来的问题。
卡内基·梅隆大学的玛丽·肖(Mary Shaw)和戴维·加兰(David Garlan)在文章《软件架构介绍》(An Introduction to Software Architecture)中写到:
“When systems are constructed from many components, the organization of the overall system-the software architecture-presents a new set of design problems.”
译:随着软件系统规模的增加,计算相关的算法和数据结构不再构成主要的设计问题;当系统由许多部分组成时,整个系统的组织,也就是所说的“软件架构”,导致了一系列新的设计问题。
软件架构的核心价值,即是控制系统的复杂性,将核心业务逻辑和技术细节的分离与解耦。
架构师的职责是努力训练自己的思维,用它去理解复杂的系统,通过合理的分解和抽象,理解并解析需求,创建有用的模型,确认、细化并扩展模型,管理架构;能够进行系统分解形成整体架构,能够正确的技术选型,能够制定技术规格说明并有效推动实施落地。
架构分类
在我的认知体系中,将架构分为业务架构、应用架构、技术架构。当然也听说过数据架构,但大数据领域超出了我的知识范围,并不打算作深入的学习。
我们来理解一下业务架构、应用架构和技术架构。
在需求初期,业务的需求描述往往比较模糊。但是大方向上,业务需求是由公司战略决定的。这些战略所产生的一系统需求,需要业务架构师来进行业务落地,重点在于讲清楚这些需求背后的处理过程,定义各个业务模块的相互关系。
而应用架构、技术架构是为支撑业务架构的落地而存在的。它们的关系环环相扣,上层驱动下层,下层支撑上层。
举一个拍电影的例子。
业务架构定义了这个电影的故事情节和场景安排;应用架构定义了有哪些角色及其职责,在每个场景中,这些角色是如何互动的;技术架构确定这些角色由谁来表演,物理场景上是怎么布置的,以此保证整个拍摄能够顺利完成。
再举一个电商的例子。
一个商品业务,可能对应 3 个应用,一个前台商品展示应用、一个后台商品管理应用,以及一个商品基础服务。业务架构定义了一个下单的具体流程;应用架构定义了下单有哪些应用参与以及它们如何协作;技术架构要保障相关的应用能够处理高并发,从而保证大促顺利进行。
业务架构
说到业务啊,那就不得不提产品经理。产品经理的职责就是:告诉用户,系统长什么样子;告诉开发,他要实现什么功能。比如说,我们现在要设计一个电商系统,用户想在我们系统上买东西,一个典型的购物流程,包括商品浏览、加入购物车、下单、支付。
产品经理首先要把每个步骤具体化为页面原型。在原型中,直观的给出各个步骤的输入或输出,以及用户的操作过程,最后再把这些页面串起来,形成一个业务流程。
业务架构师要设计一个购物流程模块,里面包含商品查询、添加购物车、下单和支付接口,来分别对应流程里的 4 个业务步骤。
说起来倒是挺简单的,要实现这个购物流程,其实是考验业务架构师的功力的。
首先,业务架构师要掌握不同模块的业务和数据模型。这会同时涉及商品、购物车、下单和支付四个业务,业务架构师要同时非常清楚这四部分的数据模型和业务逻辑。
其次,这个模块要设计的足够灵活。如果一个业务领域的需求发生了变化,比如说,订单要增加一个新的状态,那么所有涉及该订单的模块都要知道这个变化,并要做出相应的调整。
下面画出了电商系统的业务架构图,仅供参考:
应用架构
应用架构就是讲清楚系统内部是怎么组织的,相互间是怎么调用的。我们熟知的应用架构有:MVC架构、分层架构、六边形架构。
从单个应用层面讲,应用架构定义了项目包的结构,比如分层应用架构,我在这篇文章《基于 start.spring.io,我实现了 Java 脚手架定制》中介绍了实现分层应用架构的过程,它的分层结构如下图所示:
从系统层面讲,应用架构定义了各个进程间的调用与交互。下面画出了电商系统的分层架构图,仅供参考:
技术架构
技术架构就是对在业务架构中提出的功能进行技术方案的实现。关键就是讲清楚系统由哪些硬件、操作系统和中间件组成,它们是如何与我们开发的应用一起配合,应对各种异常情况,保持系统的稳定可用。
这同样要求技术架构师在计算机技术方面有深厚的功力,第一大挑战就是:硬件。
从技术架构的角度,提升硬件的处理能力一般有两种方式:Scale Up 和 Scale Out。垂直扩展有物理上的瓶颈或成本的问题。受硬件的物理限制,机器的性能是有天花板的。水平扩展如何有效地管理大量的机器,硬件不是 100% 的可靠,它本身也会出问题。
第二大挑战:软件。
这里的软件,主要说的是各种中间件和系统级软件。软件在填硬件的各种坑的同时,也给系统挖了新的坑。
举个例子,Redis 集群的多节点,它解决了单节点处理能力问题,但同时也带来了新的问题,比如 Redis 数据的多副本,它解决了单台服务器故障带来的可用性问题,但同时也带来了数据的一致性问题。
下面画出了电商系统的技术架构图,仅供参考:
标签:
为您推荐
广告
- 学习分享(第3期):你所理解的架构是什么?_天天热议
- 火龙传奇官网_火龙传奇私服
- 范文是作文吗(共8篇)
- 康泰生物:公司完成回购 累计回购约358万股 占比0.32%_每日快讯
- 陈峻齐:3.15黄金行走势分析及操作策略 全球今亮点
- 全球短讯!PAVmed(PAVM.US):2022年Q4财报实现营收11.2万美元
- 《家庭托育管理办法》征求意见稿:家庭托育点可提供生活照料、早期学习机会并促进幼儿身心健康发展,且收托人数不超过5人
- 公主小妹女二_公主小妹演员表|天天速读
- 长春轨道交通3号线最新进展_世界观速讯
- 天天信息:红江橙_关于红江橙介绍
- 有内涵的英文名称_有内涵的英文名|天天微头条
- 头条:电视剧生死劫大结局视频简介
- 【时快讯】2023重庆市涪陵区清溪镇人民政府招聘公益岗位
- 【环球播资讯】周公之礼的意思_周公之礼是什么意思
- 助企保订单拓市场 1-2月浙企RCEP享惠超2700万元
- 今日黑魔鬼香烟哪里有卖_黑魔鬼香烟
- 奋力夺取首季首胜 武汉国企“开门红”催热消费市场
- 【全球独家】宫外孕是什么原因造成的_宫外孕是什么感觉
- 滕哈格:桑乔很好的胜任了新位置 他会在曼联有所作为-世界新视野
- 今头条!反担保是什么意思_反担保是什么
广告
- html里面的空格代码是什么_html语言空格代码是什么 连续空格呢 世界滚动
- 贯彻落实全省公安局长会议精神丨玉屏公安开展送教下基层活动
- 中金所发布关于提示股指期货和股指期权合约交割相关事项的通知_环球快播
- 洛克王国怎么改变宠物外观_洛克王国怎么改变宠物性格
- 容声冰箱美学之旅本周开启 “无界之美”碰撞“城市之美”-每日报道
- 热门看点:云南虫谷电视剧什么时候拍的(云南虫谷电视剧什么时候上映)
- word文档1磅等于多少行_在WORD中 1行等于多少磅 1厘米等于多少磅-世界资讯
- 全球新消息丨降本战已打响!日产新电动动力系统成本可降低30%
- 又一海上“巨无霸”!全球最大,正式交付!
- 【环球新视野】买的特产小吃可以带飞机吗?
- 英魂之刃自走棋阵容大全_英魂之刃自走棋搭配
- 季肖冰主演的电视剧_季肖冰今年多大|每日快讯
- 全球热资讯!章源钨业(002378.SZ):赣州澳克泰定位于“做难加工材料切削专家” 提供金属加工定制服务
- 菠菜不能跟什么食物一起吃_boc-观热点
- 文章身高资料_文章身高
- 最多降79%!最新筹码集中股来了 要闻速递
- 天天快资讯:面板厂商友达2023年2月营收160.5亿新台币 同比减少37.4%
- 大话表情包微信_大话西游表情包微信版-天天通讯
- 环球热门:法院会判多少老人赡养费
- 张金九3/9黄金弱势横盘待非农,今日黄金走势分析及策略 世界今热点