如何成长为一名架构师
Posted 小图包
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何成长为一名架构师相关的知识,希望对你有一定的参考价值。
如何成长为一名架构师
本文将从多个方面讲述如何成为一名优秀的架构师,以及一个架构师应该具备什么样的技术要和职业素养。我在这里整理了个脑图,方便系统性的查阅。
一、职责
在工作中,需要清楚的自己定位,明确自己工作范围和边界,才能更有效的开展工作。一般不限于以下几点:
-
确认需求。当有新的需求新增时,需要能对需求进行拆解,抽象,形成初步的概要设计。
-
系统分解。针对复杂的需求,能理清思路,冷静分析,将大需求拆解成小需求,明确每个小需求的边界范围。
-
技术选型。针对技术选型需要从多个方面进行考量,比如系统复杂度,技术实现成本,不要觉得选择最潮流,最新的技术,来体现自己的牛掰。最好的技术实现是要结合公司的技术栈,运维能力,运营能力,硬件能力等。
-
制定技术规格说明书。针对系统架构的实现,如果涉及到复杂的技术组件,需要编写详细的使用手册。另外,需要培养团队技术栈,对开发、系统设计有明确的规范要求,可以按照设计模式,代码风格,做详细的说明。
二、综合能力
1、沟通能力
作为一名架构师首先需要具备一个良好的沟通能力,团队工作和管理的协调能力,良好的沟通往往能起到事半功倍的效果。沟通中可以参考以下几点:
- 就事论事,对事不对人。切莫情绪化。
- 放低姿态,真诚交流。
- 非暴力沟通,不评论对方的观点和行为。
- 学会倾听。
2、技术能力
优秀的技术能力是架构师必备的基础,大的方向讲归根结底是对技术的沉淀和思考,小的方面讲,熟悉编程语言基础,设计模式,分布式原理,组件原理等,并能合理运用在实际的项目中。时刻保持对技术的敏感性。
3、架构能力
一个架构师最重要的能力就是架构能力,这也是架构师区别于普通程序员的价值所在,从需求分析,系统立项,系统开发,测试,上线,运维,方方面面都会考验到架构规划,架构设计,架构升级这些能力。
4、抽象分析。
一个完全陌生的领域,散落的需求,怎么把业务需求转换成技术需求,抽象分析能力是架构的基础。系统应用设计需要思考领域模型的抽象,设计模式的应用,需求扩展性的实现。
5、决策能力
一个需求往往有多种技术实现方案,哪种更优,更合适。这时就需要结合需求本身,各类资源,上线计划等,做出技术选型和技术决策。系统中如果有很多需求,需要对需求排优先级,控制节奏,把控全局。
三、架构优化和升级
1、思路和目标
多思考怎么提升平台响应,吞吐量,高性能,高可用,高扩展,降低耦合。
2、原则
-
在应用系统的设计、开发中,应该始终把性能放在考虑的范围内。
-
确定清晰明确的性能目标是关键
-
性能调优是伴随整个项目周期的,最好进行设定分段目标开展,在达到预期性能目标之后即可对本阶段工作进行总结、复盘。
-
必须保证调优后的系统稳定运行\\
-
性能更大程度是取决于良好的设计,调优是个技术手段。
-
优化是循序渐进的过程。
-
性能调优不能牺牲代码的可读性和维护性为代价,必须保证良好的设计。
3、手段
-
通过升级硬件,可以从cpu数量,固态硬盘,内存大小,DB存储等去考量。
-
缓存化,针对吞吐量大的,数据库又存在瓶颈的,我们可以适当使用缓存,减少磁盘IO,降低延时。
-
异步化
很多同步交互的功能是否可以换成异步,一方面不阻塞用户行为,一方面也能给系统减负。比如:通过消息队列实现异步化处理,接口同步响应受理,异步通知终态。
-
数据库优化层面
优化原则
-
优先考虑缓存降低对数据库的依赖。
-
再考虑读写分离,降低数据库写操作。
-
最后开始数据库拆分
-
首先按照业务进行垂直拆分,再考虑水平拆分。
数据库的垂直、水平拆分。当横向的通过增加应用节点都不能提升系统处理能力,往往就是数据库扛不住,这时候不得不设计到分库分表。分库分表的难点在于:1、分片键的选举。2、业务需求跨表跨库的查询(反范式设计、数据聚合SLAP)
作者:陈综光
链接:https://juejin.cn/post/7002986462195122207
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
以上是关于如何成长为一名架构师的主要内容,如果未能解决你的问题,请参考以下文章
阿里Java架构师分享自己的成长经历,教你如何快速成长为架构师
如何从一名Java初级程序员成长为一名合格的架构师.或许这里有你想知道的答案