第10课:亿级日活跃业务核心技术揭秘

亿级日活跃业务核心技术揭秘 

亿级系统最重要的是高可用性
如何定义可用性
P=(总用户价值-因事故损失的用户价值)/总用户价值*100%
可用性一般都是要求四个九,四个九转化为时间就要求一年内的故障时间不能超过52分钟。有人会问为什么是四个九而不是五个九?为什么不越高越好?直接原因是成本
架构师的基本能力其实是估算的能力,架构师要有这种意识,你怎么把业务运营指标抽象化成每个技术细节

面向海量用户的服务设计:研发层
1.代码级优化
如果是经验非常丰富或者不断追求进步的程序员,就会不断的问自己写代码有没有瓶颈或者优化空间
2.系统设计级优化
异步处理  比如客户端方面,我们可以慢处理,后台只要发送给服务器端,服务器端告诉前端收藏成功,可能还没有成功,服务器端的处理程序会写入消息队列里面,由另外的进程再进一步处理,而web发送过来的请求就会采用实时处理的方式
3.柔性服务思维
从系统层面来说,你不只是做系统,而是在做服务
引入类似于股票EMI的算法,就是请求预期
当股票价格很低的时候,你的预期空间很大,股价很高的时候,你的预期很低。比如CGI访问服务器,如果访问都在10毫秒以内,那么timeout超时时间可以设置得很长。如果返回时间已经到100毫秒、1秒,甚至更长时间,这时候就是timeout超时要设置尽可能短,这是防雪崩的措施之一,对后端能起到有效的保护
4.负载均衡

面向海量用户的服务设计:运维层
如果系统缺少监控就不是好的系统,你对这个系统的每个环节、每个模块都要一切尽在掌握,想做到这一点很重要的是你整个模块的系统监控
每台设备当前的CPU状况、网络的出口、上行下行流量,每个都会有很详细的配置,这也是辅助你做到一致性的服务。还有安全性,比如游戏币购买、会员开通关闭等,可能平时的消息发送要防止被别人窜入或者消息外泄,要注意很多问题,我认为系统监控是整个后台开发非常基础的方面

面向海量用户的服务设计:产品层
人性化最重要
系统真的要挂掉也不要闭上眼睛,给到用户足够放心友好的提示,这个是会在你整个技术故障的时候对用户是最大的心理安慰

后台故障解决思路
1.监控非常重要,系统化监控、自动化监控,所谓自动化监控是除用户外,还有很多测试机,它自己也会定时发起测试,模拟用户的请求,然后判断返回值成功或失败,从而判断服务是否正常。另外必须重视你身边每位同事的反馈,包括每个用户的反馈
2.其实很多时候分析问题,排除法很重要,最终总能找到核心的关键问题