其实在工作和生活的过程中,自己总会有一些想法,有些可能不太成熟,有些已经初见成效,所以,在这里把自己的一些想法记录下来,希望慢慢的可以形成一系列的自己的方法论。

1.监控,日志

   哪些东西需要监控呢?a. 外部依赖,内部服务的入参,出参,耗时,失败量,调用量

                                 b.系统的一些监控,比如线程池,gc,内存,网络等等

                                 c.业务指标。和具体业务系统相关,比如订单的成功失败率,数据的准确率等等(不止一次遇到过一些场景是系统本身无法判断数据到底是否正确,所以有了问题也不知道,直到客户来反馈。而在不同的场景下,不同的相关人员,不同的业务,大家提出了同一个方案,对数据进行统计意义上进行打监控,如果在统计意义上出现很大的波动,很有可能是出问题了)                                 

2.如何避免问题:

    做事情分为俩个阶段:把事情做对和做对的事情。如果我们做的事情本身就有问题,无论做的再好,都会有出问题的隐患。所在在做事之前,一定要新清楚,自己做的到底是不是对的事情。

    如何有效避免出问题呢?小心翼翼,想到所有的可能来避免出错吗?我觉得这是一种初学者的蛮干的体力活。

依靠更权威的人来帮助检查吗?(比如现在的qa测试,找人review代码等等)一切靠人的操作都可以认为是有风险的。但是找有经验的人帮忙检查可以降低一定的风险,这也是为什么现在大的互联网公司都会有code review和qa测试的流程的原因吧。

加强监测机制来快速发现吗?这是一种必不可少的滞后监测的方法。

通过十分有效的沟通方式来告诉别人不要这样做吗?(比如在使用的时候一定会见到,在监测到问题的时候发信息提醒,发现问题后直接阻塞对方继续下去等等不同程度的沟通)这其实是一个比较好的方式,现在比较多应用场景是a.面向协议编程   b.sonar检查   c.检查到不合法的入参直接失败 等等

最好的方式是,形成一种机制,使得一个人不管怎么做,都不会出错。其实这种思路在很多地方都有体现,java中为了避免线程安全,会把线程安全的代码封装起来,外部调用不管怎么调都不会出错。    

3.对java异常的思考