作者| Mr.K
来源| 技术领导力
架构师不仅拿钱多,还受到程序员的崇拜、妹子的仰慕。
他们走路带风、出场自带BGM,吹啊吹,我的骄傲放纵。唯一的缺点,就是费头发。
架构师虽好,却不是人人都能当的,除了聪明绝顶,还要有扎实的技术功底,经过多年的努力,我做到了一点,我已经绝顶了。
一名架构师,必须身经百战,经历过无数重大宕机事故。因为神枪手都是子弹喂出来的,身上的每一块肥肉都是你亲口吃出来的,无他,唯手熟尔。
原文作者Mr.K作为技术Leader中最懂架构的骑手,不仅送得一手好外卖,还搞宕过不少大型系统。下面结合他自己的经历谈一谈:如何搭建一个拖垮公司的技术架构?
一、系统主链路尽可能单点
单点系统,就像苏伊士运河一样,一旦航道出故障,整个运输系统都瘫痪,非常酸爽。
单点就像单身,开始的时候滋味不好受,但是不用担心,因为后面你就习惯了。
二、程序中多用循环
无限死循环,是老K最爱用的编程技巧之一,当你看到CPU利用率百分百的时候,你就知道应该甩锅给运维了。
这年头,没点特长技能还真不行。比如我,玩得一手好乐器----退堂鼓,打得特好。
三、系统间增加依赖
在系统里增加内部依赖、外部依赖、第三方依赖。总之,能依赖的,决不自己动手写。
老K有今天的成就,主要是因为我的动手能力强,我这辈子只有两件事不会:这也不会,那也不会。
四、不做服务补偿
很多东西,错过就是错过,没法补偿,这就是人生。
作为架构师,要有哲学高度。
所以说小伙子,你只看到了第二层,而你把我只想成了第一层,实际上我是第五层,你知道我讲的是什么意思吗?
五、不做幂等设计
凭啥后端接口要做幂等性设计?前端提交的时候不做判断吗?全都丢给后端开发做?
大家都是打工人,人要脸,树要皮,电线杆子要水泥。
六、不设置超时
连接超时、读超时,有多大设置多大,不管内部调用还是外部调用,都设置成60分钟。
只要努力搞,没有时间搞不砸的事情。做不成时间的朋友,就做时间的炮友。
七、不控制流量
让流量来得猛烈一些吧,千万别限流,什么漏桶算法、令牌桶算法,那都不如啤酒桶算法----喝完就睡,爱谁谁。
还控制啥流量啊?你连体重都控制不了,趁早放弃吧。你看看八戒,走了十万八千里也没见瘦下来,而且,他还吃素。
八、不做监控预警
大家都是职场成年人,做好分内事,别多管闲事。
工作几年以后,我明白一个道理:熟练的运用“关我屁事”和“关你屁事”,可以省下人生80%的时间。
九、没有重试策略
服务调用失败,你还想重试?我可不是随便的接口。
人生不能重来,更不能乱来。
不信?你让医生,给你开点后悔药,再来杯忘情水,医生立马送你去精神病院。
十、不做系统隔离
千万别做系统隔离,要挂一起挂。
什么是真正的兄弟?就是当兄弟需要女人的时候,挺身而出做他的女人。
面对困男,要排除万男,迎男而上。
十一、代码同步调用
做系统就要步调一致、讲究和谐,尽量同步调用,多写bug。
通常我写bug的时候,喜欢中午写,知道为什么吗?因为早晚会有报应。
十二、不做热数据缓存
RPC的意义是什么?就是被调用啊。疯狂地调用,是对一个服务最起码的尊重。
你知道为什么大项目上线都要选个好日子吗?这么说吧,你认为上线以后还会有好日子吗?
十三、不做系统分级
对系统要一视同仁,不要区分核心系统、非核心系统,你有考虑过系统的感受吗?
如果你被分门别类,你会开心吗?回想起来,小时候我们都很快乐,就是因为那个时候的我们,丑和穷得都还不是那么明显。
十四、没有服务降级
服务降级就low了,就算宕机也要一起扛。
人生没有白走的路,如果有,那就是微信运动出bug了。
十五、无灰度和回滚方案
上线全凭运气,没有回滚方案!就是那么自信。
我这个人,长这么大没学到别的本事,就掌握了一项特殊技能,白天不用安眠药也能安眠,晚上不用兴奋剂也能兴奋。
论熬夜发布,我从来没服过谁。
十六、程序多做远程调用
能远程调用的,绝不本地调用,都5G时代了,网络延迟那点事不算什么。
再说了,做人要有点耐心,女朋友约会迟到一小时,你敢发火吗?
不敢就对了,千万别惹女人,她们是流血一周都不会死的动物。
十七、不做熔断机制
炒股炒昏头了吧,做啥熔断机制?
你问过韭零后吗?基金都绿成啥样了,他喊熔断了吗?
作为韭菜,学费还是要交的,趁年轻的时候多交点,这样到老了再交你就习惯了。
十八、不做代码扫描
要有工匠精神,自己代码自己review,机器哪里懂得欣赏你的代码艺术?
我那骚气的注释、奇妙的函数、神乎其技的Copy/Paste。每次看代码,都被自己的才华吓到。
十九、不做线上压测
上线就完事了,后面的事情交给菩萨吧。
一分耕耘,一分收获。天下没有免费的午餐,所以我一般都睡到下午才起床。
结语
架构设计的骚操作还有很多,以上任意一项玩到极致,都足以把公司搞垮。
架构师是最接近圣人的职业,优秀的架构师每天都三省吾身:早饭吃什么,午饭吃什么,晚饭吃什么。
最后,愿上帝保佑每一位吃饱饭的架构师。