线上一个c++开发的程序因为空指针异常,崩溃了。
而这个空指针异常是由于连接redis不稳定导致的,
actor模型就是为了对付这种情况的,actor模型的想法就是let it fail.
一个actor挂了之后,它的supervisor就发现,并且重启它。
在今天线上程序的崩溃原因下(连接不问题),这种重启是能解决这个问题的,至少使得对外的服务不至于中断。
其实用土一点的方式,也用c++写monitor做heartbeat检测,如果发现服务挂了,重启它。这样的做法也是可以的,但也要考虑一些事情,比如应用程序的状态怎么恢复。
事实上用消息队列+线程池就可以达到和actor模型类似的效果,或者说和go的CSP类似的效果。