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

程序员的架构师之路:如何做整体技术架构(经验总结干货)

时间:2021-09-17 16:36:09  来源:  作者:CTO说

前面已经聊到了如何做高层架构设计,并开始让设计落地,去划分了系统边界,进行了服务和模块的拆分,也就是系统的整体轮廓已经有了。

接下来,就该来做整体的技术架构设计了。

其实做架构设计一点都不神秘,都是有章可循,有方法可依的。

一:做整体的技术架构设计的基本方法:

其实做整体技术架构的方法相对简单,就是一个不断做决策的过程

最后把你的各个决策的结果组合起来,就是整体的技术架构了。

虽然方法很简单,但这个阶段的责任重大。架构的好坏,决定了后期开发的难易程度;也决定了系统性能的好坏、系统的稳定性、安全性、可扩展性等等的。

项目架构好坏,也间接影响了项目的工期、成本、人力等等的。可以这么说,架构的好坏,基本上决定了项目的成败。

方法看似简单,但是对架构师的能力要求是比较高的,技术知识的广度、深度,技术架构设计的经验等,都会有较高的要求。

解决一个问题,通常都不只一种方法,也就是架构师要有很多备选的方案,然后就需要做决策,到底用A方案好,还是B方案好呢?

这就取决于架构师对它们理解的深度了,经过比较他们的适用场景、优点缺点,再综合考虑项目的实际需要,才能决策出具体要选用那个方案,并给出令人信服的依据或理由。

这也就是我们经常说的,最合适的方案才是最好的方案。

程序员的架构师之路:如何做整体技术架构(经验总结干货)

 

二:做整体的技术架构设计的基本步骤

步骤一:根据应用风格来确定技术架构的风格

比如是一个单体应用还是一个分布式的应用,这就是应用风格。

假如就是一个小管理软件,公司内部使用,一共也就几十个人用,做个单体应用,Tomcat和数据库放一台服务器部署就可以了。

或者是一个单体集群的应用,规模比单独一个应用部署稍大一些,需要部署多个Tomcat,前面再配上Nginx做反向代理和负载均衡。

也有可能是分布式应用,或者是微服务应用,大数据分析应用,人工智能AI应用,等等的。

不同的应用风格,需要使用的技术组合是不一样的,技术架构形式也是不一样的。

架构师就需要根据不同的应用风格,结合系统实际要求,来选择使用不同的技术架构形式,并结合实际应用进行调整。

比如说是微服务的应用,可能主要的选择就是Springboot + SpringCloud体系;但也有从早期Dubbo转过来的,现在Dubbo3.x也出来了,也可以选用Dubbo来实现微服务。

又比如大数据分析的应用,可能会考虑Hdoop体系;AI应用可能会考虑Python+Tensorflow等等。

不管怎么选择,在这个阶段,架构师需要做一个决策,把技术架构方案的风格和基本技术路线确定下来。

程序员的架构师之路:如何做整体技术架构(经验总结干货)

 

步骤二:确定基础框架

确定好技术架构风格和基本技术路线过后,就该来确定基础框架了。

比如我们前面确定了是微服务的架构形式,选的技术路线是Springboot + SpringCloud,那好,这里就要把基础的框架确定下来。

比如单个服务使用Springboot +SpringMVC+Spring+Mybatis,每个服务部署在Docker里面。至于SpringCloud,还需要考虑版本,是选1.5.x还是选2.x的,里面的技术组件是不一样的。

比如选了SpringCloud2.x的,就要来确定内部组件怎么选择,怎么组合,一种可能的选择是:SpringCloud Gateway + Nacos +Feign+ LoadBalancer + Sentinel + Seata 等等的。

总之,这个步骤里面,把要使用到的基础框架确定下来。

步骤三:确定基本技术栈

在确定的基础框架之上,通盘考虑整个项目要用的主要技术,把它们确定下来,并明确好版本。

除了前面提到的,还需要考虑其它要使用的技术,比如:

缓存体系:redis6.x

MQ:Kafka2.8

分库分表:ShardingSphere5.x

搜索引擎:ElasticSearch7.x

数据库:MySQL8.x

等等的吧,一个项目涉及很多技术,有些是开发上用,还有部署需要的,比如Nginx,还有运维需要的,比如Zabbix等等。

这些都要确定下来,后面的架构设计和详细设计,就需要在这里确定的圈子下来进一步细化了。

程序员的架构师之路:如何做整体技术架构(经验总结干货)

 

步骤四:组合技术栈中的技术和框架,形成初步的整体技术架构

前面是不断选择,不断决策,把要用到的东西都选出来,然后呢?

就需要把它们有机地组合起来,形成一个整体,这样就得到了一个初步的整体技术架构了,是不是很简单?

最后,架构师把这个组合,画图展示出来,就是整体技术架构设计图;把选择过程,选择理由,选择目的,解决了什么问题 等内容,写成文档,就是整体技术架构设计文档了。

