|没有架构师的命,却得了架构师的病


小团队一般 10 人左右 , 其中常常是技术最牛的人做架构师(或 TL) 。 所以 , 架构师在广大码农中的占比大概平均不到 10% 。
|没有架构师的命,却得了架构师的病
本文插图

图片来自 Pexels
而架构师也可以分为初级、中级、高级三档 , 江湖上真正高水平的软件架构师就更少了 。
所以 , 大部分(超过九成的)码农干上许多年 , 还是做不了架构师 , 这是什么原因造成的呢?
什么是架构师?
写代码和做架构是两个不同的事情 。 什么是架构师 , 架构师要做什么事情 , 为什么 Java 的领域里 , 会更注重架构师?
很早很早之前 , 我对于架构的概念一点都不理解 , 依稀记得 , 架构( architecture)这个词 , 来自于建筑领域 。
【|没有架构师的命,却得了架构师的病】这对于我这个没写过几行代码的人来说 , 瞬间就有了一种“不明觉厉”的崇拜感 。
架构 , 感觉好厉害的样子 , 从名称上来说 , 好像是设计根骨 , 设计底层 , 设计最核心的东西的人 。
架构师 , 一定很 NB , 我什么时候能成为架构师呢?
后来懂了一点点代码 , 去写增删改查 , 更是体会不出来架构的概念 , 不就是 SQL 语句吗?
明明 DBA 更厉害啊 , 做各种的慢 SQL 优化 , 所有的 SQL 都要让 DBA 审核 , DBA 对于 MySQL , 或者是 Oracle 的各种性能调忧很厉害 , 而熟悉业务的开发人员又常常能写出几万行的 SQL 语句 。
我看到这些头都要炸了好么?所以 , 到底什么是架构?
整个系统只有一个 Web , Spring MVC+Spring+Hibernate 搞定一切 , 开始做需求分析 , 实际上就是设计表结构而已 , 剩下的就是查查查 , 改改改 , 删删删 。
直到某天 , 我知道一个词 , 缓存 。
缓存这玩意儿 , 在很早之前学习各种基础课程的时候 , 了解过一些 , 一级缓存 , 二级缓存什么的 , LRU 我好像也懂一点点 , 但是 , 在系统里 , 缓存算是什么?
在公司里 , 那个架构师 , 画了一张图 , 告诉我们 , 这台机器上 , 放了一个 Memcache , 然而我们都不懂 , 他只解释了一句 , 这个 Memcache 是缓存 。
我的第一个困惑就是 , 所有的请求都要再次转发到另一台机器上 , 把数据取出来 , 单个请求可能不算什么 , 每天有几十万次请求 , 这中间的损耗不大么 , 为什么不把 Memcache 放到本地机器上呢?
他没解释 , 只告诉我说 , 不大 , Memcache 就是要放在另一台机器 。
在当时 , 我不清楚内网和外网的差别 , 也不清楚访问 Memcache 的请求倒底是需要多少 MS , 更不理解 , 把 Memcache 放在和业务层一台机器 , 或者是分开放的差别倒底是什么 。
但这个问题一直困惑着我 , 简单来说 , 这其实算是一点点架构师要做的事情的萌芽 , 一个系统中 , 如果拆解出来了很多模块 , 倒底应该部署在哪些机器上?架构师会解决这些问题 。
后来 , 到了搜狐之后 , 我突然间发现了我之前学到的东西 , 在搜狐的技术大神面前 , 直接被轰成渣 。
负载均衡是什么?热备又是什么?穿透 DB 是什么意思?怎么我取数据库里取一个值 , 数据库里没有 , 这种空数据的请求会把 DB 打垮?我还要把这些为 Null 的请求单独缓存起来?本地缓存做为一级缓存 , Memcache 做二级缓存?
“对缓存来说 , 最关键的设计就在于失效策略是什么 。 ”大神镇定的看着我 。 我很惶恐 , 感觉能把失效策略设计出来 , 很不容易 。
不同的应用场景 , 对于缓存的要求不一样 , 对实时性的要求也不一样 。 榜单这种一天更新一次的 , 每天晚上定时生成一次就好了 。
后台更新 , 但是要注意 , 一定要直接生成 , 直接切换 , 不能让前端用户访问的时候 , 再去生成 。


推荐阅读