TOC

关于架构设计的一些想法

阅读了来自公众号PM圈子的一篇文章《如何搭建一个拖垮公司的技术架构?》,

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

反过来说的话,大概就是要注意以下方面:

  1. 杜绝单点
  2. 避免依赖
  3. 服务补偿
  4. 幂等设计
  5. 超时与重试
  6. 流量控制:限流、降级、限流,什么漏桶算法、令牌桶算法
  7. 服务的分级、降级、隔离
  8. 异步
  9. 热数据缓存
  10. 发布:灰度、回滚
  11. 尽量本地,避免远程调用
  12. 熔断
  13. 代码扫描与Review
  14. 线上压测