PingCAP CTO 黄东旭:如何做出让人爱不释手的基础软件( 四 )


说了这么多 , 总结几点:
1.时间也是重要资源 。
2.抓Sample也好 , 做Trace也好 , 选对周期很重要 。
3.周期越贴近业务的周期越有用 。
6、可观测性能救命的时刻:事后观测
我相信没有人会没事天天看着监控界面 , 其实仔细想想 , 当我们需要可观测性的时候 , 多数是已经出现了可感知的故障或者很明确的风险 。 此时的系统可能已经“病入膏肓” , 或者在火烧眉毛的时候还不知道啥原因导致 , 其中的根因或是之前某个时间的一些不太显然的异常变化 , 这时候发现之前除了正常的Metrics外并没有更多的信息 , 我们当然不会永远开着CPUProfiler , 通常Profiler都是手动触发 , 但是如果是在事后复盘原因的时候 , 能够有事发之前的CPUProfile记录 , 对于问题的解决和归因会有巨大的帮助 , 所以一个比较好的方案是:在一个相对短的时间间隔下(比如分钟级)自动的开启Profiler , 自动把诊断结果保存下来 , 就像定期做一个深度体检记录一样 , 老的记录定期删除就好了 , 万一出事 , 可以快速往前回溯 , 救命的效率会更高 。
另外相信我 , 做Profile其实也不会有什么明显的性能损耗(何况还是间歇性的) , 这个功能我们叫做:ContinuousProfiling , 这个功能很实用 , 也会很快和大家见面 。
根据我们的经验 , 结合上面一节 , 有了完善的Tracing系统 , 大部分的Debug过程在Tracing+Log就能找到问题的根因 。
7、最好的可观测性是能够指导用户:“我接下来该做什么?”
上文中提到了行动 , 我在观察老师傅处理问题的时候发现一个特别有意思的现象:有经验的开发者总是能够很快通过观测 , 决定自己接下来该做什么 , 不需要查阅资料什么或者等着别人指导 , 完全处于一个心流的状态(例如在TiDB里面看到数据在集群内部分布不均或者有热点 , 就知道去修改调度策略或者手工splitregion) , 但是新人在这一步总是会卡着 , 要么去Google要么去翻文档 , 内心OS:「我看到问题了 , 然后怎么办?」 , 如果这个时候 , 系统能够给一些接下来应该观测哪些指标 , 或者行动建议 , 会更加友好 , 目前能做到这一点的系统不多 , 如果能做到这一点 , 相信你的系统已经在可观测性上做得很棒了 。 把这个点放在可观测性的最后其实是想借着这个话题引出可交互性 。
8、可交互性
在聊基础软件的可交互性之前 , 我想先和大家回顾一下计算机的历史 , 在我看来计算机历史的一个侧写就是人机交互的进化史:从第一张图 , 看着一堆线我也不知道怎么操作 , 到现在我从来没看过iPhone的说明书就能够熟练使用 , 这个背后其实是多个学科的进步(包括不限于心理学、认知科学神经科学、哲学、计算机科学) 。
PingCAP CTO 黄东旭:如何做出让人爱不释手的基础软件
文章图片
PingCAP CTO 黄东旭:如何做出让人爱不释手的基础软件
文章图片
PingCAP CTO 黄东旭:如何做出让人爱不释手的基础软件
文章图片
PingCAP CTO 黄东旭:如何做出让人爱不释手的基础软件
文章图片
PingCAP CTO 黄东旭:如何做出让人爱不释手的基础软件
文章图片
PingCAP CTO 黄东旭:如何做出让人爱不释手的基础软件
文章图片
回到我们这个领域 , 基础软件这个领域因为离大众确实有点远 , 过去很多设计是由工程师完成的 , 我们这类人 , 普遍有点缺乏对人性的理解(nooffense) , 一个很典型的逻辑是:“我自己是人 , 所以我了解人 。 我的设计自己能理解 , 因为我是人 , 所以别的人也能理解 。 如果别人不会用 , 就去看看文档就好了(此时还有一个嫌弃脸)” 。