其他
之前我写过几篇架构师、架构设计相关的文章。说实话,想通过几篇文章就把架构师的方方面面说明白,挺难的。这可能需要一系列的文章,今天就给大家安排了这篇文章。很多程序员都有和下面类似的困惑:为什么很多程序员成不了架构师?高级程序员和架构师之间有什么区别?我认为,架构师和高级程序员最主要的区别在于,两者之间的思想维度上。我举个例子,假如现在有个需求:公司想要做一套直播卖货的系统。产品需求给出来了,在我成为架构师之前,作为程序员的我会怎么想?我的想法可能是最简单直接的:需求中的礼物打赏如何实现是不是得有房间房间的逻辑是如何实现的滚屏弹幕该怎么落地……也就是说,作为程序员,我的第一反应是:业务如何转化为技术,各种业务功能是如何用技术实现的。那么,在我做过架构师之后,我会怎么想呢?如果是我牵头负责这个,除了这些业务转成技术的问题,我还需要思考如下问题:架构用单体还是微服务通信方式都有哪些中间件选哪些比较好普通存储和多媒体存储该如何规划应该选什么样的架构风格可靠性,弹性,可用性该怎么保障开发成本、部署成本、维护成本成本与系统性能的折中……以上,只是架构师典型思考的几个宏观问题。其实,在一套系统中,架构师不仅仅只是思考这些宏观问题而已。更会深入细节,去解决各种层次的技术难题。回到直播问题上,架构师还必须去解决一系列技术难题,比如:直播的卡顿问题通信协议的优化问题各种中间件的优化问题存储的一致性问题总的来说,一名程序员,他的思维往往是自下而上的,就是先思考功能实现,再根据功能实现去理解整个系统的运行机制。而一名架构师,他的思维往往是自上而下、自下而上相结合的。他本能的就会先去想系统的架构,根据系统的架构,再去根据架构的雏形,去根据各个业务定出业务模块之间的通信方法,再根据通信方法去理解各个业务模块的耦合,去想着一些代码实现难题,最后去完整的理顺整个系统的技术实现。所以,一名程序员想要成长为一名合格的架构师,必须经过思维的转变。而这种转变,需要多读一些好书,让这些书中的知识,来对个人的思维进行一次大清洗,从而使得这种转变更加容易和更加准确。我在这里想推荐