继
http://blog.chinaunix.net/uid-26717867-id-3513542.html再说说我对actor model的认识。
个人认为,任何复杂的系统,要想进一步优化,都必须对业务有深刻的理解。
cs模式:
对于整个系统,最多的协议应该是Client-----Request----->Server, Server-----Response----->Client了。这个流程其实就是,[客户端]请求[服务端]说帮我服务一下,[服务端]根据这个[客户端]对应的[服务端数据]去处理,然后告诉[客户端]说我已经帮你处理好了。
宏观地讲:
[服务端]就是不断地根据[服务端数据]去计算。很显然,[服务端数据]变得独立起来,这个时候就有人假设,既然[服务端数据]是独立的,为什么我不能让每个
access[服务端数据]的
行为排队起来,这样就不需要加锁来保护数据结构了,而这个排队是用用户态的lock free实现的队列,这就解决了使用critical section/spin_lock造成cpu busy loop的问题。这种假设成立的条件是:每个access的行为都是Client-----Request----->Server触发的。而这个行为触发的频率相比服务成千上万的服务端频率是比较低的。所有就有了单一对象串化处理,成千上万对象并发处理的actor model。
阅读(431) | 评论(0) | 转发(0) |