示例代码请访问:github.com/wenjianzhan…
“A priori prediction of failure modes is not possible.”
在程序设计的时间,不能够预知所有的错误;
健康检查
- 注意僵尸进程
- 池化资源耗尽
- 死锁
需要做有效的健康检查,来预防僵尸进程,在之前也提到过 Let it Crash!
defer func() {
if err := recover(); err != nil {
log.Error("recovered panic",err)
}
}
构建可恢复的系统
- 拒绝单体系统
- 面向错误和恢复的设计
- 在依赖服务不可用时,可以继续存活
- 快速启动
- 无状态
与客户端协商
服务器:“我太忙了,请慢点发送数据” Client:“好,我一分钟后再发送”
示例代码请访问:github.com/wenjianzhan…