11.22日映客架构师讲座
  1. 不要把每一个单独的服务优化到极致,心中要有一个架构的演进方向,根据这个方向优化分散的点,如存储,mq,服务等,最终达到一个我们心中理想的架构。同时要融入到公司,理解业务,要有将产品带向好的方向的心态,不是完成上级的任务,产品的需求,常年下来没有进步
  2. 业务服务不要直连DB,应该抽取成基础服务,业务服务都是用基础服务拼接而成的,这样做利于基础服务的扩展
  3. 作为基础服务一定要考虑限流,服务的熔断和降级
  4. 要保证业务的关键路径高可用,其他服务挂了,不能影响它,例如淘宝,下单流程,确认收货流程一定是可用的,提高用户体验
  5. 服务的取舍,比如手机直播,100w用户在一个直播间,当前用户只关心自己送出的礼物,发出的评论有没有显示,这是我们一定要保证的
    同时,别的用户评论,一秒只显示几百条都是没问题的,丢弃其余的消息,做到流量削峰,保证良好的用户体验
  6. 分布式事务:预占型和给予型。 预占型可以记录日志,重新请求时看有没有日志来判断上一次是否执行成功了;给予型具有延时特性,比如手机转账,总是过几秒才转过来
  7. 分库分表:如何从主从切换到分库分表,先用mysql binlog同步到分库分表中,并进行比对,一直到没有差异为止,ABA问题在多次比对后出现的几率已经很低了,此时线上业务可以将读操作切换到分库分表,因为读是不会产生脏数据的
  8. 云服务的好处:按流量计费,比如某天有秒杀活动,用户量激增,如果是自己的机房,需要增加服务器,等过了这个时间后,流量又下来了,而云服务是按流量计费的,增加缩减机器都十分方便。云服务的不足之处是要和别的企业共享资源,因为稳定性不高,还会有资源限制,如带宽限制,mysql连接数限制
  9. 对恶意用户的思考,比如刷金币,刷粉丝,刷广告等等,是否有必要赶尽杀绝,如果涉黄涉政,必然是要屏蔽的,而例如微博,用户是否也有刷粉丝的实际需要
    如何防止恶意用户呢,可以用工具,例如内容识别,账号防刷等,但是有效期不长,建议用大数据进行行为特征分析
  10. 需求和开发:施行2周制,第一周产品和开发都是ready状态,产品准备好需求,开发人员开始开发,测试,直到第二周结束上线,同时从第一周开始并行地,开始准备下一轮新的需求,到第二周结束准备好下一轮新需求,以此往复
  11. 定期梳理自己的代码,线上服务正常运行很近,突然出现问题,说”我没动代码啊”,这样做是不对的,没动过并不代表没有隐患,可以每天上下班看一眼自己的业务指标监控(open-falcon)
  12. 线上出现问题的正确做法,立即采取一切手段修复故障,保障用户体验,及时止损,而不是在保护故障现场,排查问题。事后要对故障复盘,并且组内开会讨论,不要抱有职责,内疚的情绪,让组员都从这次问题中成长
  13. 语言和技术栈一定要统一,降低成本
  14. 抽取通用服务,如鉴权,不要每个服务都开发一套
Author: 紫夜
Link: https://greedypirate.github.io/2018/11/22/11.22日映客架构师讲座/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
支付宝打赏
微信打赏