步骤五:对初步的整体技术架构进行细化

在确定的初步的整体技术架构基础上,进一步细化,完善整个技术架构设计。

通常是结合系统的一些重难点问题,深入到每一种技术里面,明确采用什么方式,什么架构,怎么组合,来具体解决这些问题。

比如:系统实现中会用到分布式锁,如果前面确定使用Zookeeper来实现,那好,具体使用Zookeeper的什么特性来实现,大致实现的机制是怎样的?可能会出现什么样的问题?怎么解决或预防这些问题? 等等,都是细化的内容。

把所有关注的问题,都分析清楚了,方案细化好了,基本上这个时候的技术架构也比较完善了,差不多技术架构也就设计好了。

这里只是讲述了整体技术架构的基本方法和步骤,实际过程是非常繁杂的,需要考虑的技术点很多,要决策的地方很多,要解决的问题也很多,并没有看上去这么轻松。

另外,限于篇幅,还有文字的表现力,没有去举详细的例子,这个以后有机会的话,再给大家视频讲解吧。

还有再强调一次,架构设计的方法并不复杂,但是要真正掌握,没有很好的、持续的训练和思考,想要真正掌握,还是比较困难的。因此,大家一定要在实际工作中,去实践这些方法,反复思考、反复实践,最终才能内化成为你的能力。到了那一天,你也就自然成为了真正的架构师了!

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

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



Tags:技术架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
本文作者宗志刚(花名瑄珉),网络领域从业十五余年,现任阿里云网络产品线资深技术专家,负责阿里云网络洛神平台的技术规划、架构设计以及网元产品研发工作。在刚刚过去的云栖大会上...【详细内容】
2021-11-02  Tags: 技术架构  点击:(95)  评论:(0)  加入收藏
前面已经聊到了如何做高层架构设计,并开始让设计落地,去划分了系统边界,进行了服务和模块的拆分,也就是系统的整体轮廓已经有了。接下来,就该来做整体的技术架构设计了。其实做架...【详细内容】
2021-09-17  Tags: 技术架构  点击:(77)  评论:(0)  加入收藏
今日头条创立于2012年3月,到目前仅4年时间。从十几个工程师开始研发,到上百人,再到200余人。产品线由内涵段子,到今日头条,今日特卖,今日电影等产品线。一、产品背景今日头条是为...【详细内容】
2021-06-08  Tags: 技术架构  点击:(156)  评论:(0)  加入收藏
云平台、数字化平台、中台、第三方平台……围绕着数字化、智能化,市场上一下子冒出很多平台。中国软件网、海比研究在近年来对企业、尤其是大型企业的数字化发展...【详细内容】
2020-12-02  Tags: 技术架构  点击:(118)  评论:(0)  加入收藏
作者 | 不四来源 | 阿里巴巴中间件(ID:Aliware_2018)每个技术人心中或多或少都有一个「产品梦」,好的技术需要搭配好的产品,才能让用户爱不释手,尤其是做一款知识服务型产品。本文...【详细内容】
2020-08-10  Tags: 技术架构  点击:(65)  评论:(0)  加入收藏
以下文章来源于Android达摩院 ,作者Gityuan 引言众所周知,Android是谷歌开发的一款基于Linux的开源操作系统,每年迭代一次大版本升级。小米、华为、OPPO、VIVO、三星等各大厂商...【详细内容】
2020-07-21  Tags: 技术架构  点击:(79)  评论:(0)  加入收藏
前言 本文是对《大型网站架构设计》(李智慧 著)一书的梳理,类似文字版的“思维导图” 全文主要围绕“性能,可用性,伸缩性,扩展性,安全”这五个要素 性能,可用性,伸缩性这几个要素基...【详细内容】
2020-07-04  Tags: 技术架构  点击:(85)  评论:(0)  加入收藏
一、产品背景  今日头条是为用户提供个性化资讯客户端。下面就和大家分享一下当前今日头条的数据(据内部与公开数据综合): 5亿注册用户 2014年5月1.5亿,2015年5月3亿...【详细内容】
2020-06-14  Tags: 技术架构  点击:(109)  评论:(0)  加入收藏
分层架构是逻辑上的,在物理部署上,三层架构可以部署在同一个物理机器上,但是随着网站业务的发展,必然需要对已经分层的模块分离部署,即三层结构分别部署在不同的服务器上,是网站拥...【详细内容】
2020-06-06  Tags: 技术架构  点击:(61)  评论:(0)  加入收藏
云通信作为通信基础设施,具有很强的行业普适性和刚需性,其业务场景涵盖了用户整个生命周期。然而,在企业使用云通信的过程中,依旧会面临到技术门槛高、系统维护治理难、业务场景...【详细内容】
2020-05-16  Tags: 技术架构  点击:(40)  评论:(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)  加入收藏
最新更新
栏目热门
栏目头条