


-
安卓:折叠、挖孔、齐刘海
-
苹果:证书、上架、热更新
-
前端开发:IE 六、七、八、九、十
-
后端开发:并发、写库、做运维

-
有限的资源:例如当前一个很厉害的 88 核/710GB 的后台服务器,其实也就是宇宙第一强手机 HUAWEI P40Pro(8 核/8G)的十倍左右
-
海量的数据:就我们产品而言,随便挑一个数据库都已经有好几 T 的大小
-
高效地处理:后台处理一慢,用户体验就变的很糟糕,丝毫不敢懈怠
1 扩容能解决宕机的问题吗?
难题一:不是所有的资源都能简单的扩容


难题二:你永远不知道宕机和出轨哪一个先来



-
特殊工艺的奶茶:制作工艺非常复杂,做一杯要 5min,那这个营业员这 5 分钟暂时不能接客
-
水龙头流的很慢:每次接杯水都要好久,处理一个用户的时间自然要变得很长
-
还有一批混混:不知道被谁雇佣过来的,过来排队但又不买
2 为什后台服务会挂?
-
单点系统可能会挂或者处理能力有限,典型:数据库、Redis 缓存(10W qps)
-
第三方依赖可能会故障,包括核心依赖、非核心依赖
后台程序员怎么做能让服务能更稳一点?
法宝 1:拆
-
水平拆分 这种方式比较常见,可以认为是简单的水平扩容,简单来说就是一台不行,多跑一台扛着

-
功能性拆分 这种方案是根据功能模块的不同,进行拆分后台服务,不把鸡蛋放在一个篮子里。如果有一个服务故障,不影响其它服务的运行。

-
数据拆分 前面有提到,数据库经常会成为单点的瓶颈。一般在功能性拆分的同时,我们也会做数据的拆分,不让一份数据变得超级大。

法宝 2:寻找更强的单点

法宝 3:牺牲时效性

法宝 4:让单个请求处理更快
法宝 5:提前计算好,不要等用户来的时候再计算
3 终极大招:有损服务与降级

-
牺牲用户体验 用静态化数据代替「千人千面」的动态数据;放缓流量进入的速率,增加验证码机制;简单粗暴的,直接挂一个页面显示「XX 功能在 XX 时间内暂时关闭」
-
牺牲功能完整性 有一些功能是「防御性」的,如果愿意冒险“裸奔”一段时间也会带来可观的资源节约;临时关闭「风控」;取消部分「条件是否满足」的判断
-
牺牲时效性 将一些原本就是异步进行的操作,处理效率放缓,甚至暂缓一段时间。如,送积分、送券等等



往期推荐
创业花掉500万到底要多久?
为何更好的产品不一定成功?小鹏P7与特斯拉model 3 你选谁?
如何让后台开发小哥跪着评审需求?
学会这招,你也能成为产品总监
评论(0)