讲实话,要看书只能看看架构师思维相关的数据,开拓一下思路就行,看看别人的看法和观念。
架构师需要积累的技术不要从书上来,去官网看他的说明书,一切纯讲技术类的书籍都有滞后性。
正在用的技术要时常关注一下他官网爆出的问题及版本差异,尤其是bugfix。
简单推荐几本:
《亿级流量网站架构核心技术》
书总结并梳理了亿级流量网站高可用和高并发原则,通过实例详细介绍了如何落地这些原则。本书分为四部分:概述、高可用原则、高并发原则、案例实战。从负载均衡、限流、降级、隔离、超时与重试、回滚机制、压测与预案、缓存、池化、异步化、扩容、队列等多方面详细介绍了亿级流量网站的架构核心技术,让读者看后能快速运用到实践项目中。
不管是软件开发人员,还是运维人员,通过阅读《亿级流量网站架构核心技术》都能系统地学习实现亿级流量网站的架构核心技术,并收获解决系统问题的思路和方法。
《凤凰架构:构建可靠的大型分布式系统》
这是一本从架构视角讲解如何构建大型分布式系统的著作,是超级畅销书《深入理解Java虚拟机》的作者周志明多年架构和研发经验的总结,得到了多位行业资深架构专家的联袂推荐。
全书共16章,分为演进中的架构、架构师的视角、分布式的基石、不可变基础设施和技术方法论五部分。
●第①部分 演进中的架构(第1章)
着重介绍了软件开发历史中多种主流架构风格出现的契机、解决的问题以及带来的新缺陷。
●第②部分 架构师的视角(第2~5章)
总结了一名架构师应该在架构设计时思考哪些问题,有哪些主流的解决方案和行业标准做法,各种方案有什么优缺点,不同的解决方法会带来什么不同的影响,等等。
●第③部分 分布式的基石(第6~10章)
重点讨论了“不同架构风格是应该在技术规范上统一,还是由应用系统自行解决”这个问题,给出了解决思路、方法和常见工具。
●第④部分 不可变基础设施(第11~15章)
重点讲解了基础设施不变性的目的、原理与实现途径,包括虚拟化容器、容器间网络、持久化存储、资源与调度、服务网格等内容。
●第⑤部分 技术方法论(第16章)
面向技术决策者集中讨论了与分布式、微服务、架构等相关的理论话题,将解决问题的能力归纳、总结、升华为方法论。
全书以实践为导向,一个案例贯穿全书,同时给出了基于Spring Boot、Spring Cloud、Kubernetes、Istio、AWS Lambda 五种架构风格的样例工程。
《领域驱动设计 软件核心复杂性应对之道 》
关于领域驱动设计的,了解一下,通读即可
《Head First设计模式》
讲设计模式的,老外的书,配有不少案例,生动有趣,推荐刚接触架构和设计模式的同学阅读。
但是读多了反而感觉内容啰嗦,讲述效率太低。
不太适合能力强,对设计模式比较熟悉的人。
我们常说道与术的问题,架构思维就是架构师的“道”。
在这里给大家简单列举几条
第一点:知行合一,做之前,先考虑意义
就是说在做某件事之前,你一定要知道自己的目的是什么。你的目的和你做的事情两者要合一。这是一个层面。 第二个层面是清楚地知道你手里的资源允许你干什么事。比如说Spring Cloud,我很想去用,但是我的团队hold不住,你强行把这个东西推下去之后,事情做的并不成功。结果还是需要你承担责任。
第二点:原生优于定制,约定大于配置
也就是如果你没有特殊需求的话,官方的东西最好,保持原样,除非他不满足你的要求,你再去定制他。因为你改了之后,一旦发生问题,你很难摸清楚错误发生在什么地方。而如果官方的出现问题,整个社区都在给你撑着,你就能够及时地把这东西补上去。
第三点:什么都是,最后会沦落到什么都不是
这是早期我搞架构的时候犯的一个错误。当时我老想着做一套完整的系统,无论你想做什么样的业务,拿来之后稍微一修改什么都能支撑,后来发现根本不是我想的那样,它几乎什么都不能支持。就像造汽车,偏舒适还是运动,两者兼顾的没有。
控制技术欲,不要瞎折腾 你自己或者你们公司内部有没有技术欲特别强,总喜欢玩新的技术,看到新技术就想用到自己的系统中的。这不是一个好的架构师的行为。做架构的前提是稳,这是底线,试错一定不要在生产环境中。
第四点:留下扩展,但不要想到100年后
当代人做当代人的事情,不要考虑那么久远。当代留下的坑,只能留给后代补。
第五点:没有最好的,只有最合适的
跟第3条比较像,但第3条是广度上,这一条是深度上,垂直领域不要总想做到最完美。
第六点:够用就好,玩的越花,风险越大
比如有人玩这种 ++i++;finally(return);if(赋值) ,面试玩玩也就算了,代码这么写存粹是没事找事。
第七点:大巧不工,简约最美
就是要把代码写的很简约,很优雅。
解决问题的能力:
具备日常场景下的解决方案积累,举几个例子:
单点登录
分布式事务及数据一致性
秒杀并发场景
复杂工作流
超高并发、吞吐量
团队协调力、管理能力(加分项):
作为架构师,你不再像普通开发一样,局限在自己所负责的模块里,
你的思维和设计要落地,你需要跟软件开发里的各个角色打交道,必须具备团队层面推进事情进展的能力(尤其架构团队的leader)
最后附上架构师战略大地图(图片看不清可以评论区拿高清图)