8.1 程序员的职业素养:靠谱

素养
解决问题能力
团队协作能力
自我驱动能力

8.2 解决问题能力

何为好的解决问题能力

  • 快速定位
  • 深入分析
  • 取舍解决

线.上发生了集群崩溃问题你会如何解决?

快速定位

  • 依据报警快速粗筛: 接口耗时,数据库耗时,网络耗时,JVM OOM?
  • 快速止血:熔断降级,限流,重启?
  • 验证尝试:是否恢复

集联问题最难解决:系统边界划分,容错设计
深入分析

  • 具体原因是什么:数据量过大,慢sq|, 发布bug, 被刷了?
  • 触发条件:线_上运行的好好的突然出问题一定是有触发条件
  • 总结原因:分析定位总结原因

取舍解决
用什么方案解决什么问题,还会不会引入别的问题,后续如何改进

举例

  • 问题:线上系统突然崩溃,用户间歇性无法登录交易
  • 快速定位

排查无法交易的接口监控报错
获取token异常
错误日志和监控显示redis client无法获取链接
redis cluster server单机故障,CPU打满, 关注到有大量key写入
排查写入接口发现登录请求巨大
重启redis cluster server,客户端重连
故障间歇性恢复

  • 深入分析

被恶意登录刷token,刷交易量
异常流量处理,网络层封杀对应客户端IP
故障完全恢复

  • 取舍解决

系统需要具备可以防刷的能力
token下发能力限制,对IP封杀(可能会引入误伤),验证码机制(影响正常用户体验)

8.3 团队协作能力

何为好的团队协作能力

  • 协作模式
  • 冲突解决
  • 主导项目

协作模式

  • 润滑剂模式:正面向上,互帮互助
  • 权责模式:明确边界,大公无私型模式
  • 混合模式:明确边界,正面向上

冲突解决

  • 遇到冲突积极解决,明确职责范畴,互相体谅,共同改进进步

主导项目

  • 明确目标
  • 职责分工
  • 过程管理
  • 结果导向
  • 复盘改进

8.4 自我驱动能力

主动学习

  • 最近主动学了什么,有什么收获,分享一下?

积极承担

  • 模糊边界地带积极承担责任,拿到结果

自我迭代

  • 复盘了吗