资讯专栏INFORMATION COLUMN

一个程序员对架构的认识

darcrand / 1734人阅读

摘要:架构的含义小石最近加入了一家生鲜电商公司。所以可以认为所谓的框架就是确定了一些业内规范,从某种程度上对大家形成约束或者形成都能理解的规定。没有完美的架构只有合适的架构。

最近订阅了一些架构方面的资料,阅读后获益匪浅,想着整理一些自己的体会与思考,形成架构方面的读书笔记,一来与大家交流,二来通过文字的形式检查自己到底收获多少!

“我们系统是MVC架构的”

“淘宝的架构好屌”

“最近在学习MySQL的架构”

“这个系统开发我们要用MVC框架来进行开发”

-

我们常常听到上面关于架构的各种描述,那么架构到底是指什么?系统、框架、架构三者之间是一个什么样的关系?下面让我们结合实际的例子一起来探究下。

架构的含义

小石最近加入了一家生鲜电商公司。公司现在的首要任务是把电商系统给做出来,让用户能够通过PC、App购买公司的生鲜产品。

关键词:系统,所谓系统可以简单理解为我们平时所说的应用,当然系统可以包含多个小系统,这里为了简单起见,我们就先假设只开发这样一个单体应用,包含了用户下单购买的基本功能。

小石通过分析其他电商系统,知道至少需要 用户注册登录模块用户信息模块商品模块订单模块 系统才能够进行运转。

系统的功能确定了,该选择用什么样的语言进行开发呢?选择什么样的方式进行开发呢?与大家一起讨论后,大家认为现在阶段的首要目标是快速做出系统来,因此大家决定采用PHP来开发,并决定使用 Yii2 框架,数据库方面使用 MySQL,WebService使用Nginx。

关键词:框架,为了快速完成系统的开发,我们会采用一些已被业内实践确认的规范来进行,比如这里采用 YII2 框架,也就是采用了业内的 MVC 规范。所以可以认为所谓的框架就是确定了一些业内规范,从某种程度上对大家形成约束或者形成都能理解的规定。

从开始到现在,还没有写一行代码,一直在进行设计与讨论,讨论需要哪些功能,设计采用什么 结构,而这里的结构主要包括了两方面:逻辑的结构与物理的结构。所谓逻辑结构就是指系统是按照什么样的流程来运转,需要哪些功能来支持。所谓物理,就是当编码完成所有的逻辑后,系统采用什么形式来部署运行。

那么到底什么是架构呢?我理解的架构:在系统诞生之初,对系统进行的逻辑设计与物理设计。他是系统的草图,可以类比为建筑领域的设计图。这张图需要确定:

业务需要的功能模块划分(建筑设计需要划分区域功能)

技术选型,用什么框架、什么存储、什么缓存(建筑领域也要确认框架结构还是框剪结构)

架构是进化的

一个架构的0.1版本绝对不会是完美的,世界上也不存在完美的架构。像上面的小故事,我们采用最简单的架构,如下图(物理角度):

我们把所有的功能写在一份代码里,所有的数据存在一个库里,所有的代码部署在同一个Nginx上,甚至还可能我们的Nginx、MySQL都部署在同一台机器上。

公司业务得以发展,人员得以增加,系统变得更加复杂。这个时候原来的架构,一无法满足业务快速发展,二无法让多人开发变得愉快。因为几十个人在同一份代码里进行编码,想一下都是头大。文件冲突、功能依赖、bug排查、测试功能,这些都无法愉快的解决。这时就得根据新的情况重新设计架构。

我们将代码功能进行拆分,将以前的模块拆分成独立的系统,将MySQL进行主从设计,利用Nginx做负载等等。

那么为什么不一上来就进行拆分呢?因为一开始人手不足,拆分过细,开发周期慢,业务也不需要如此细致的划分。

总结

架构是一个系统的草图(逻辑+物理角度),它是有生命的,随着业务的变化会不断演进。没有完美的架构只有合适的架构。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/11886.html

相关文章

  • 一文带你重新认识 Docker 与 Kubernetes

    摘要:公司始于名为的平台即服务供应商。跨多个机器之间协调这些容器需要额外的工具,这称之为容器编排。的核心优势是为应用程序开发人员提供了用于编排无状态容器的强大工具。有无数的文章都在讨论和比较Docker、Kubernetes 以及Mesos。如果你是初学者,那么你可能会认为这三个开源项目正为了称霸容器界而殊死搏斗。虽然这三种技术都使得使用容器部署、管理和伸缩应用成为可能,但实际上它们各自解决了不同...

    baishancloud 评论0 收藏0
  • #yyds干货盘点#带你统一认识一下系统架构及分析和总结

    摘要:缺点系统依赖复杂,给开发测试部署带来不便,分布式数据一致性和分布式事务支持困难,一般通过最终一致性简化解决。微服务架构分成三种实现模式。事件驱动架构事件是状态发生变化时,软件发出的通知。事件驱动架构的四个部分事件队列接收事件的入口。 架构的规划谁架构就是对系统中的实体以及实体之间的关系所进行的抽象描述,是决策。...

    warkiz 评论0 收藏0
  • ELSE 技术周刊(2017.10.16期)

    摘要:前端中的计算机领域的通常认为起源于。并对其主要内容作了自己的解读。搬到另一个地区会导致名气降低。年度报告,年最受欢迎的编程语言年上最流行的种编程语言及前十最火热的项目排行榜,分别由及登顶。技术周刊由小组出品,汇聚一周好文章,周刊原文。 showImg(https://segmentfault.com/img/bVWHC4?w=1000&h=710); 本期推荐 反击爬虫,前端工程师的脑...

    0xE7A38A 评论0 收藏0
  • React 重要一次重构:认识异步渲染架构 Fiber

    摘要:在之前的叫,是新的,这次更新到架构是一次重量级的核心架构的替换,为了完成这次替换已经准备了两三年的时间了。因此团队引入了异步渲染这个概念,而采用架构可以实现这种异步渲染的方式。官方目前已经把和标记为,并使用新的生命周期函数和进行替换。 Diff 算法 熟悉 react 的朋友都知道,在 react 中有个核心的算法,叫 diff 算法。web 界面由 dom 树组成,不同的 dom 树...

    cppowboy 评论0 收藏0
  • Simon Brown:架构师与序员区别

    摘要:从根本上讲,架构师是一个技术领导者的角色,这就是最大的区别。对于这个问题来说,没错,有一些相关主题没有出现在这本书中,这些主题可以构成一本与程序员必读之软件架构相互补的书。我从软件架构的视角特别能注意到这件事。 非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/article/178034 Simon Brown 是全球知...

    Turbo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<