架构师必须要清楚的概念(架构师成长之路)

通过前面的文章,已经把高层架构设计所涉及到的各个部分基本讲清楚了。

接下来看看概要设计阶段要做什么以及如何做。

概要设计阶段要做的事情很多,把它总结梳理了一下,分成了如下十个大的方面,像写设计文档这些,都不算在内。

一:继续架构设计

前面咱们讲了很多高层架构设计方面的内容,相对而言,高层架构设计跟业务的联系不是那么紧密。

除了这些之外,还有很多跟具体业务相关的架构设计的内容,这些就放到概要设计阶段和详细设计阶段来做。

架构师必须要清楚的概念(架构师成长之路)(1)

因此,在概要设计阶段,需要继续架构设计,又分成两个方面:

1:对前面整体的技术架构,结合实际应用情况进一步细化

高层架构设计相对还是比较粗略,具体落地,还显得空泛,因此,需要我们进一步结合实际应用情况,对架构设计进行细化。

比如:前面讲缓存架构提到的:缓存使用中,具体使用什么数据类型、存储数据的格式等等

前面已经确定缓存使用Redis,那这里就要结合着业务,来确定到底使用什么类型,这个时候,架构师的技术功底就要受到考验了,最起码要对Redis的一些基本技术有所理解:

比如:你肯定得知道Redis的Value支持五种类型,每种类型都干些什么,特点是什么,使用上有什么限制等等的。然后再结合着具体业务,来进行选择使用。可能就需要深入地理解适合应用Redis的地方:

(1) 缓存

(2) 取最新N个数据的操作,如:可以将最新的50条评论的ID放在List集合

(3)排行榜类的应用,取TOP N操作,前面操作以时间为权重,这个是以某个条件为权重,比如按顶的次数排序

(4) 计数器应用

(5) 存储关系:比如社交关系,比如Tag等

(6)获取某段时间所有数据排重值,使用set,比如某段时间访问的用户ID,或者是客户端IP

(7) 构建队列系统,List可以构建栈和队列,使用zset可以构建优先级队列

(8) 实时分析系统,比如:访问频率控制

(9) 模拟类似于HttpSession这种需要设定过期时间的功能

(10)Pub/Sub构建实时消息系统

(11)记录日志

2:做一些跟业务相关的典型业务系统的架构设计

概要设计阶段,会进一步考虑一些跟业务和具体实现相关的架构,比如一些典型业务系统的架构设计:像什么 秒杀、实时统计报表等等

二:继续技术选型

这个大的部分在前面整体技术架构部分已经选好了,这里主要选择一些跟实际功能实现相关的技术,整体技术架构设计的时候不会考虑这么细。

比如:文件上传下载用什么组件、excel读写用什么框架、Image的压缩转换等等的。

三:继续确定具体技术栈

架构师必须要清楚的概念(架构师成长之路)(2)

针对已选型的技术,确定落地的技术栈,比如:要使用redis,那用哪个版本?使用什么客户端的技术?jedis还是lettuce?是使用原生API还是使用Spring提供的Template?客户端使用哪个版本?等等。

如果是微服务架构,这个可能会更麻烦一些,假如选择的是SpringCloud,那么它不同的版本所包含的技术组件是不一样的,组合方式也不一样,直接会影响到整个技术实现。

也就是需要进一步对整个技术体系进行确定。

四:架构原型实现和架构验证

这个这里没法具体演示,基本方法就是构建一个最简单的、但是有代表性的业务,然后用这个架构和选定的技术,进行实现,以此来验证架构是否达到预期。

如果我们使用的是已经使用过的架构体系,技术的组合方式也已经通过其它项目或产品的验证,那么,这个步骤可以省略。这个就看公司或者团队自身的技术积累和沉淀了。

五:技术预研

这个不一定是每个项目都需要的,主要是针对项目中的重难点技术点、不确定的技术点,进行实际开发前的技术研究,以确保在现有的架构设计和技术体系下,能合理的实现这些功能点或技术点。

方法:抽象构建demo,能用于解决技术问题,不要涉及太多业务,聚焦于技术上的解决方案,但最后要能应用到项目中。

比如说现在项目中有一个功能要求实现以图搜图,如果这个功能以前没有实现过,那就需要预先研究一下,看看如何来实现这个功能,另外还要看看能不能达到用户的要求。

六:继续分服务、分模块

这里会更细致地考虑模块的层级和拆分,进一步完善整个业务的拆分。

构建初步的系统工程结构 和 包结构。

七:应用的基础框架设计

架构师必须要清楚的概念(架构师成长之路)(3)

这个是进行具体开发的基础,应该要先做。

这里会设计具体的功能,只不过是把一些具体的、通用的功能做了一定的抽象和封装,并考虑未来具体应用,该如何简单的来使用这些功能。

当然,每个公司和团队,都会有一些积累和沉淀,这里就是在这些积累的基础之上,结合具体的项目,进一步完善整个基础框架或基础功能包。

八:初步定义API

结合着每个模块要实现的业务来定义。

这个有很多的规则、方法、技巧和经验总结,后面可以给大家详细讲讲如何进行API设计。

九:初步定义实体对象

这个方法比较简单,主要依据是需求调研和需求分析。

属性来源:业务单据、控制数据、暂存数据

相当于基本的vo(ValueObject)就有了。

十:初步定义数据库表结构

前面定义的实体对象可以看作是数据库的逻辑设计,基本上只需要把它们转化成物理设计,就可以得到初步的数据库表结构了。

当然,转化后还是需要进行一些微调,比如:有些字段是不需要在数据库中存储的。

有关于概要设计阶段,具体要做的事情还有基本方法,就先聊到这里。

如果你觉得本系列文章还不错,能够给你一些启发和思考的话,请关注、点赞、收藏加转发,让更多的朋友加入到我们的行列,谢谢啦!

更多架构师之路干货文章,已在路上,稍后就到!

架构师必须要清楚的概念(架构师成长之路)(4)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页