天外流星

(邵雍-心安吟) 心安身自安,身安室自宽。心与身俱安,何事能相干。谁谓一身小,其安若泰山。谁谓一室小,宽如天地间。

re: 挖坑,有空填坑[未登录] Arthur 2016-05-10 20:47
嗯,坑挖好了就可以把自己埋了...
记得挖深点哦
1. 异步的做法在error handling那边会比较疼的,

同步的做法出错了处理下就好了,Go语言的goroutine层的阻塞也不会让底层阻塞。但是到了异步,Actor把消息丢给另一个Actor去执行,后面可能出错,而错误信息的反馈就比较麻烦了。
如果你要等结果出来,就又回到了同步时代。
如果你不等执行结果,继续往下走,那出错了能回滚么?

2. socket处理完全封装, 只通过channel

虽然看上去很美,性能上还是有缺陷的。
每个连接会开两个goroutine,中间还有channel数据传递引入的开销。
相比于epoll加回调,多执行了很多东西。goroutine is cheap,but not free

3. 逻辑复杂以后,数据的归属难以处理

Actor必然涉及到大量的消息交换。而为了效率这个肯定不是深拷贝数据的。既然还有内存共享,后面也不是一个很舒心的事情。模型出发点是不要处理低层的锁相关,但还是不得不面临这些问题。

4. 一些带执行顺序的逻辑以及死锁问题

有些会有启动顺序或者服务依赖之类,这是用Actor模型做的时候很烦的东西。另外一个是有这种情况时,特别要注意成环死锁。

....先说这些吧。同楼主一样思考过这些东西,也踩过一些坑....
都在探索,多交流。
时间久了东西都会忘,写点东西好对自己说那些个无聊的夜晚没有全花在无聊的事情上