目标系统在我们的需求场景下是否有成功案例
是否足够易用
性能和QPS是否能满足需求
是否可以提供SLA保证
系统中坚决不能容许失败的运维操作我们都应该有重试机制和报警。
线上事故在处理前我们应该保留现场(log,jstack,jmap,监控截图等)
一个易维护系统的log必须是充足的,合理的,有意义的,人可读的;其中所有线程都应该有极具标志性的线程名。
稳定压倒一切,我们无法保证生产环境的稳定,我们就没法玩了。一个高可靠的系统源自可靠的系统设计,优秀的代码实现,充分的测试,可靠的运维,任何一个环节出现问题,都有可能导致事故的产生。
我们必须从事故处理,日常运维,日常客服这类工作中解脱出来,才会有更多精力满足我们用户更多的需求,才有可能打造一个高效,稳定,易用的平台。能解脱出来的前提是我们的系统是高可靠的,运维是自动化和高效的,我们的用户接入文档,使用文档,FAQ文档等是十分完善的,用户的对接和沟通过程应该是高度流程化和规范化的。
分布式系统必须考虑容错和局部失败;必须认为网络是不可靠的,物理时钟是不可靠的;有并发读写的场景就必须考虑分布式一致性问题。
THE END