
架构师,一个听起来就闪着金光的职位。他们不仅拿着令人羡慕的薪资,还常常是程序员仰望的对象。这个职业有个公认的特点——费头发。想要成为一名优秀的架构师,除了需要“聪明绝顶”,扎实的技术功底和丰富的实战经验更是必不可少。
神枪手是靠子弹喂出来的,优秀的架构师也是在一个个“坑”里摸爬滚打成长起来的。今天,我就结合自己多年(搞砸事情)的经验,跟大家“反向”聊一聊,如何搭建一个足以拖垮公司的技术架构。这十九个“秘诀”,条条都是肺腑之言。
一、系统主链路,务必单点化
单点系统,就像大运河上唯一的船闸。一旦它出了故障,整条航道立刻瘫痪,场面绝对“壮观”。开始可能觉得别扭,但请相信,习惯就好。把核心流量、核心数据、核心逻辑全部押注在一个节点上,是通往“不稳定”的捷径。
二、循环,多用,往死里用
无限死循环是我个人非常推崇的编程技巧之一。当你看到服务器监控面板上 CPU 利用率稳居 100%,那种成就感,难以言表。这时候,你就可以气定神闲地把锅甩给运维:“是你们机器性能太差”。掌握一门特长很重要,比如我,退堂鼓就打得特别响。
三、系统依赖,能加则加
在设计系统时,要勇于增加依赖。内部依赖、外部依赖、第三方云服务依赖……只要能依赖的,坚决不自己动手实现。我今天的“成就”,很大程度上得益于我的“动手能力强”——我这辈子就两件事不会:这也不会,那也不会。
四、服务补偿?不存在的
人生有很多东西,错过了就是错过了,没法补偿。做架构,要有哲学高度。所以,服务调用失败了就失败了吧,补偿机制纯属多余。小伙子,你以为我在第一层,其实我在第五层,你悟了吗?
五、幂等设计,那是前端的活儿
凭什么后端接口非得做幂等性设计?用户重复提交,难道不是前端应该拦截的吗?什么问题都丢给后端,这不公平。大家都是打工人,人要脸,树要皮,电线杆子还得要水泥呢。
六、超时设置?越大越“稳健”
无论是内部微服务调用,还是请求外部 API,连接超时和读写超时一定要往大了设。建议统一设置成 60 分钟,显得我们系统非常有“耐心”。只要功夫深,铁杵磨成针;只要时间够,没有拖不垮的连接池。
七、流量控制,是对用户的不尊重
让流量来得更猛烈些吧!什么漏桶算法、令牌桶算法,都不如我的“啤酒桶算法”——喝到位了倒头就睡,爱谁谁。你还想控制流量?先看看自己的体重控制住了吗?你看八戒,走了十万八千里,吃素也没见瘦下来。
八、监控预警?多管闲事
大家都是成熟的职场人了,做好自己分内的事就好,不要多管闲事。工作多年我悟出一个道理:熟练运用“关我屁事”和“关你屁事”,能为你的人生节省 80% 的时间。所以,监控告警这种“闲事”,千万别做。
九、重试策略,人生不能重来
服务调用失败一次还不够吗?还想重试?我的接口可是有原则的。人生不能重来,更不能乱来。不信你去医院,让医生给你开点后悔药,再来杯忘情水试试?医生会直接给你指条明路——精神科怎么走。
十、系统隔离?要挂一起挂
千万别做系统隔离,比如什么熔断、降级、舱壁模式。核心系统和非核心系统,就要同生共死,有福同享,有难同当。这才是真正的“系统性兄弟情谊”。
十一、调用方式,同步才是王道
系统设计要讲究步调一致,和谐统一。因此,尽量使用同步调用,尤其是在调用链冗长、依赖服务响应慢的场景下。这样,一个点的延迟就能轻松拖垮整个调用链路。我通常喜欢中午写这种代码,因为早晚会出问题。
RPC 服务的意义是什么?不就是被疯狂调用吗?频繁地去数据库里查询同一份数据,是对一个服务最基本的锤炼和尊重。你知道为什么大项目上线都要挑黄道吉日吗?这么说吧,你认为上线之后,还会有什么好日子吗?
十三、系统分级,这是歧视
对所有的系统要一视同仁,不要搞什么核心、非核心的区分。你有考虑过那些“非核心”系统的感受吗?如果你被人为地分成三六九等,你会开心吗?小时候我们都很快乐,就是因为那时候,我们丑和穷得都还不是那么明显。
十四、服务降级,太没骨气
服务降级?听起来就很 low。就算要宕机,也要全员硬扛,站着死。人生没有白走的路,如果有,那一定是你的计步器出 bug 了。
十五、灰度与回滚?全凭运气
上线就要有破釜沉舟的勇气,要什么灰度发布和回滚方案?就是干,自信即巅峰。我这人没什么大本事,就掌握了一项特殊技能:白天不用安眠药也能安眠,晚上不用兴奋剂也能兴奋。论通宵发布和祈祷,我没服过谁。
十六、远程调用,彰显技术实力
能远程调用的,绝不本地调用。都 5G 时代了,还在乎那点网络延迟吗?做人要有点耐心。你女朋友约会迟到一小时,你敢发火吗?不敢就对了。记住,千万别惹女人,她们是连续流血七天都不会死的“神奇生物”。
十七、熔断机制?股市后遗症
做啥熔断机制?炒股炒出幻觉了吧。你去问问那些“韭零后”,基金都绿成“大草原”了,他们喊熔断了吗?作为技术的“韭菜”,学费该交还是得交。趁年轻多交一点,等老了就习惯了。
十八、代码扫描,侮辱工匠精神
代码检查要有工匠精神,自己动手,丰衣足食。机器懂什么艺术?它能欣赏我那风骚的注释、奇妙的函数命名和出神入化的“复制粘贴”大法吗?每次 Review 自己的代码,我都差点被自己的才华吓晕过去。
十九、线上压测,不如求神拜佛
上线就是结束,后面的事,交给菩萨和运气吧。一分耕耘,一分收获。天下没有免费的午餐,所以我一般都睡到下午,直接吃晚饭。
结语
架构设计的“骚操作”远不止这些,以上任意一条,只要你玩到极致,都足以给公司带来“惊喜”。架构师,大概是最接近“圣人”的职业——因为优秀的架构师,每天都在思考三个终极哲学问题:早饭吃什么?午饭吃什么?晚饭吃什么?
最后,愿上帝保佑每一位还能吃上饭的架构师。
技术路漫漫,坑洼总相伴。以上内容纯属“反面教材”式的技术杂谈,博君一笑之余,也希望大家能真正思考其背后对应的正确架构设计原则。更多关于系统设计、高可用实践的深度讨论,欢迎来到 云栈社区 与广大开发者一起交流切磋。